Explorar o código

Introduced domainId Injection to filter validators that are not
responsible for the given domain

Andreas Muelder %!s(int64=9) %!d(string=hai) anos
pai
achega
8379b31acf

+ 2 - 2
plugins/org.yakindu.base.expressions/src/org/yakindu/base/expressions/validation/ExpressionsJavaValidator.java

@@ -57,7 +57,6 @@ public class ExpressionsJavaValidator extends org.yakindu.base.expressions.valid
 
 	@Inject
 	private GenericsPrettyPrinter printer;
-
 	@Inject
 	private ITypeSystemInferrer typeInferrer;
 	@Inject
@@ -170,4 +169,5 @@ public class ExpressionsJavaValidator extends org.yakindu.base.expressions.valid
 			}
 		}
 	}
-}
+
+}

+ 16 - 0
plugins/org.yakindu.sct.domain.generic/src/org/yakindu/sct/domain/generic/modules/GenericTypeSystemModule.java

@@ -14,8 +14,12 @@ import org.eclipse.xtext.service.AbstractGenericModule;
 import org.yakindu.base.types.inferrer.ITypeSystemInferrer;
 import org.yakindu.base.types.typesystem.GenericTypeSystem;
 import org.yakindu.base.types.typesystem.ITypeSystem;
+import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.model.stext.inferrer.STextTypeInferrer;
 
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+
 /**
  * 
  * Default Module used for type contribution and type inference. Override
@@ -26,6 +30,18 @@ import org.yakindu.sct.model.stext.inferrer.STextTypeInferrer;
  */
 public class GenericTypeSystemModule extends AbstractGenericModule {
 
+	public static final String DOMAIN_ID = "domainId";
+
+	@Override
+	public void configure(Binder binder) {
+		super.configure(binder);
+		binder.bind(String.class).annotatedWith(Names.named(DOMAIN_ID)).toInstance(getDomainID());
+	}
+
+	protected String getDomainID() {
+		return SGraphPackage.Literals.STATECHART__DOMAIN_ID.getDefaultValueLiteral();
+	}
+
 	public Class<? extends ITypeSystem> bindITypeSystem() {
 		return GenericTypeSystem.class;
 	}

+ 27 - 0
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/validation/STextJavaValidator.java

@@ -125,6 +125,9 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 	private IContainer.Manager containerManager;
 	@Inject
 	private ResourceDescriptionsProvider resourceDescriptionsProvider;
+	@Inject  (optional = true)
+	@Named("domainId")
+	private String domainID;
 
 	@Check
 	public void checkExpression(VariableDefinition expression) {
@@ -801,4 +804,28 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 			return provider.getElement().eResource();
 		}
 	}
+
+	@Override
+	protected boolean isResponsible(Map<Object, Object> context, EObject eObject) {
+		boolean isResponsible = super.isResponsible(context, eObject);
+		if (!isResponsible)
+			return false;
+		Statechart statechart = getStatechart(eObject);
+		if (domainID == null || !domainID.equals(statechart.getDomainID())) {
+			return false;
+		}
+		return true;
+	}
+
+	protected Statechart getStatechart(EObject context) {
+		final ContextElementAdapter provider = (ContextElementAdapter) EcoreUtil.getExistingAdapter(context.eResource(),
+				ContextElementAdapter.class);
+
+		if (provider == null) {
+			return EcoreUtil2.getContainerOfType(context, Statechart.class);
+		} else {
+			return (Statechart) EcoreUtil.getObjectByType(provider.getElement().eResource().getContents(),
+					SGraphPackage.Literals.STATECHART);
+		}
+	}
 }