Loading plugins/org.etsi.mts.tdl.tx/src/org/etsi/mts/tdl/validation/TDLtxValidator.java +47 −4 Original line number Diff line number Diff line Loading @@ -7,12 +7,17 @@ import java.net.URI; import java.net.URISyntaxException; import org.eclipse.core.runtime.Platform; import org.eclipse.emf.common.util.BasicDiagnostic; import org.eclipse.emf.common.util.DiagnosticChain; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EValidator; import org.eclipse.emf.ecore.util.EObjectValidator; import org.eclipse.epsilon.evl.emf.validation.CompositeEValidator; import org.eclipse.epsilon.evl.emf.validation.EvlValidator; import org.eclipse.ocl.pivot.internal.utilities.PivotDiagnostician.BasicDiagnosticWithRemove; import org.eclipse.xtext.validation.AbstractValidationDiagnostic; import org.eclipse.xtext.validation.Check; import org.etsi.mts.tdl.Element; import org.etsi.mts.tdl.TestConfiguration; import org.etsi.mts.tdl.tdlPackage; Loading Loading @@ -44,6 +49,7 @@ public class TDLtxValidator extends AbstractTDLtxValidator { // INVALID_NAME); // } // } private static EvlValidator evlValidator; public TDLtxValidator() { Loading @@ -70,13 +76,21 @@ public class TDLtxValidator extends AbstractTDLtxValidator { // Pass a model name if your script uses it // Pass a valid bundle ID as it used for reporting (if not in a plugin use your project name or similar) String modelName = ""; //This seems to be important! Otherwise strange hangs occur String modelName = "TDL"; //This seems to be important! Otherwise strange hangs occur -> TDL? String bundleId = "org.etsi.mts.tdl.constraints"; URI evlScriptURI = new URI("platform:/plugin/"+bundleId+"/constraints/tdl-generated-ETSI-ES-203-119-1-V1.5.1-fixed.evl"); EvlValidator evlValidator = new EvlValidator( //TODO: try out extension point integration //TODO: try out fixes -> can they be in a separate module? //TODO: add other constraints for TO/TC evlValidator = new EvlValidator( evlScriptURI, modelName , ePackage.getNsURI(), bundleId); evlValidator.setShowErrorDialog(false); // registerValidator(ePackage); initialised = true; } private static void registerValidator(EPackage ePackage) { EValidator existingValidator = EValidator.Registry.INSTANCE.getEValidator(ePackage); if (existingValidator instanceof CompositeEValidator) { ((CompositeEValidator) existingValidator).getDelegates().add(evlValidator); Loading @@ -89,11 +103,10 @@ public class TDLtxValidator extends AbstractTDLtxValidator { newValidator.getDelegates().add(evlValidator); EValidator.Registry.INSTANCE.put(ePackage, newValidator); } initialised = true; } //TODO: try to add individual element-based checks on demand with different priorities to reduce overhead when editing.. // @Check // public void checkConfigurationsStartWithCapital(TestConfiguration c) { Loading @@ -104,4 +117,34 @@ public class TDLtxValidator extends AbstractTDLtxValidator { // } //} @Check public void checkConfig(TestConfiguration e) { // System.out.println("Checkxs: "+e); // BasicDiagnosticWithRemove.validate(e, null); // BasicDiagnostic d = new BasicDiagnostic(); // if (!evlValidator.validate(e, d, null)) { // System.out.println(" Warning: "); // d.getChildren().forEach(m->System.out.println(" "+m.getMessage())); // }; } @Check public void checkElement(Element e) { // System.out.println("Checks: "+e); // BasicDiagnosticWithRemove.validate(e, null); // BasicDiagnostic d = new BasicDiagnostic(); // if (!evlValidator.validate(e, d, null)) { // System.out.println(" Warning: "); // }; // d.getChildren().forEach(m->System.out.println(" "+m.getMessage())); // BasicDiagnostic diagnostics = createDefaultDiagnostic(e); // if (!Character.isUpperCase() { // warning("Name should start with a capital", // tdlPackage.Literals.ELEMENT__NAME, // INVALID_NAME); // } } } Loading
plugins/org.etsi.mts.tdl.tx/src/org/etsi/mts/tdl/validation/TDLtxValidator.java +47 −4 Original line number Diff line number Diff line Loading @@ -7,12 +7,17 @@ import java.net.URI; import java.net.URISyntaxException; import org.eclipse.core.runtime.Platform; import org.eclipse.emf.common.util.BasicDiagnostic; import org.eclipse.emf.common.util.DiagnosticChain; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EValidator; import org.eclipse.emf.ecore.util.EObjectValidator; import org.eclipse.epsilon.evl.emf.validation.CompositeEValidator; import org.eclipse.epsilon.evl.emf.validation.EvlValidator; import org.eclipse.ocl.pivot.internal.utilities.PivotDiagnostician.BasicDiagnosticWithRemove; import org.eclipse.xtext.validation.AbstractValidationDiagnostic; import org.eclipse.xtext.validation.Check; import org.etsi.mts.tdl.Element; import org.etsi.mts.tdl.TestConfiguration; import org.etsi.mts.tdl.tdlPackage; Loading Loading @@ -44,6 +49,7 @@ public class TDLtxValidator extends AbstractTDLtxValidator { // INVALID_NAME); // } // } private static EvlValidator evlValidator; public TDLtxValidator() { Loading @@ -70,13 +76,21 @@ public class TDLtxValidator extends AbstractTDLtxValidator { // Pass a model name if your script uses it // Pass a valid bundle ID as it used for reporting (if not in a plugin use your project name or similar) String modelName = ""; //This seems to be important! Otherwise strange hangs occur String modelName = "TDL"; //This seems to be important! Otherwise strange hangs occur -> TDL? String bundleId = "org.etsi.mts.tdl.constraints"; URI evlScriptURI = new URI("platform:/plugin/"+bundleId+"/constraints/tdl-generated-ETSI-ES-203-119-1-V1.5.1-fixed.evl"); EvlValidator evlValidator = new EvlValidator( //TODO: try out extension point integration //TODO: try out fixes -> can they be in a separate module? //TODO: add other constraints for TO/TC evlValidator = new EvlValidator( evlScriptURI, modelName , ePackage.getNsURI(), bundleId); evlValidator.setShowErrorDialog(false); // registerValidator(ePackage); initialised = true; } private static void registerValidator(EPackage ePackage) { EValidator existingValidator = EValidator.Registry.INSTANCE.getEValidator(ePackage); if (existingValidator instanceof CompositeEValidator) { ((CompositeEValidator) existingValidator).getDelegates().add(evlValidator); Loading @@ -89,11 +103,10 @@ public class TDLtxValidator extends AbstractTDLtxValidator { newValidator.getDelegates().add(evlValidator); EValidator.Registry.INSTANCE.put(ePackage, newValidator); } initialised = true; } //TODO: try to add individual element-based checks on demand with different priorities to reduce overhead when editing.. // @Check // public void checkConfigurationsStartWithCapital(TestConfiguration c) { Loading @@ -104,4 +117,34 @@ public class TDLtxValidator extends AbstractTDLtxValidator { // } //} @Check public void checkConfig(TestConfiguration e) { // System.out.println("Checkxs: "+e); // BasicDiagnosticWithRemove.validate(e, null); // BasicDiagnostic d = new BasicDiagnostic(); // if (!evlValidator.validate(e, d, null)) { // System.out.println(" Warning: "); // d.getChildren().forEach(m->System.out.println(" "+m.getMessage())); // }; } @Check public void checkElement(Element e) { // System.out.println("Checks: "+e); // BasicDiagnosticWithRemove.validate(e, null); // BasicDiagnostic d = new BasicDiagnostic(); // if (!evlValidator.validate(e, d, null)) { // System.out.println(" Warning: "); // }; // d.getChildren().forEach(m->System.out.println(" "+m.getMessage())); // BasicDiagnostic diagnostics = createDefaultDiagnostic(e); // if (!Character.isUpperCase() { // warning("Name should start with a capital", // tdlPackage.Literals.ELEMENT__NAME, // INVALID_NAME); // } } }