Loading plugins/org.etsi.mts.tdl.constraints/src/org/etsi/mts/tdl/constraints/evl/TDLDiagnostician.java 0 → 100644 +35 −0 Original line number Diff line number Diff line package org.etsi.mts.tdl.constraints.evl; import java.util.Map; import org.eclipse.emf.common.util.BasicDiagnostic; import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EValidator; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.util.Diagnostician; import org.eclipse.emf.ecore.util.EObjectValidator; import org.eclipse.ocl.pivot.internal.labels.LabelSubstitutionLabelProvider; public class TDLDiagnostician extends Diagnostician { @Override public Map<Object, Object> createDefaultContext() { Map<Object, Object> context = super.createDefaultContext(); context.put(EValidator.SubstitutionLabelProvider.class, new LabelSubstitutionLabelProvider()); return context; } public BasicDiagnostic createDefaultDiagnostic(Resource resource) { return new BasicDiagnostic(EObjectValidator.DIAGNOSTIC_SOURCE, 0, "Message", new Object[] { resource }); } public Diagnostic validate(Resource resource) { BasicDiagnostic diagnostics = createDefaultDiagnostic(resource); Map<Object, Object> context = createDefaultContext(); resource.getAllContents().forEachRemaining(e->validate(e, diagnostics, context)); // for (EObject eObject : resource.getContents()) { // validate(eObject, diagnostics, context); // } return diagnostics; } } plugins/org.etsi.mts.tdl.constraints/src/org/etsi/mts/tdl/constraints/evl/Validator.java +74 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import java.util.stream.Collectors; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Platform; import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EValidator; Loading Loading @@ -64,6 +65,11 @@ import org.eclipse.epsilon.evl.execute.UnsatisfiedConstraint; import org.eclipse.epsilon.profiling.Profiler; import org.eclipse.epsilon.profiling.ProfilerTargetSummary; import org.eclipse.epsilon.profiling.ProfilingExecutionListener; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.ocl.pivot.utilities.OCL; import org.eclipse.ocl.pivot.utilities.PivotUtil; import org.eclipse.ocl.pivot.validation.ComposedEValidator; import org.eclipse.ocl.xtext.completeocl.validation.CompleteOCLEObjectValidator; import org.eclipse.xtext.nodemodel.ICompositeNode; import org.eclipse.xtext.nodemodel.util.NodeModelUtils; import org.eclipse.xtext.resource.XtextResource; Loading @@ -78,6 +84,74 @@ public class Validator { private static final List<EPackage> packages = List.of(tdlPackage.eINSTANCE, StructuredObjectivesPackage.eINSTANCE, ExtendedConfigurationsPackage.eINSTANCE); private static void registerValidator(EPackage ePackage, EValidator validator) { EValidator existingValidator = EValidator.Registry.INSTANCE.getEValidator(ePackage); if (existingValidator instanceof CompositeEValidator) { ((CompositeEValidator) existingValidator).getDelegates().add(validator); } else { if (existingValidator == null) { existingValidator = EObjectValidator.INSTANCE; } CompositeEValidator newValidator = new CompositeEValidator(); newValidator.getDelegates().add(existingValidator); newValidator.getDelegates().add(validator); EValidator.Registry.INSTANCE.put(ePackage, newValidator); } } public void validateOCL2(Resource r) { try { OCL ocl = OCL.newInstance(EPackage.Registry.INSTANCE); URI uri = getSourceUri("/ocl/tdl-constraints.ocl"); org.eclipse.emf.common.util.URI oclURI = org.eclipse.emf.common.util.URI.createURI(uri.toString()); Resource asResource = ocl.parse(oclURI); ComposedEValidator newEValidator = ComposedEValidator.install(tdlPackage.eINSTANCE); newEValidator.addChild(new CompleteOCLEObjectValidator(tdlPackage.eINSTANCE, oclURI)); TDLDiagnostician diagnostician = new TDLDiagnostician(); Diagnostic diagnostics = diagnostician.validate(r); System.out.println(diagnostics.getChildren().size()); // Print the diagnostics if (diagnostics.getSeverity() != Diagnostic.OK) { String formattedDiagnostics = PivotUtil.formatDiagnostics(diagnostics, "In"); System.out.println("Validation: "+formattedDiagnostics); } } catch (Exception e) { e.printStackTrace(); } } public void validateOCL(Resource r) { //TODO: does not quite work yet ComposedEValidator oclValidator = ComposedEValidator.install(tdlPackage.eINSTANCE); try { URI uri = getSourceUri("/ocl/tdl-constraints.ocl"); org.eclipse.emf.common.util.URI oclURI = org.eclipse.emf.common.util.URI.createURI(uri.toString()); CompleteOCLEObjectValidator validator = new CompleteOCLEObjectValidator(tdlPackage.eINSTANCE, oclURI); // Validate the entire Resource containing the library //TODO: overrides other validators registerValidator(tdlPackage.eINSTANCE, validator); // EValidator.Registry.INSTANCE.put(tdlPackage.eINSTANCE, validator); TDLDiagnostician diagnostician = new TDLDiagnostician(); Diagnostic diagnostics = diagnostician.validate(r); System.out.println(diagnostics.getChildren().size()); // Print the diagnostics if (diagnostics.getSeverity() != Diagnostic.OK) { String formattedDiagnostics = PivotUtil.formatDiagnostics(diagnostics, "In"); System.out.println("Validation: "+formattedDiagnostics); System.out.printf("Validation: %s\n", formattedDiagnostics); // debugPrintf ("Validation: %\n", formattedDiagnostics); } } catch (URISyntaxException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public List<UnsatisfiedConstraint> validate(Resource r) throws Exception { List<UnsatisfiedConstraint> violations = new ArrayList<>(); String prefix = "tdl-generated-ETSI-ES-203-119-"; Loading Loading
plugins/org.etsi.mts.tdl.constraints/src/org/etsi/mts/tdl/constraints/evl/TDLDiagnostician.java 0 → 100644 +35 −0 Original line number Diff line number Diff line package org.etsi.mts.tdl.constraints.evl; import java.util.Map; import org.eclipse.emf.common.util.BasicDiagnostic; import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EValidator; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.util.Diagnostician; import org.eclipse.emf.ecore.util.EObjectValidator; import org.eclipse.ocl.pivot.internal.labels.LabelSubstitutionLabelProvider; public class TDLDiagnostician extends Diagnostician { @Override public Map<Object, Object> createDefaultContext() { Map<Object, Object> context = super.createDefaultContext(); context.put(EValidator.SubstitutionLabelProvider.class, new LabelSubstitutionLabelProvider()); return context; } public BasicDiagnostic createDefaultDiagnostic(Resource resource) { return new BasicDiagnostic(EObjectValidator.DIAGNOSTIC_SOURCE, 0, "Message", new Object[] { resource }); } public Diagnostic validate(Resource resource) { BasicDiagnostic diagnostics = createDefaultDiagnostic(resource); Map<Object, Object> context = createDefaultContext(); resource.getAllContents().forEachRemaining(e->validate(e, diagnostics, context)); // for (EObject eObject : resource.getContents()) { // validate(eObject, diagnostics, context); // } return diagnostics; } }
plugins/org.etsi.mts.tdl.constraints/src/org/etsi/mts/tdl/constraints/evl/Validator.java +74 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import java.util.stream.Collectors; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Platform; import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EValidator; Loading Loading @@ -64,6 +65,11 @@ import org.eclipse.epsilon.evl.execute.UnsatisfiedConstraint; import org.eclipse.epsilon.profiling.Profiler; import org.eclipse.epsilon.profiling.ProfilerTargetSummary; import org.eclipse.epsilon.profiling.ProfilingExecutionListener; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.ocl.pivot.utilities.OCL; import org.eclipse.ocl.pivot.utilities.PivotUtil; import org.eclipse.ocl.pivot.validation.ComposedEValidator; import org.eclipse.ocl.xtext.completeocl.validation.CompleteOCLEObjectValidator; import org.eclipse.xtext.nodemodel.ICompositeNode; import org.eclipse.xtext.nodemodel.util.NodeModelUtils; import org.eclipse.xtext.resource.XtextResource; Loading @@ -78,6 +84,74 @@ public class Validator { private static final List<EPackage> packages = List.of(tdlPackage.eINSTANCE, StructuredObjectivesPackage.eINSTANCE, ExtendedConfigurationsPackage.eINSTANCE); private static void registerValidator(EPackage ePackage, EValidator validator) { EValidator existingValidator = EValidator.Registry.INSTANCE.getEValidator(ePackage); if (existingValidator instanceof CompositeEValidator) { ((CompositeEValidator) existingValidator).getDelegates().add(validator); } else { if (existingValidator == null) { existingValidator = EObjectValidator.INSTANCE; } CompositeEValidator newValidator = new CompositeEValidator(); newValidator.getDelegates().add(existingValidator); newValidator.getDelegates().add(validator); EValidator.Registry.INSTANCE.put(ePackage, newValidator); } } public void validateOCL2(Resource r) { try { OCL ocl = OCL.newInstance(EPackage.Registry.INSTANCE); URI uri = getSourceUri("/ocl/tdl-constraints.ocl"); org.eclipse.emf.common.util.URI oclURI = org.eclipse.emf.common.util.URI.createURI(uri.toString()); Resource asResource = ocl.parse(oclURI); ComposedEValidator newEValidator = ComposedEValidator.install(tdlPackage.eINSTANCE); newEValidator.addChild(new CompleteOCLEObjectValidator(tdlPackage.eINSTANCE, oclURI)); TDLDiagnostician diagnostician = new TDLDiagnostician(); Diagnostic diagnostics = diagnostician.validate(r); System.out.println(diagnostics.getChildren().size()); // Print the diagnostics if (diagnostics.getSeverity() != Diagnostic.OK) { String formattedDiagnostics = PivotUtil.formatDiagnostics(diagnostics, "In"); System.out.println("Validation: "+formattedDiagnostics); } } catch (Exception e) { e.printStackTrace(); } } public void validateOCL(Resource r) { //TODO: does not quite work yet ComposedEValidator oclValidator = ComposedEValidator.install(tdlPackage.eINSTANCE); try { URI uri = getSourceUri("/ocl/tdl-constraints.ocl"); org.eclipse.emf.common.util.URI oclURI = org.eclipse.emf.common.util.URI.createURI(uri.toString()); CompleteOCLEObjectValidator validator = new CompleteOCLEObjectValidator(tdlPackage.eINSTANCE, oclURI); // Validate the entire Resource containing the library //TODO: overrides other validators registerValidator(tdlPackage.eINSTANCE, validator); // EValidator.Registry.INSTANCE.put(tdlPackage.eINSTANCE, validator); TDLDiagnostician diagnostician = new TDLDiagnostician(); Diagnostic diagnostics = diagnostician.validate(r); System.out.println(diagnostics.getChildren().size()); // Print the diagnostics if (diagnostics.getSeverity() != Diagnostic.OK) { String formattedDiagnostics = PivotUtil.formatDiagnostics(diagnostics, "In"); System.out.println("Validation: "+formattedDiagnostics); System.out.printf("Validation: %s\n", formattedDiagnostics); // debugPrintf ("Validation: %\n", formattedDiagnostics); } } catch (URISyntaxException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public List<UnsatisfiedConstraint> validate(Resource r) throws Exception { List<UnsatisfiedConstraint> violations = new ArrayList<>(); String prefix = "tdl-generated-ETSI-ES-203-119-"; Loading