Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Willink2017-02-20 17:38:17 +0000
committerEd Willink2017-02-21 11:40:44 +0000
commit307d4680d1e62006489aaefad2740f5f88e914d2 (patch)
tree074d427e002054c5f3ab18b6421863940f82b063
parent29b13bdb8551c20a787b823f01ac7f0dbf762e0d (diff)
downloadorg.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.java21
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) {

Back to the top