Selaa lähdekoodia

Use the IDefaultResourceStrategy for IEObjectDescription creation
to ensure that it contains the right user data for validation.

Andreas Muelder 8 vuotta sitten
vanhempi
commit
d254419432

+ 0 - 1
plugins/org.yakindu.base.types/src/org/yakindu/base/types/resource/TypedResourceDescriptionStrategy.java

@@ -8,7 +8,6 @@ import org.eclipse.xtext.resource.EObjectDescription;
 import org.eclipse.xtext.resource.IEObjectDescription;
 import org.eclipse.xtext.resource.impl.DefaultResourceDescriptionStrategy;
 import org.eclipse.xtext.util.IAcceptor;
-import org.yakindu.base.types.ComplexType;
 import org.yakindu.base.types.EnumerationType;
 import org.yakindu.base.types.Type;
 import org.yakindu.base.types.TypeAlias;

+ 0 - 2
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/resource/SCTResourceDescriptionStrategy.java

@@ -14,9 +14,7 @@ import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.xtext.resource.IDefaultResourceDescriptionStrategy;
 import org.eclipse.xtext.resource.IEObjectDescription;
-import org.eclipse.xtext.resource.impl.DefaultResourceDescriptionStrategy;
 import org.eclipse.xtext.util.IAcceptor;
-import org.yakindu.base.types.Operation;
 import org.yakindu.base.types.resource.TypedResourceDescriptionStrategy;
 import org.yakindu.sct.model.sgraph.Statechart;
 

+ 17 - 3
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/validation/STextJavaValidator.java

@@ -33,11 +33,12 @@ import org.eclipse.xtext.naming.QualifiedName;
 import org.eclipse.xtext.nodemodel.ICompositeNode;
 import org.eclipse.xtext.nodemodel.INode;
 import org.eclipse.xtext.nodemodel.util.NodeModelUtils;
-import org.eclipse.xtext.resource.EObjectDescription;
+import org.eclipse.xtext.resource.IDefaultResourceDescriptionStrategy;
 import org.eclipse.xtext.resource.IEObjectDescription;
 import org.eclipse.xtext.resource.IResourceDescriptions;
 import org.eclipse.xtext.resource.XtextResource;
 import org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions;
+import org.eclipse.xtext.util.IAcceptor;
 import org.eclipse.xtext.validation.Check;
 import org.eclipse.xtext.validation.CheckType;
 import org.eclipse.xtext.validation.ComposedChecks;
@@ -133,15 +134,17 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 	private ContextPredicateProvider contextPredicateProvider;
 	@Inject
 	private IResourceDescriptions index;
+	@Inject
+	private IDefaultResourceDescriptionStrategy strategy;
 
 	@Check(CheckType.FAST)
 	public void checkContextElement(final ElementReferenceExpression expression) {
 		Iterable<IEObjectDescription> description = null;
 		QualifiedName fqn = nameProvider.getFullyQualifiedName(expression.getReference());
 		if (index instanceof ResourceSetBasedResourceDescriptions) {
-			description = Lists.newArrayList(EObjectDescription.create(fqn, expression.getReference()));
-		} else {
 			//This is the fallback for headless execution
+			description = createEObjectDescription(expression);
+		} else {
 			description = index.getExportedObjects(expression.getReference().eClass(), fqn, false);
 		}
 		final Predicate<IEObjectDescription> predicate = contextPredicateProvider.calculateFilterPredicate(expression,
@@ -154,6 +157,17 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 		}
 	}
 
+	protected List<IEObjectDescription> createEObjectDescription(final ElementReferenceExpression expression) {
+		final List<IEObjectDescription> result = Lists.newArrayList();
+		strategy.createEObjectDescriptions(expression.getReference(),new IAcceptor<IEObjectDescription>() {
+			@Override
+			public void accept(IEObjectDescription t) {
+				result.add(t);
+			}
+		} );
+		return result;
+	}
+
 	@Check(CheckType.FAST)
 	public void checkExpression(VariableDefinition expression) {
 		if (expression.getType() == null || expression.getType().eIsProxy())