Commits (3)
...@@ -10,6 +10,7 @@ import java.io.PrintStream; ...@@ -10,6 +10,7 @@ import java.io.PrintStream;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.net.ServerSocket; import java.net.ServerSocket;
import java.net.Socket; import java.net.Socket;
import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.net.URL; import java.net.URL;
import java.net.URLEncoder; import java.net.URLEncoder;
...@@ -32,10 +33,12 @@ import java.util.stream.Collectors; ...@@ -32,10 +33,12 @@ import java.util.stream.Collectors;
import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EValidator;
import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.util.EObjectValidator;
import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.epsilon.common.parse.Region; import org.eclipse.epsilon.common.parse.Region;
import org.eclipse.epsilon.common.parse.problem.ParseProblem; import org.eclipse.epsilon.common.parse.problem.ParseProblem;
...@@ -53,6 +56,10 @@ import org.eclipse.epsilon.eol.types.EolClasspathNativeTypeDelegate; ...@@ -53,6 +56,10 @@ import org.eclipse.epsilon.eol.types.EolClasspathNativeTypeDelegate;
import org.eclipse.epsilon.etl.EtlModule; import org.eclipse.epsilon.etl.EtlModule;
import org.eclipse.epsilon.evl.EvlModule; import org.eclipse.epsilon.evl.EvlModule;
import org.eclipse.epsilon.evl.IEvlFixer; import org.eclipse.epsilon.evl.IEvlFixer;
import org.eclipse.epsilon.evl.IEvlModule;
import org.eclipse.epsilon.evl.emf.validation.CompositeEValidator;
import org.eclipse.epsilon.evl.emf.validation.EvlValidator;
import org.eclipse.epsilon.evl.emf.validation.EvlValidator.ValidationProblemListener;
import org.eclipse.epsilon.evl.execute.UnsatisfiedConstraint; import org.eclipse.epsilon.evl.execute.UnsatisfiedConstraint;
import org.eclipse.epsilon.profiling.Profiler; import org.eclipse.epsilon.profiling.Profiler;
import org.eclipse.epsilon.profiling.ProfilerTargetSummary; import org.eclipse.epsilon.profiling.ProfilerTargetSummary;
...@@ -70,7 +77,7 @@ import org.osgi.framework.Bundle; ...@@ -70,7 +77,7 @@ import org.osgi.framework.Bundle;
public class Validator { public class Validator {
private static final List<EPackage> packages = List.of(tdlPackage.eINSTANCE, StructuredObjectivesPackage.eINSTANCE, ExtendedConfigurationsPackage.eINSTANCE); private static final List<EPackage> packages = List.of(tdlPackage.eINSTANCE, StructuredObjectivesPackage.eINSTANCE, ExtendedConfigurationsPackage.eINSTANCE);
public List<UnsatisfiedConstraint> validate(Resource r) throws Exception { public List<UnsatisfiedConstraint> validate(Resource r) throws Exception {
List<UnsatisfiedConstraint> violations = new ArrayList<>(); List<UnsatisfiedConstraint> violations = new ArrayList<>();
String prefix = "tdl-generated-ETSI-ES-203-119-"; String prefix = "tdl-generated-ETSI-ES-203-119-";
...@@ -104,7 +111,7 @@ public class Validator { ...@@ -104,7 +111,7 @@ public class Validator {
for (String part : constraints) { for (String part : constraints) {
String source = "epsilon/constraints/"+part; String source = "epsilon/constraints/"+part;
java.net.URI uri = new File(source).toURI(); URI uri = new File(source).toURI();
//FIXED: also for TO? -> should work with all now //FIXED: also for TO? -> should work with all now
if (Platform.isRunning()) { if (Platform.isRunning()) {
//System.out.println("Running as plugin..."); //System.out.println("Running as plugin...");
......
...@@ -7,12 +7,17 @@ import java.net.URI; ...@@ -7,12 +7,17 @@ import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import org.eclipse.core.runtime.Platform; 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.EPackage;
import org.eclipse.emf.ecore.EValidator; import org.eclipse.emf.ecore.EValidator;
import org.eclipse.emf.ecore.util.EObjectValidator; import org.eclipse.emf.ecore.util.EObjectValidator;
import org.eclipse.epsilon.evl.emf.validation.CompositeEValidator; import org.eclipse.epsilon.evl.emf.validation.CompositeEValidator;
import org.eclipse.epsilon.evl.emf.validation.EvlValidator; 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.eclipse.xtext.validation.Check;
import org.etsi.mts.tdl.Element;
import org.etsi.mts.tdl.TestConfiguration; import org.etsi.mts.tdl.TestConfiguration;
import org.etsi.mts.tdl.tdlPackage; import org.etsi.mts.tdl.tdlPackage;
...@@ -44,6 +49,7 @@ public class TDLtxValidator extends AbstractTDLtxValidator { ...@@ -44,6 +49,7 @@ public class TDLtxValidator extends AbstractTDLtxValidator {
// INVALID_NAME); // INVALID_NAME);
// } // }
// } // }
private static EvlValidator evlValidator;
public TDLtxValidator() { public TDLtxValidator() {
...@@ -70,13 +76,21 @@ public class TDLtxValidator extends AbstractTDLtxValidator { ...@@ -70,13 +76,21 @@ public class TDLtxValidator extends AbstractTDLtxValidator {
// Pass a model name if your script uses it // 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) // 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"; 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"); 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); evlScriptURI, modelName , ePackage.getNsURI(), bundleId);
evlValidator.setShowErrorDialog(false); evlValidator.setShowErrorDialog(false);
// registerValidator(ePackage);
initialised = true;
}
private static void registerValidator(EPackage ePackage) {
EValidator existingValidator = EValidator.Registry.INSTANCE.getEValidator(ePackage); EValidator existingValidator = EValidator.Registry.INSTANCE.getEValidator(ePackage);
if (existingValidator instanceof CompositeEValidator) { if (existingValidator instanceof CompositeEValidator) {
((CompositeEValidator) existingValidator).getDelegates().add(evlValidator); ((CompositeEValidator) existingValidator).getDelegates().add(evlValidator);
...@@ -89,11 +103,10 @@ public class TDLtxValidator extends AbstractTDLtxValidator { ...@@ -89,11 +103,10 @@ public class TDLtxValidator extends AbstractTDLtxValidator {
newValidator.getDelegates().add(evlValidator); newValidator.getDelegates().add(evlValidator);
EValidator.Registry.INSTANCE.put(ePackage, newValidator); 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 // @Check
// public void checkConfigurationsStartWithCapital(TestConfiguration c) { // public void checkConfigurationsStartWithCapital(TestConfiguration c) {
...@@ -104,4 +117,34 @@ public class TDLtxValidator extends AbstractTDLtxValidator { ...@@ -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);
// }
}
} }