Commits (3)
......@@ -10,6 +10,7 @@ import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLEncoder;
......@@ -32,10 +33,12 @@ import java.util.stream.Collectors;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
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.ResourceSet;
import org.eclipse.emf.ecore.util.EObjectValidator;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.epsilon.common.parse.Region;
import org.eclipse.epsilon.common.parse.problem.ParseProblem;
......@@ -53,6 +56,10 @@ import org.eclipse.epsilon.eol.types.EolClasspathNativeTypeDelegate;
import org.eclipse.epsilon.etl.EtlModule;
import org.eclipse.epsilon.evl.EvlModule;
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.profiling.Profiler;
import org.eclipse.epsilon.profiling.ProfilerTargetSummary;
......@@ -70,7 +77,7 @@ import org.osgi.framework.Bundle;
public class Validator {
private static final List<EPackage> packages = List.of(tdlPackage.eINSTANCE, StructuredObjectivesPackage.eINSTANCE, ExtendedConfigurationsPackage.eINSTANCE);
public List<UnsatisfiedConstraint> validate(Resource r) throws Exception {
List<UnsatisfiedConstraint> violations = new ArrayList<>();
String prefix = "tdl-generated-ETSI-ES-203-119-";
......@@ -104,7 +111,7 @@ public class Validator {
for (String part : constraints) {
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
if (Platform.isRunning()) {
//System.out.println("Running as plugin...");
......
......@@ -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;
......@@ -44,6 +49,7 @@ public class TDLtxValidator extends AbstractTDLtxValidator {
// INVALID_NAME);
// }
// }
private static EvlValidator evlValidator;
public TDLtxValidator() {
......@@ -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);
......@@ -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) {
......@@ -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);
// }
}
}