Loading plugins/org.etsi.mts.tdl.model/src/org/etsi/mts/tdl/Validator.java +59 −32 Original line number Diff line number Diff line Loading @@ -22,23 +22,52 @@ import org.eclipse.jdt.annotation.Nullable; import org.eclipse.ocl.pivot.internal.utilities.EnvironmentFactoryInternal; import org.eclipse.ocl.pivot.resource.CSResource; 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.ocl.xtext.completeocl.validation.CompleteOCLValidator; import org.eclipse.xtext.validation.EValidatorRegistrar; import org.osgi.framework.BundleContext; public class Validator { static CompleteOCLEObjectValidator validator; public static void registerValidator(String path, EPackage ePakcage, BundleContext context) { public static void removeValidator(EPackage ePackage, ResourceSet rs){ ValidationRegistryAdapter.getAdapter(rs).remove(ePackage); } public static void removeValidator(EPackage ePackage){ EValidator.Registry.INSTANCE.remove(ePackage); // validator = null; } public static void registerValidator(String path, EPackage ePakcage, BundleContext context) { Path oclPath = new Path(path); URL oclURL = FileLocator.find(context.getBundle(), oclPath); URI oclURI; try { oclURI = URI.createURI(oclURL.toURI().toString()); CompleteOCLEObjectValidator validator = new CompleteOCLEObjectValidator(ePakcage, oclURI) { CompleteOCLEObjectValidator validator = createValidator(ePakcage, oclURI); EValidator.Registry.INSTANCE.put(tdlPackage.eINSTANCE, validator); } catch (URISyntaxException e) { throw new RuntimeException(e); } } private static CompleteOCLEObjectValidator createValidator(EPackage ePakcage, URI oclURI) { if (validator != null) { return validator; } validator = new CompleteOCLEObjectValidator(ePakcage, oclURI) { private boolean initialised = false; @Override public boolean initialize(@NonNull EnvironmentFactoryInternal environmentFactory) { boolean success = super.initialize(environmentFactory); if (initialised) return success; if (success) { // This should happen in super.initialize(..) but under certain conditions it returns early ResourceSet resourceSet = environmentFactory.getResourceSet(); Loading @@ -51,6 +80,7 @@ public class Validator { return false; } } initialised = true; return success; } @Override Loading @@ -66,10 +96,7 @@ public class Validator { return super.validatePivot(eClassifier, object, diagnostics, validationContext); } }; EValidator.Registry.INSTANCE.put(tdlPackage.eINSTANCE, validator); } catch (URISyntaxException e) { throw new RuntimeException(e); } return validator; } } plugins/org.etsi.mts.tdl.rt.ui/src/org/etsi/mts/tdl/tools/rt/ui/ToggleHandler.java +2 −1 Original line number Diff line number Diff line Loading @@ -51,7 +51,8 @@ public class ToggleHandler implements IStartup { } static void disablePlugin() { EValidator.Registry.INSTANCE.remove(tdlPackage.eINSTANCE); // EValidator.Registry.INSTANCE.remove(tdlPackage.eINSTANCE); Validator.removeValidator(tdlPackage.eINSTANCE); } } Loading
plugins/org.etsi.mts.tdl.model/src/org/etsi/mts/tdl/Validator.java +59 −32 Original line number Diff line number Diff line Loading @@ -22,23 +22,52 @@ import org.eclipse.jdt.annotation.Nullable; import org.eclipse.ocl.pivot.internal.utilities.EnvironmentFactoryInternal; import org.eclipse.ocl.pivot.resource.CSResource; 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.ocl.xtext.completeocl.validation.CompleteOCLValidator; import org.eclipse.xtext.validation.EValidatorRegistrar; import org.osgi.framework.BundleContext; public class Validator { static CompleteOCLEObjectValidator validator; public static void registerValidator(String path, EPackage ePakcage, BundleContext context) { public static void removeValidator(EPackage ePackage, ResourceSet rs){ ValidationRegistryAdapter.getAdapter(rs).remove(ePackage); } public static void removeValidator(EPackage ePackage){ EValidator.Registry.INSTANCE.remove(ePackage); // validator = null; } public static void registerValidator(String path, EPackage ePakcage, BundleContext context) { Path oclPath = new Path(path); URL oclURL = FileLocator.find(context.getBundle(), oclPath); URI oclURI; try { oclURI = URI.createURI(oclURL.toURI().toString()); CompleteOCLEObjectValidator validator = new CompleteOCLEObjectValidator(ePakcage, oclURI) { CompleteOCLEObjectValidator validator = createValidator(ePakcage, oclURI); EValidator.Registry.INSTANCE.put(tdlPackage.eINSTANCE, validator); } catch (URISyntaxException e) { throw new RuntimeException(e); } } private static CompleteOCLEObjectValidator createValidator(EPackage ePakcage, URI oclURI) { if (validator != null) { return validator; } validator = new CompleteOCLEObjectValidator(ePakcage, oclURI) { private boolean initialised = false; @Override public boolean initialize(@NonNull EnvironmentFactoryInternal environmentFactory) { boolean success = super.initialize(environmentFactory); if (initialised) return success; if (success) { // This should happen in super.initialize(..) but under certain conditions it returns early ResourceSet resourceSet = environmentFactory.getResourceSet(); Loading @@ -51,6 +80,7 @@ public class Validator { return false; } } initialised = true; return success; } @Override Loading @@ -66,10 +96,7 @@ public class Validator { return super.validatePivot(eClassifier, object, diagnostics, validationContext); } }; EValidator.Registry.INSTANCE.put(tdlPackage.eINSTANCE, validator); } catch (URISyntaxException e) { throw new RuntimeException(e); } return validator; } }
plugins/org.etsi.mts.tdl.rt.ui/src/org/etsi/mts/tdl/tools/rt/ui/ToggleHandler.java +2 −1 Original line number Diff line number Diff line Loading @@ -51,7 +51,8 @@ public class ToggleHandler implements IStartup { } static void disablePlugin() { EValidator.Registry.INSTANCE.remove(tdlPackage.eINSTANCE); // EValidator.Registry.INSTANCE.remove(tdlPackage.eINSTANCE); Validator.removeValidator(tdlPackage.eINSTANCE); } }