diff options
author | Ed Willink | 2017-02-20 17:38:17 +0000 |
---|---|---|
committer | Ed Willink | 2017-02-21 11:40:44 +0000 |
commit | 307d4680d1e62006489aaefad2740f5f88e914d2 (patch) | |
tree | 074d427e002054c5f3ab18b6421863940f82b063 | |
parent | 29b13bdb8551c20a787b823f01ac7f0dbf762e0d (diff) | |
download | org.eclipse.ocl-307d4680d1e62006489aaefad2740f5f88e914d2.tar.gz org.eclipse.ocl-307d4680d1e62006489aaefad2740f5f88e914d2.tar.xz org.eclipse.ocl-307d4680d1e62006489aaefad2740f5f88e914d2.zip |
[512449] Only validate the most recent stereotype EPackage
-rw-r--r-- | plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/validation/EcoreOCLEValidator.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/validation/EcoreOCLEValidator.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/validation/EcoreOCLEValidator.java index 6ca7581694..1743c16e61 100644 --- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/validation/EcoreOCLEValidator.java +++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/validation/EcoreOCLEValidator.java @@ -51,6 +51,7 @@ import org.eclipse.ocl.pivot.internal.manager.MetamodelManagerInternal; import org.eclipse.ocl.pivot.internal.messages.PivotMessagesInternal; import org.eclipse.ocl.pivot.internal.utilities.OCLInternal; import org.eclipse.ocl.pivot.internal.utilities.PivotConstantsInternal; +import org.eclipse.ocl.pivot.util.DerivedConstants; import org.eclipse.ocl.pivot.util.PivotPlugin; import org.eclipse.ocl.pivot.utilities.NameUtil; import org.eclipse.ocl.pivot.utilities.ParserContext; @@ -276,6 +277,23 @@ public class EcoreOCLEValidator implements EValidator return false; } + private boolean isStaleStereotypeContent(EObject eObject) { + for (; eObject != null; eObject = eObject.eContainer()) { + if (eObject instanceof EPackage) { + EObject eContainer = eObject.eContainer(); + if (eContainer instanceof EAnnotation) { + EAnnotation eAnnotation = (EAnnotation)eContainer; + if (DerivedConstants.UML2_UML_PACKAGE_2_0_NS_URI.equals(eAnnotation.getSource())) { + int index = eAnnotation.getContents().indexOf(eObject); + return index != 0; // Anything other than the first stereotype is ignored. + } + } + break; + } + } + return false; + } + @Override public boolean validate(EObject eObject, DiagnosticChain diagnostics, Map<Object, Object> context) { return validate(eObject.eClass(), eObject, diagnostics, context); @@ -284,6 +302,9 @@ public class EcoreOCLEValidator implements EValidator @Override public boolean validate(EClass eClass, EObject eObject, DiagnosticChain diagnostics, Map<Object, Object> context) { + if (isStaleStereotypeContent(eObject)) { + return true; + } assert context != null; boolean allOk = true; if (eObject instanceof EPackage) { |