Commit b6a18ef8 authored by Philip Makedonski's avatar Philip Makedonski
Browse files

* validator refinements, #162, #157

parent cd6e73fe
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -30,10 +30,21 @@ import org.eclipse.ocl.pivot.utilities.PivotUtil;
import org.eclipse.ocl.pivot.validation.ValidationRegistryAdapter;
import org.eclipse.ocl.xtext.completeocl.validation.CompleteOCLEObjectValidator;
import org.eclipse.xtext.validation.EValidatorRegistrar;
import org.etsi.mts.tdl.extendedconfigurations.ExtendedConfigurationsPackage;
import org.etsi.mts.tdl.structuredobjectives.StructuredObjectivesPackage;
import org.osgi.framework.BundleContext;

public class Validator {
	static CompleteOCLEObjectValidator validator;
	public static void reload() {
		Validator.removeValidator(tdlPackage.eINSTANCE);
		Validator.removeValidator(StructuredObjectivesPackage.eINSTANCE);
		Validator.removeValidator(ExtendedConfigurationsPackage.eINSTANCE);
		validator = null;
		Validator.registerValidator("model/tdl-constraints.ocl", tdlPackage.eINSTANCE);
		Validator.registerValidator("model/tdl-structured-constraints.ocl", StructuredObjectivesPackage.eINSTANCE);
		Validator.registerValidator("model/tdl-configurations-constraints.ocl", ExtendedConfigurationsPackage.eINSTANCE);
	}
	
	public static void registerValidator(String path, EValidatorRegistrar registrar, BundleContext context) {
		tdlPackage ePackage = tdlPackage.eINSTANCE;
@@ -95,7 +106,7 @@ public class Validator {
	
	public static CompleteOCLEObjectValidator createValidator(EPackage ePakcage, URI oclURI) {
		if (validator != null) {
			return validator;
//			return validator; 
		}
		validator = new CompleteOCLEObjectValidator(ePakcage, oclURI) {
			private boolean initialised = false;
@@ -134,8 +145,11 @@ public class Validator {
//				boolean validation = super.validatePivot(eClassifier, object, diagnostics, validationContext);
				//copied from from super, init only once and retain environment factory
				if (!initialised) {
					EObject eObject = (EObject) object;
					ValidationRegistryAdapter adapter = ValidationRegistryAdapter.getAdapter(eObject.eResource().getResourceSet());
					environmentFactory = PivotUtilInternal.getEnvironmentFactory(object);
					initialize(environmentFactory);
					adapter.put(ePackage, this);
				}
				ResourceSet resourceSet = getResourceSet(eClassifier, object, diagnostics);
				if (resourceSet != null) {