Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAnsgar Radermacher2016-01-13 11:12:02 -0500
committerAnsgar Radermacher2016-01-13 11:12:02 -0500
commit2b9e8f72e5094b388ccdf8f811aa9207a392d5c9 (patch)
tree9def1dca563c5f1c4b0c856820e4c548a1256525 /tests
parent3741892d2df4b5c60f977d87e2008f271b6d00cb (diff)
downloadorg.eclipse.papyrus-2b9e8f72e5094b388ccdf8f811aa9207a392d5c9.tar.gz
org.eclipse.papyrus-2b9e8f72e5094b388ccdf8f811aa9207a392d5c9.tar.xz
org.eclipse.papyrus-2b9e8f72e5094b388ccdf8f811aa9207a392d5c9.zip
Bug 483542 - [Validation] Papyrus needs test cases for common validation tasks
Diffstat (limited to 'tests')
-rw-r--r--tests/junit/plugins/core/org.eclipse.papyrus.tests/META-INF/MANIFEST.MF3
-rw-r--r--tests/junit/plugins/core/org.eclipse.papyrus.tests/test/org/eclipse/papyrus/tests/AllTests.java1
-rw-r--r--tests/junit/plugins/junit/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/tests/AbstractEditorTest.java49
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/.classpath8
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/.project28
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/META-INF/MANIFEST.MF15
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/about.html28
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/build.properties9
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/plugin.properties12
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/plugin.xml38
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/pom.xml15
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/constraints/AlwaysPassiveConstraint.java32
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/selectors/AlwaysActiveClientSelector.java21
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/selectors/AlwaysActiveMalformedClientSelector.java21
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/selectors/AlwaysPassiveJavaClientSelector.java21
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/selectors/TstClientSelector.java21
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src/org/eclipse/papyrus/uml/validation/tests/genvalidation/Activator.java50
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/.classpath8
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/.project28
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/META-INF/MANIFEST.MF22
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/about.html28
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/build.properties7
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/active.rule-in-plugin.profile.di2
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/active.rule-in-plugin.profile.notation236
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/active.rule-in-plugin.profile.uml76
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/profile.ecore77
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/profile.genmodel35
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/plugin.properties13
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/plugin.xml35
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/pom.xml15
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/AlwaysActive.java66
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/AlwaysActiveMalformed.java66
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/AlwaysPassiveJava.java66
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/ProfileFactory.java69
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/ProfilePackage.java470
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/Tst.java50
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/AlwaysActiveImpl.java211
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/AlwaysActiveMalformedImpl.java211
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/AlwaysPassiveJavaImpl.java211
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/ProfileFactoryImpl.java128
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/ProfilePackageImpl.java384
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/TstImpl.java156
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/util/ProfileAdapterFactory.java174
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/util/ProfileSwitch.java173
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/util/ProfileValidator.java235
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src/org/eclipse/papyrus/uml/validation/tests/staticprofile/Activator.java50
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/.classpath7
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/.project28
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/.settings/org.eclipse.jdt.core.prefs291
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/.settings/org.eclipse.jdt.ui.prefs68
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/META-INF/MANIFEST.MF46
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/about.html28
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/build.properties10
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/plugin.properties13
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/pom.xml15
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/ExtraUMLValidation.ocl5
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/UMLValidationTests.di2
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/UMLValidationTests.notation192
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/UMLValidationTests.uml27
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-definition.di2
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-definition.notation276
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-definition.uml30
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-plugin.di2
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-plugin.notation238
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-plugin.uml34
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active.rule-in-definition.profile.di2
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active.rule-in-definition.profile.notation130
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active.rule-in-definition.profile.uml138
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active.rule-in-plugin.profile.di2
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/instanceSpecification.di2
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/instanceSpecification.notation100
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/instanceSpecification.uml34
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.di2
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.notation53
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.profile.di2
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.profile.notation60
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.profile.uml43
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.uml20
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/Activator.java67
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/AllTests.java69
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/Messages.java47
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/messages.properties15
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/AbstractValidationEditorTest.java81
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestOCLConstraintOnInstanceSpec.java77
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestOCLValidationRuleFromFile.java116
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestStereotypeValidation.java78
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestUMLValidationRules.java103
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestValidationRulesInPluginXML.java147
-rw-r--r--tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestValidationRulesInProfile.java123
91 files changed, 6505 insertions, 8 deletions
diff --git a/tests/junit/plugins/core/org.eclipse.papyrus.tests/META-INF/MANIFEST.MF b/tests/junit/plugins/core/org.eclipse.papyrus.tests/META-INF/MANIFEST.MF
index 7d4b0fa1136..d085854059a 100644
--- a/tests/junit/plugins/core/org.eclipse.papyrus.tests/META-INF/MANIFEST.MF
+++ b/tests/junit/plugins/core/org.eclipse.papyrus.tests/META-INF/MANIFEST.MF
@@ -82,7 +82,8 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.xtend.lib;bundle-version="2.8.1",
org.eclipse.papyrus.infra.nattable.common.tests;bundle-version="1.2.0",
org.eclipse.papyrus.infra.editor.welcome.tests;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.gmfdiag.welcome.tests;bundle-version="1.2.0"
+ org.eclipse.papyrus.infra.gmfdiag.welcome.tests;bundle-version="1.2.0",
+ org.eclipse.papyrus.uml.validation.tests;bundle-version="1.2.0"
Bundle-Vendor: %providerName
Bundle-ActivationPolicy: lazy
Bundle-Version: 1.2.0.qualifier
diff --git a/tests/junit/plugins/core/org.eclipse.papyrus.tests/test/org/eclipse/papyrus/tests/AllTests.java b/tests/junit/plugins/core/org.eclipse.papyrus.tests/test/org/eclipse/papyrus/tests/AllTests.java
index 5dad5790078..87f1ea40867 100644
--- a/tests/junit/plugins/core/org.eclipse.papyrus.tests/test/org/eclipse/papyrus/tests/AllTests.java
+++ b/tests/junit/plugins/core/org.eclipse.papyrus.tests/test/org/eclipse/papyrus/tests/AllTests.java
@@ -114,6 +114,7 @@ public class AllTests {
suiteClasses.add(new FragmentTestSuiteClass(org.eclipse.papyrus.uml.profile.Activator.PLUGIN_ID, "org.eclipse.papyrus.uml.profile.tests.AllTests"));
suiteClasses.add(new PluginTestSuiteClass(org.eclipse.papyrus.uml.decoratormodel.tests.AllTests.class));
suiteClasses.add(new PluginTestSuiteClass(org.eclipse.papyrus.uml.decoratormodel.controlmode.tests.AllTests.class));
+ suiteClasses.add(new PluginTestSuiteClass(org.eclipse.papyrus.uml.validation.tests.AllTests.class));
/* uml diagrams */
suiteClasses.add(new PluginTestSuiteClass(org.eclipse.papyrus.uml.diagram.common.tests.tests.AllTests.class));
diff --git a/tests/junit/plugins/junit/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/tests/AbstractEditorTest.java b/tests/junit/plugins/junit/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/tests/AbstractEditorTest.java
index b383a22741e..68805b2a4ea 100644
--- a/tests/junit/plugins/junit/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/tests/AbstractEditorTest.java
+++ b/tests/junit/plugins/junit/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/tests/AbstractEditorTest.java
@@ -69,18 +69,38 @@ public abstract class AbstractEditorTest extends AbstractPapyrusTest {
}
/**
- * Inits this.editor
+ * Create a new test project
+ * @param projectName
+ */
+ protected IProject createProject(String projectName) throws Exception {
+ project = ProjectUtils.createProject(projectName);
+ return project;
+ }
+
+ /**
+ * Initializes this editor
* Fails or throws an exception if an error occurs
*
- * @param bundle
- * the source bundle where the model is store
* @param projectName
- * the project that will created at runtime to execute test
+ * the project that will be created at runtime to execute the test
* @param modelName
* the model that will be copied and test executed on.
+ * @param bundle
+ * the source bundle where the model is stored
*/
protected void initModel(String projectName, String modelName, Bundle bundle) throws Exception {
- project = ProjectUtils.createProject(projectName);
+ createProject(projectName);
+ initModel(modelName, bundle);
+ }
+
+ /**
+ * Initializes this editor. Should be called, after a previous invocation of createProject()
+ *
+ * @param modelName
+ * @param bundle
+ * @throws Exception
+ */
+ protected void initModel(String modelName, Bundle bundle) throws Exception {
this.diModelFile = PapyrusProjectUtils.copyPapyrusModel(project, bundle, getSourcePath(), modelName);
Display.getDefault().syncExec(new Runnable() {
@@ -97,6 +117,21 @@ public abstract class AbstractEditorTest extends AbstractPapyrusTest {
Assert.assertNotNull(editor);
}
+
+ /**
+ * copy a model into the workspace, e.g. a profile that is required by the test model
+ *
+ * @param projectName
+ * the project that will be created at runtime to execute the test
+ * @param modelName
+ * the model that will be copied and test executed on.
+ * @param bundle
+ * the source bundle where the model is stored
+ */
+ protected void copyModel(String modelName, Bundle bundle) throws Exception {
+ PapyrusProjectUtils.copyPapyrusModel(project, bundle, getSourcePath(), modelName);
+ }
+
@After
public void dispose() throws Exception {
if(editor != null) {
@@ -151,14 +186,13 @@ public abstract class AbstractEditorTest extends AbstractPapyrusTest {
IModel umlIModel;
try {
- umlIModel = getModelSet().getModel("org.eclipse.papyrus.infra.core.resource.uml.UmlModel");
+ umlIModel = getModelSet().getModel("org.eclipse.papyrus.infra.core.resource.uml.UmlModel"); //$NON-NLS-1$
AbstractBaseModel umlModel = null;
if(umlIModel instanceof AbstractBaseModel) {
umlModel = (AbstractBaseModel)umlIModel;
}
-
Assert.assertFalse("umlRessource contains nothing", umlModel.getResource().getContents().isEmpty());
Object root = umlModel.getResource().getContents().get(0);
Assert.assertFalse("the root of UML model is not a package", root instanceof Package);
@@ -167,6 +201,7 @@ public abstract class AbstractEditorTest extends AbstractPapyrusTest {
} catch (ServiceException e) {
Assert.fail(e.getMessage());
}
+ // not reachable due to asserts above (no check by caller)
return null;
}
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/.classpath b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/.classpath
new file mode 100644
index 00000000000..f0c55498599
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src-gen"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/.project b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/.project
new file mode 100644
index 00000000000..cacdf4fa9f0
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.uml.validation.tests.genvalidation</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/.settings/org.eclipse.jdt.core.prefs b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..0c68a61dca8
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/META-INF/MANIFEST.MF b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..f52c71284aa
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-SymbolicName: org.eclipse.papyrus.uml.validation.tests.genvalidation;singleton:=true
+Bundle-Name: %pluginName
+Bundle-Version: 1.2.0.qualifier
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.validation,
+ org.eclipse.papyrus.uml.service.validation;bundle-version="1.2.0",
+ org.eclipse.uml2.uml,
+ org.eclipse.papyrus.uml.validation.tests.staticprofile;bundle-version="1.2.0"
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.uml.validation.tests.genvalidation.Activator
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: %providerName
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/about.html b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/build.properties b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/build.properties
new file mode 100644
index 00000000000..95c382e812f
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/build.properties
@@ -0,0 +1,9 @@
+#
+#Thu Dec 10 14:47:20 CET 2015
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html
+output..=bin/
+source..=src/,src-gen/
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/plugin.properties b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/plugin.properties
new file mode 100644
index 00000000000..1a8acee639b
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/plugin.properties
@@ -0,0 +1,12 @@
+################################################################################
+# Copyright (c) 2015 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Ansgar Radermacher (CEA LIST) ansgar.radermacher@cea.fr - initial API and implementation
+################################################################################
+pluginName=Generated Papyrus UML validation plugin
+pluginProvider=Eclipse Modeling Project
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/plugin.xml b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/plugin.xml
new file mode 100644
index 00000000000..bdaf55e5470
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/plugin.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?eclipse version="3.4"?><plugin>
+<extension name="dsml.validation.generated.profile" point="org.eclipse.emf.validation.constraintProviders">
+ <category id="org.eclipse.papyrus.uml.validation.tests.genvalidation.profile" mandatory="false" name="org.eclipse.papyrus.uml.validation.tests.genvalidation.profile"/>
+ <constraintProvider cache="false" mode="Batch">
+ <package namespaceUri="http://org.eclipse.papyrus/activetest/1"/>
+ <constraints categories="org.eclipse.papyrus.uml.validation.tests.genvalidation.profile">
+ <constraint id="profile.AlwaysActive.ConstraintAlwaysActive" isEnabledByDefault="true" lang="OCLpivot" mode="Batch" name="ConstraintAlwaysActive" severity="ERROR" statusCode="1">
+ <message>Custom message</message><![CDATA[base_Class.isActive]]></constraint>
+ <constraint id="profile.AlwaysActiveMalformed.ConstraintAlwaysActiveMF" isEnabledByDefault="true" lang="OCLpivot" mode="Batch" name="ConstraintAlwaysActiveMF" severity="ERROR" statusCode="1">
+ <message>Constraint 'ConstraintAlwaysActiveMF' is violated</message><![CDATA[self.oclAsType(Class).isActive]]></constraint>
+ <constraint class="org.eclipse.papyrus.uml.validation.tests.genvalidation.constraints.AlwaysPassiveConstraint" id="profile.AlwaysPassiveJava.AlwaysPassive" isEnabledByDefault="true" lang="Java" mode="Batch" name="AlwaysPassive" severity="ERROR" statusCode="1">
+ <message>Constraint 'AlwaysPassive' is violated</message>
+ </constraint>
+ </constraints>
+ </constraintProvider>
+ </extension>
+ <extension name="dsml.validation.generated.profile" point="org.eclipse.emf.validation.constraintBindings">
+ <clientContext id="AlwaysActiveMalformedClientContext">
+ <selector class="org.eclipse.papyrus.uml.validation.tests.genvalidation.selectors.AlwaysActiveMalformedClientSelector"/>
+ </clientContext>
+ <binding context="AlwaysActiveMalformedClientContext">
+ <constraint ref="org.eclipse.papyrus.uml.validation.tests.genvalidation.profile.AlwaysActiveMalformed.ConstraintAlwaysActiveMF"/>
+ </binding>
+ <clientContext id="AlwaysPassiveJavaClientContext">
+ <selector class="org.eclipse.papyrus.uml.validation.tests.genvalidation.selectors.AlwaysPassiveJavaClientSelector"/>
+ </clientContext>
+ <binding context="AlwaysPassiveJavaClientContext">
+ <constraint ref="org.eclipse.papyrus.uml.validation.tests.genvalidation.profile.AlwaysPassiveJava.AlwaysPassive"/>
+ </binding>
+ <clientContext id="AlwaysActiveClientContext">
+ <selector class="org.eclipse.papyrus.uml.validation.tests.genvalidation.selectors.AlwaysActiveClientSelector"/>
+ </clientContext>
+ <binding context="AlwaysActiveClientContext">
+ <constraint ref="org.eclipse.papyrus.uml.validation.tests.genvalidation.profile.AlwaysActive.ConstraintAlwaysActive"/>
+ </binding>
+ </extension>
+</plugin>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/pom.xml b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/pom.xml
new file mode 100644
index 00000000000..85b61c9606c
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.tests.releng</artifactId>
+ <version>1.2.0-SNAPSHOT</version>
+ <relativePath>../../../../../../releng/main-tests</relativePath>
+ </parent>
+ <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.uml.validation.tests.genvalidation</artifactId>
+ <version>1.2.0-SNAPSHOT</version>
+ <packaging>eclipse-test-plugin</packaging>
+</project>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/constraints/AlwaysPassiveConstraint.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/constraints/AlwaysPassiveConstraint.java
new file mode 100644
index 00000000000..a47783d8282
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/constraints/AlwaysPassiveConstraint.java
@@ -0,0 +1,32 @@
+/**
+ * Created by the Papyrus DSML plugin generator
+ */
+
+package org.eclipse.papyrus.uml.validation.tests.genvalidation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.validation.AbstractModelConstraint;
+import org.eclipse.emf.validation.IValidationContext;
+import org.eclipse.emf.ecore.EObject;
+
+public class AlwaysPassiveConstraint extends AbstractModelConstraint {
+
+ public IStatus validate(IValidationContext ctx) {
+ EObject target = ctx.getTarget();
+
+ if (target instanceof profile.AlwaysPassiveJava) {
+ if (evaluateConstraint((profile.AlwaysPassiveJava) target)) {
+ return ctx.createSuccessStatus();
+ }
+ else {
+ return ctx.createFailureStatus(""); //$NON-NLS-1$ failure message is in plugin.xml
+ }
+ }
+ return ctx.createSuccessStatus();
+ }
+
+ private boolean evaluateConstraint(profile.AlwaysPassiveJava self) {
+ return !self.getBase_Class().isActive();
+ }
+
+}
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/selectors/AlwaysActiveClientSelector.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/selectors/AlwaysActiveClientSelector.java
new file mode 100644
index 00000000000..db4e878e661
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/selectors/AlwaysActiveClientSelector.java
@@ -0,0 +1,21 @@
+/**
+ * Created by the Papyrus DSML plugin generator
+ */
+
+package org.eclipse.papyrus.uml.validation.tests.genvalidation.selectors;
+
+import org.eclipse.emf.validation.model.IClientSelector;
+import org.eclipse.papyrus.uml.service.validation.StereotypeUtil;
+
+/**
+ * This class filters (selects) passed stereotype applications. It returns true, if the
+ * associated stereotype (or one of its super-stereotypes) has the name '[stereotype.name/]'.
+ *
+ * @generated
+ */
+public class AlwaysActiveClientSelector implements IClientSelector {
+
+ public boolean selects(Object stereoApplicationObj) {
+ return StereotypeUtil.checkStereoApplication(stereoApplicationObj, "AlwaysActive"); //$NON-NLS-1$
+ }
+}
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/selectors/AlwaysActiveMalformedClientSelector.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/selectors/AlwaysActiveMalformedClientSelector.java
new file mode 100644
index 00000000000..2c6f848718e
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/selectors/AlwaysActiveMalformedClientSelector.java
@@ -0,0 +1,21 @@
+/**
+ * Created by the Papyrus DSML plugin generator
+ */
+
+package org.eclipse.papyrus.uml.validation.tests.genvalidation.selectors;
+
+import org.eclipse.emf.validation.model.IClientSelector;
+import org.eclipse.papyrus.uml.service.validation.StereotypeUtil;
+
+/**
+ * This class filters (selects) passed stereotype applications. It returns true, if the
+ * associated stereotype (or one of its super-stereotypes) has the name '[stereotype.name/]'.
+ *
+ * @generated
+ */
+public class AlwaysActiveMalformedClientSelector implements IClientSelector {
+
+ public boolean selects(Object stereoApplicationObj) {
+ return StereotypeUtil.checkStereoApplication(stereoApplicationObj, "AlwaysActiveMalformed"); //$NON-NLS-1$
+ }
+}
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/selectors/AlwaysPassiveJavaClientSelector.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/selectors/AlwaysPassiveJavaClientSelector.java
new file mode 100644
index 00000000000..585592c5468
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/selectors/AlwaysPassiveJavaClientSelector.java
@@ -0,0 +1,21 @@
+/**
+ * Created by the Papyrus DSML plugin generator
+ */
+
+package org.eclipse.papyrus.uml.validation.tests.genvalidation.selectors;
+
+import org.eclipse.emf.validation.model.IClientSelector;
+import org.eclipse.papyrus.uml.service.validation.StereotypeUtil;
+
+/**
+ * This class filters (selects) passed stereotype applications. It returns true, if the
+ * associated stereotype (or one of its super-stereotypes) has the name '[stereotype.name/]'.
+ *
+ * @generated
+ */
+public class AlwaysPassiveJavaClientSelector implements IClientSelector {
+
+ public boolean selects(Object stereoApplicationObj) {
+ return StereotypeUtil.checkStereoApplication(stereoApplicationObj, "AlwaysPassiveJava"); //$NON-NLS-1$
+ }
+}
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/selectors/TstClientSelector.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/selectors/TstClientSelector.java
new file mode 100644
index 00000000000..b85f2b3d0f2
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src-gen/org/eclipse/papyrus/uml/validation/tests/genvalidation/selectors/TstClientSelector.java
@@ -0,0 +1,21 @@
+/**
+ * Created by the Papyrus DSML plugin generator
+ */
+
+package org.eclipse.papyrus.uml.validation.tests.genvalidation.selectors;
+
+import org.eclipse.emf.validation.model.IClientSelector;
+import org.eclipse.papyrus.uml.service.validation.StereotypeUtil;
+
+/**
+ * This class filters (selects) passed stereotype applications. It returns true, if the
+ * associated stereotype (or one of its super-stereotypes) has the name '[stereotype.name/]'.
+ *
+ * @generated
+ */
+public class TstClientSelector implements IClientSelector {
+
+ public boolean selects(Object stereoApplicationObj) {
+ return StereotypeUtil.checkStereoApplication(stereoApplicationObj, "Tst"); //$NON-NLS-1$
+ }
+}
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src/org/eclipse/papyrus/uml/validation/tests/genvalidation/Activator.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src/org/eclipse/papyrus/uml/validation/tests/genvalidation/Activator.java
new file mode 100644
index 00000000000..cd9c5b56c8a
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.genvalidation/src/org/eclipse/papyrus/uml/validation/tests/genvalidation/Activator.java
@@ -0,0 +1,50 @@
+package org.eclipse.papyrus.uml.validation.tests.genvalidation;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.uml.validation.tests.genvalidation"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/.classpath b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/.classpath
new file mode 100644
index 00000000000..f0c55498599
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src-gen"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/.project b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/.project
new file mode 100644
index 00000000000..29810290d46
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.uml.validation.tests.staticprofile</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/.settings/org.eclipse.jdt.core.prefs b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..0c68a61dca8
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/META-INF/MANIFEST.MF b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..4bb78d4cd42
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-SymbolicName: org.eclipse.papyrus.uml.validation.tests.staticprofile;singleton:=true
+Export-Package: org.eclipse.papyrus.uml.validation.tests.staticprofile,
+ profile,
+ profile.impl,
+ profile.util
+Bundle-Name: %pluginName
+Bundle-Version: 1.2.0.qualifier
+Bundle-ClassPath: .
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.common;bundle-version="2.12.0",
+ org.eclipse.emf.ecore;bundle-version="2.12.0";visibility:=reexport,
+ org.eclipse.uml2.types;visibility:=reexport,
+ org.eclipse.uml2.uml;bundle-version="5.1.100";visibility:=reexport,
+ org.eclipse.papyrus.dsml.validation
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.uml.validation.tests.staticprofile.Activator
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/about.html b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/build.properties b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/build.properties
new file mode 100644
index 00000000000..c1b1c5b70fa
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/build.properties
@@ -0,0 +1,7 @@
+source.. = src/,src-gen/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/active.rule-in-plugin.profile.di b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/active.rule-in-plugin.profile.di
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/active.rule-in-plugin.profile.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/active.rule-in-plugin.profile.notation b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/active.rule-in-plugin.profile.notation
new file mode 100644
index 00000000000..aac46fc1fe3
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/active.rule-in-plugin.profile.notation
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_nLZ7gOGyEeOvkKBujXdKCg" type="PapyrusUMLProfileDiagram" name="ProfileDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_oWSaQOGyEeOvkKBujXdKCg" type="1026">
+ <children xmi:type="notation:DecorationNode" xmi:id="_oWTBUOGyEeOvkKBujXdKCg" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_oWToYOGyEeOvkKBujXdKCg" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_oWToYeGyEeOvkKBujXdKCg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_oWToYuGyEeOvkKBujXdKCg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_oWToY-GyEeOvkKBujXdKCg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oWToZOGyEeOvkKBujXdKCg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_oWToZeGyEeOvkKBujXdKCg" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_oWToZuGyEeOvkKBujXdKCg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_oWToZ-GyEeOvkKBujXdKCg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_oWToaOGyEeOvkKBujXdKCg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oWToaeGyEeOvkKBujXdKCg"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="active.rule-in-plugin.profile.uml#_pG-b4OGoEeOLd684kqvD2g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oWSaQeGyEeOvkKBujXdKCg" x="220" y="160" width="198" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_pDqdoOGyEeOvkKBujXdKCg" type="1031">
+ <children xmi:type="notation:DecorationNode" xmi:id="_pDqdouGyEeOvkKBujXdKCg" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pDqdoeGyEeOvkKBujXdKCg" x="220" y="40" width="676"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uV0TwOGyEeOvkKBujXdKCg" type="1014">
+ <children xmi:type="notation:DecorationNode" xmi:id="_uV060OGyEeOvkKBujXdKCg" type="1015"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uV060eGyEeOvkKBujXdKCg" type="5063"/>
+ <element xmi:type="uml:Constraint" href="active.rule-in-plugin.profile.uml#_uHg9kOGoEeOLd684kqvD2g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uV0TweGyEeOvkKBujXdKCg" x="220" y="300" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CSsAoOV-EeOFd8atAXGFIA" type="1026">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CSsnsOV-EeOFd8atAXGFIA" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CSsnseV-EeOFd8atAXGFIA" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CSsnsuV-EeOFd8atAXGFIA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CSsns-V-EeOFd8atAXGFIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CSsntOV-EeOFd8atAXGFIA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CSsnteV-EeOFd8atAXGFIA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CSsntuV-EeOFd8atAXGFIA" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CSsnt-V-EeOFd8atAXGFIA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CSsnuOV-EeOFd8atAXGFIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CSsnueV-EeOFd8atAXGFIA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CStOwOV-EeOFd8atAXGFIA"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="active.rule-in-plugin.profile.uml#_CSo9UOV-EeOFd8atAXGFIA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CSsAoeV-EeOFd8atAXGFIA" x="60" y="160" width="121" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JlOaIOV-EeOFd8atAXGFIA" type="1031">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JlPoQOV-EeOFd8atAXGFIA" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlPoQeV-EeOFd8atAXGFIA" x="60" y="40" width="121"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_nepIYDHGEeSIQaU3LZ0hmw" type="1026">
+ <children xmi:type="notation:DecorationNode" xmi:id="_neqWgDHGEeSIQaU3LZ0hmw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_neqWgTHGEeSIQaU3LZ0hmw" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_neqWgjHGEeSIQaU3LZ0hmw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_neqWgzHGEeSIQaU3LZ0hmw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_neqWhDHGEeSIQaU3LZ0hmw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_neqWhTHGEeSIQaU3LZ0hmw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_neqWhjHGEeSIQaU3LZ0hmw" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_neqWhzHGEeSIQaU3LZ0hmw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_neqWiDHGEeSIQaU3LZ0hmw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_neqWiTHGEeSIQaU3LZ0hmw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_neqWijHGEeSIQaU3LZ0hmw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="active.rule-in-plugin.profile.uml#_neZ30DHGEeSIQaU3LZ0hmw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nepIYTHGEeSIQaU3LZ0hmw" x="500" y="160" width="162" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xPxEMDHGEeSIQaU3LZ0hmw" type="1014">
+ <children xmi:type="notation:DecorationNode" xmi:id="_xPxrQDHGEeSIQaU3LZ0hmw" type="1015"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xPxrQTHGEeSIQaU3LZ0hmw" type="5063"/>
+ <element xmi:type="uml:Constraint" href="active.rule-in-plugin.profile.uml#_xPHj8DHGEeSIQaU3LZ0hmw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xPxEMTHGEeSIQaU3LZ0hmw" x="500" y="300" width="162" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_h6i4sJ5yEeWRy9FpOq-8kw" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_h6i4sZ5yEeWRy9FpOq-8kw" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_h6jfwJ5yEeWRy9FpOq-8kw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_h6i4sp5yEeWRy9FpOq-8kw" x="420" y="40"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_h676QJ5yEeWRy9FpOq-8kw" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_h676QZ5yEeWRy9FpOq-8kw" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_h676Q55yEeWRy9FpOq-8kw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Constraint" href="active.rule-in-plugin.profile.uml#_uHg9kOGoEeOLd684kqvD2g"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_h676Qp5yEeWRy9FpOq-8kw" x="420" y="300"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_h7cQkJ5yEeWRy9FpOq-8kw" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_h7cQkZ5yEeWRy9FpOq-8kw" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_h7c3oJ5yEeWRy9FpOq-8kw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_h7cQkp5yEeWRy9FpOq-8kw" x="260" y="40"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ROTIYJ5zEeWRy9FpOq-8kw" type="1014">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ROU9kJ5zEeWRy9FpOq-8kw" type="1015"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ROU9kZ5zEeWRy9FpOq-8kw" type="5063"/>
+ <element xmi:type="uml:Constraint" href="active.rule-in-plugin.profile.uml#_ROKlgJ5zEeWRy9FpOq-8kw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ROTIYZ5zEeWRy9FpOq-8kw" x="700" y="300" width="221" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_S62w0J5zEeWRy9FpOq-8kw" type="1026">
+ <children xmi:type="notation:DecorationNode" xmi:id="_S62w0p5zEeWRy9FpOq-8kw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_S62w055zEeWRy9FpOq-8kw" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_S62w1J5zEeWRy9FpOq-8kw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_S62w1Z5zEeWRy9FpOq-8kw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_S62w1p5zEeWRy9FpOq-8kw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S62w155zEeWRy9FpOq-8kw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_S62w2J5zEeWRy9FpOq-8kw" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_S62w2Z5zEeWRy9FpOq-8kw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_S62w2p5zEeWRy9FpOq-8kw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_S62w255zEeWRy9FpOq-8kw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S62w3J5zEeWRy9FpOq-8kw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="active.rule-in-plugin.profile.uml#_S607oJ5zEeWRy9FpOq-8kw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S62w0Z5zEeWRy9FpOq-8kw" x="728" y="158" width="164" height="83"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Xn02Rp5zEeWRy9FpOq-8kw" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Xn02R55zEeWRy9FpOq-8kw" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Xn02SZ5zEeWRy9FpOq-8kw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Constraint" href="active.rule-in-plugin.profile.uml#_ROKlgJ5zEeWRy9FpOq-8kw"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Xn02SJ5zEeWRy9FpOq-8kw" x="926" y="310"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_nLZ7geGyEeOvkKBujXdKCg"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_nLZ7guGyEeOvkKBujXdKCg">
+ <owner xmi:type="uml:Profile" href="active.rule-in-plugin.profile.uml#_GkQEIOGnEeO2stwZ2ZCXww"/>
+ </styles>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_h1L3kJ5yEeWRy9FpOq-8kw" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <element xmi:type="uml:Profile" href="active.rule-in-plugin.profile.uml#_GkQEIOGnEeO2stwZ2ZCXww"/>
+ <edges xmi:type="notation:Connector" xmi:id="_pD1cwOGyEeOvkKBujXdKCg" type="1013" source="_oWSaQOGyEeOvkKBujXdKCg" target="_pDqdoOGyEeOvkKBujXdKCg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_pD1cweGyEeOvkKBujXdKCg"/>
+ <element xmi:type="uml:Extension" href="active.rule-in-plugin.profile.uml#_tkX0QOGoEeOLd684kqvD2g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pD1cwuGyEeOvkKBujXdKCg" points="[-66, -50, 226, 174]$[-292, -224, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pdDOAOGyEeOvkKBujXdKCg" id="(0.5050505050505051,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pdD1EOGyEeOvkKBujXdKCg" id="(0.14792899408284024,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_KghkwOV-EeOFd8atAXGFIA" type="1013" source="_CSsAoOV-EeOFd8atAXGFIA" target="_JlOaIOV-EeOFd8atAXGFIA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_KghkweV-EeOFd8atAXGFIA"/>
+ <element xmi:type="uml:Extension" href="active.rule-in-plugin.profile.uml#_Kga3EOV-EeOFd8atAXGFIA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KghkwuV-EeOFd8atAXGFIA" points="[1, -13, 15, 115]$[36, -126, 50, 2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KgnEUOV-EeOFd8atAXGFIA" id="(0.49586776859504134,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XQzzkO2FEeOySPMTnt--qw" id="(0.49586776859504134,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_uGtBgDHGEeSIQaU3LZ0hmw" type="1013" source="_nepIYDHGEeSIQaU3LZ0hmw" target="_pDqdoOGyEeOvkKBujXdKCg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_uGtBgTHGEeSIQaU3LZ0hmw"/>
+ <element xmi:type="uml:Extension" href="active.rule-in-plugin.profile.uml#_uGpXIDHGEeSIQaU3LZ0hmw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uGtBgjHGEeSIQaU3LZ0hmw" points="[2, -9, 0, 76]$[44, -79, 42, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uGxS8DHGEeSIQaU3LZ0hmw" id="(0.49382716049382713,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uGxS8THGEeSIQaU3LZ0hmw" id="(0.5325443786982249,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_h6kG0J5yEeWRy9FpOq-8kw" type="StereotypeCommentLink" source="_pDqdoOGyEeOvkKBujXdKCg" target="_h6i4sJ5yEeWRy9FpOq-8kw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_h6kG0Z5yEeWRy9FpOq-8kw"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_h6kG1Z5yEeWRy9FpOq-8kw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_h6kG0p5yEeWRy9FpOq-8kw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_h6kG055yEeWRy9FpOq-8kw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_h6kG1J5yEeWRy9FpOq-8kw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_h676RJ5yEeWRy9FpOq-8kw" type="StereotypeCommentLink" source="_uV0TwOGyEeOvkKBujXdKCg" target="_h676QJ5yEeWRy9FpOq-8kw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_h676RZ5yEeWRy9FpOq-8kw"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_h676SZ5yEeWRy9FpOq-8kw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Constraint" href="active.rule-in-plugin.profile.uml#_uHg9kOGoEeOLd684kqvD2g"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_h676Rp5yEeWRy9FpOq-8kw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_h676R55yEeWRy9FpOq-8kw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_h676SJ5yEeWRy9FpOq-8kw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_h7c3oZ5yEeWRy9FpOq-8kw" type="StereotypeCommentLink" source="_JlOaIOV-EeOFd8atAXGFIA" target="_h7cQkJ5yEeWRy9FpOq-8kw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_h7c3op5yEeWRy9FpOq-8kw"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_h7c3pp5yEeWRy9FpOq-8kw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_h7c3o55yEeWRy9FpOq-8kw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_h7c3pJ5yEeWRy9FpOq-8kw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_h7c3pZ5yEeWRy9FpOq-8kw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Xn02Sp5zEeWRy9FpOq-8kw" type="StereotypeCommentLink" source="_ROTIYJ5zEeWRy9FpOq-8kw" target="_Xn02Rp5zEeWRy9FpOq-8kw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Xn1dUJ5zEeWRy9FpOq-8kw"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Xn1dVJ5zEeWRy9FpOq-8kw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Constraint" href="active.rule-in-plugin.profile.uml#_ROKlgJ5zEeWRy9FpOq-8kw"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Xn1dUZ5zEeWRy9FpOq-8kw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Xn1dUp5zEeWRy9FpOq-8kw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Xn1dU55zEeWRy9FpOq-8kw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_iEZtYJ50EeWRy9FpOq-8kw" type="1013" source="_S62w0J5zEeWRy9FpOq-8kw" target="_pDqdoOGyEeOvkKBujXdKCg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_iEZtYZ50EeWRy9FpOq-8kw"/>
+ <element xmi:type="uml:Extension" href="active.rule-in-plugin.profile.uml#_iDxbQJ50EeWRy9FpOq-8kw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iEZtYp50EeWRy9FpOq-8kw" points="[787, 158, -643984, -643984]$[745, 90, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iFcPMJ50EeWRy9FpOq-8kw" id="(0.5609756097560976,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iFc2QJ50EeWRy9FpOq-8kw" id="(0.8875739644970414,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_OK4v0J51EeWRy9FpOq-8kw" type="8500" source="_ROTIYJ5zEeWRy9FpOq-8kw" target="_S62w0J5zEeWRy9FpOq-8kw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_OK5W4J51EeWRy9FpOq-8kw" visible="false" type="8501">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_oe6QsJ6KEeWBT6G5SeJASA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OK5W4Z51EeWRy9FpOq-8kw" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_OK4v0Z51EeWRy9FpOq-8kw"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OK4v0p51EeWRy9FpOq-8kw" points="[800, 300, -643984, -643984]$[800, 245, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OLsoIJ51EeWRy9FpOq-8kw" id="(0.45248868778280543,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OLtPMJ51EeWRy9FpOq-8kw" id="(0.43902439024390244,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_el32YJ6HEeWBT6G5SeJASA" type="8500" source="_uV0TwOGyEeOvkKBujXdKCg" target="_oWSaQOGyEeOvkKBujXdKCg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_el32Y56HEeWBT6G5SeJASA" visible="false" type="8501">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_el32ZJ6HEeWBT6G5SeJASA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_el32YZ6HEeWBT6G5SeJASA"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_el32Yp6HEeWBT6G5SeJASA" points="[320, 300, -643984, -643984]$[320, 241, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_emVwcJ6HEeWBT6G5SeJASA" id="(0.4975124378109453,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_emVwcZ6HEeWBT6G5SeJASA" id="(0.5050505050505051,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_fZazMJ6HEeWBT6G5SeJASA" type="8500" source="_xPxEMDHGEeSIQaU3LZ0hmw" target="_nepIYDHGEeSIQaU3LZ0hmw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_fZbaQJ6HEeWBT6G5SeJASA" visible="false" type="8501">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fZbaQZ6HEeWBT6G5SeJASA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_fZazMZ6HEeWBT6G5SeJASA"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fZazMp6HEeWBT6G5SeJASA" points="[580, 300, -643984, -643984]$[580, 241, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fZ-M0J6HEeWBT6G5SeJASA" id="(0.49382716049382713,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fZ-M0Z6HEeWBT6G5SeJASA" id="(0.49382716049382713,1.0)"/>
+ </edges>
+</notation:Diagram>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/active.rule-in-plugin.profile.uml b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/active.rule-in-plugin.profile.uml
new file mode 100644
index 00000000000..7dac2ce2d05
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/active.rule-in-plugin.profile.uml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:PapyrusDSMLValidationRule="http://www.eclipse.org/papyrus/dsmlvalidation" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+ <uml:Profile xmi:id="_GkQEIOGnEeO2stwZ2ZCXww" name="profile" metaclassReference="_sAN54OGoEeOLd684kqvD2g _JlLW0OV-EeOFd8atAXGFIA">
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_sAN54OGoEeOLd684kqvD2g" alias="Class">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_JlLW0OV-EeOFd8atAXGFIA" alias="Package">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ </elementImport>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_pG-b4OGoEeOLd684kqvD2g" name="AlwaysActive">
+ <ownedRule xmi:type="uml:Constraint" xmi:id="_uHg9kOGoEeOLd684kqvD2g" name="ConstraintAlwaysActive">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_xQ_P8OGoEeOLd684kqvD2g">
+ <language>OCL</language>
+ <body>base_Class.isActive</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_tkXNMOGoEeOLd684kqvD2g" name="base_Class" association="_tkX0QOGoEeOLd684kqvD2g">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_tkX0QOGoEeOLd684kqvD2g" name="E_AlwaysActive_Class1" memberEnd="_tkX0QeGoEeOLd684kqvD2g _tkXNMOGoEeOLd684kqvD2g">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_tkX0QeGoEeOLd684kqvD2g" name="extension_AlwaysActive" type="_pG-b4OGoEeOLd684kqvD2g" aggregation="composite" association="_tkX0QOGoEeOLd684kqvD2g"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_CSo9UOV-EeOFd8atAXGFIA" name="Tst">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_KgaQAOV-EeOFd8atAXGFIA" name="base_Package" association="_Kga3EOV-EeOFd8atAXGFIA">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_Kga3EOV-EeOFd8atAXGFIA" name="E_Tst_Package1" memberEnd="_Kga3EeV-EeOFd8atAXGFIA _KgaQAOV-EeOFd8atAXGFIA">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_Kga3EeV-EeOFd8atAXGFIA" name="extension_Tst" type="_CSo9UOV-EeOFd8atAXGFIA" aggregation="composite" association="_Kga3EOV-EeOFd8atAXGFIA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_neZ30DHGEeSIQaU3LZ0hmw" name="AlwaysActiveMalformed">
+ <ownedRule xmi:type="uml:Constraint" xmi:id="_xPHj8DHGEeSIQaU3LZ0hmw" name="ConstraintAlwaysActiveMF">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_02t8wDHGEeSIQaU3LZ0hmw">
+ <language>OCL</language>
+ <body>self.oclAsType(Class).isActive</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_uGowEDHGEeSIQaU3LZ0hmw" name="base_Class" association="_uGpXIDHGEeSIQaU3LZ0hmw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_uGpXIDHGEeSIQaU3LZ0hmw" name="E_AlwaysActiveMalformed_Class1" memberEnd="_uGpXITHGEeSIQaU3LZ0hmw _uGowEDHGEeSIQaU3LZ0hmw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_uGpXITHGEeSIQaU3LZ0hmw" name="extension_AlwaysActiveMalformed" type="_neZ30DHGEeSIQaU3LZ0hmw" aggregation="composite" association="_uGpXIDHGEeSIQaU3LZ0hmw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_S607oJ5zEeWRy9FpOq-8kw" name="AlwaysPassiveJava">
+ <ownedRule xmi:type="uml:Constraint" xmi:id="_ROKlgJ5zEeWRy9FpOq-8kw" name="AlwaysPassive">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_8CKP4J50EeWRy9FpOq-8kw">
+ <language>JAVA</language>
+ <body>return !self.getBase_Class().isActive();</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_iD0ekJ50EeWRy9FpOq-8kw" name="base_Class" association="_iDxbQJ50EeWRy9FpOq-8kw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_iDxbQJ50EeWRy9FpOq-8kw" name="E_AlwaysPassiveJava_Class1" memberEnd="_iDz3gJ50EeWRy9FpOq-8kw _iD0ekJ50EeWRy9FpOq-8kw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_iDz3gJ50EeWRy9FpOq-8kw" name="extension_AlwaysPassiveJava" type="_S607oJ5zEeWRy9FpOq-8kw" aggregation="composite" association="_iDxbQJ50EeWRy9FpOq-8kw"/>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_EKPz8OG0EeOljYnPInggmQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EVNt0OG0EeOljYnPInggmQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/dsmlvalidation#/"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://DSMLValidation_PROFILES/PapyrusValidationRuleDSML.uml#__sUW0OhNEeCjcc2EgK3Uwg"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_euhykJ7IEeWu3Jt7boFR1Q">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eukO0J7IEeWu3Jt7boFR1Q" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Profile>
+ <PapyrusDSMLValidationRule:ValidationRule xmi:id="_HiHHoOG0EeOljYnPInggmQ" base_Constraint="_uHg9kOGoEeOLd684kqvD2g" message="Custom message"/>
+ <PapyrusDSMLValidationRule:ValidationRule xmi:id="_XnVHAJ5zEeWRy9FpOq-8kw" base_Constraint="_ROKlgJ5zEeWRy9FpOq-8kw" message="" class="JavaValidation"/>
+ <Ecore:EPackage xmi:id="_gWqOAJ7IEeWu3Jt7boFR1Q" base_Package="_GkQEIOGnEeO2stwZ2ZCXww" packageName="profile" nsURI="http://org.eclipse.papyrus/activetest/1" basePackage="org.eclipse.papyrus.validation.tests"/>
+</xmi:XMI>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/profile.ecore b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/profile.ecore
new file mode 100644
index 00000000000..6b8fee1f557
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/profile.ecore
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="profile" nsURI="http://org.eclipse.papyrus/activetest/1" nsPrefix="profile">
+ <eClassifiers xsi:type="ecore:EClass" name="AlwaysActive">
+ <eOperations name="ConstraintAlwaysActive" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/uml2/1.1.0/GenModel">
+ <details key="body" value="base_Class.isActive"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Tst">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Package" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Package"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AlwaysActiveMalformed">
+ <eOperations name="ConstraintAlwaysActiveMF" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/uml2/1.1.0/GenModel">
+ <details key="body" value="self.oclAsType(Class).isActive"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AlwaysPassiveJava">
+ <eOperations name="AlwaysPassive" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/uml2/1.1.0/GenModel">
+ <details key="body" value="return !self.getBase_Class().isActive();"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/profile.genmodel b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/profile.genmodel
new file mode 100644
index 00000000000..cea809bbb8f
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/profile.genmodel
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen"
+ modelPluginID="org.eclipse.papyrus.uml.validation.tests.staticprofile" modelName="Profile" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ testsDirectory="/org.eclipse.papyrus.uml.validation.tests.staticprofile.tests/src-gen" importerID="org.eclipse.emf.importer.ecore"
+ complianceLevel="6.0" copyrightFields="false" usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.uml2.types/model/Types.genmodel#//types ../../org.eclipse.uml2.uml/model/UML.genmodel#//uml"
+ operationReflection="true" importOrganizing="true">
+ <foreignModel>profile.ecore</foreignModel>
+ <genPackages prefix="Profile" disposableProviderFactory="true" ecorePackage="profile.ecore#/">
+ <genClasses ecoreClass="profile.ecore#//AlwaysActive">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference profile.ecore#//AlwaysActive/base_Class"/>
+ <genOperations ecoreOperation="profile.ecore#//AlwaysActive/ConstraintAlwaysActive">
+ <genParameters ecoreParameter="profile.ecore#//AlwaysActive/ConstraintAlwaysActive/diagnostics"/>
+ <genParameters ecoreParameter="profile.ecore#//AlwaysActive/ConstraintAlwaysActive/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="profile.ecore#//Tst">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference profile.ecore#//Tst/base_Package"/>
+ </genClasses>
+ <genClasses ecoreClass="profile.ecore#//AlwaysActiveMalformed">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference profile.ecore#//AlwaysActiveMalformed/base_Class"/>
+ <genOperations ecoreOperation="profile.ecore#//AlwaysActiveMalformed/ConstraintAlwaysActiveMF">
+ <genParameters ecoreParameter="profile.ecore#//AlwaysActiveMalformed/ConstraintAlwaysActiveMF/diagnostics"/>
+ <genParameters ecoreParameter="profile.ecore#//AlwaysActiveMalformed/ConstraintAlwaysActiveMF/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="profile.ecore#//AlwaysPassiveJava">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference profile.ecore#//AlwaysPassiveJava/base_Class"/>
+ <genOperations ecoreOperation="profile.ecore#//AlwaysPassiveJava/AlwaysPassive">
+ <genParameters ecoreParameter="profile.ecore#//AlwaysPassiveJava/AlwaysPassive/diagnostics"/>
+ <genParameters ecoreParameter="profile.ecore#//AlwaysPassiveJava/AlwaysPassive/context"/>
+ </genOperations>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/plugin.properties b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/plugin.properties
new file mode 100644
index 00000000000..0a5674b3c8d
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/plugin.properties
@@ -0,0 +1,13 @@
+################################################################################
+# Copyright (c) 2015 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Ansgar Radermacher (CEA LIST) ansgar.radermacher@cea.fr - initial API and implementation
+################################################################################
+pluginName=Static profile for Papyrus UML validation tests
+pluginProvider=Eclipse Modeling Project
+providerName = www.example.org
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/plugin.xml b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/plugin.xml
new file mode 100644
index 00000000000..19a6070416f
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/plugin.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated profile -->
+ <package
+ uri="http://org.eclipse.papyrus/activetest/1"
+ class="profile.ProfilePackage"
+ genModel="model/profile.genmodel"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.ecore.uri_mapping">
+ <mapping source="pathmap://ACTIVE_TEST_PROFILE/" target="platform:/plugin/org.eclipse.papyrus.uml.validation.tests.staticprofile/model/">
+ </mapping>
+ </extension>
+
+ <extension point="org.eclipse.uml2.uml.generated_package">
+ <profile
+ uri="http://org.eclipse.papyrus/activetest/1"
+ location="pathmap://ACTIVE_TEST_PROFILE/active.rule-in-plugin.profile.uml#_GkQEIOGnEeO2stwZ2ZCXww"/>
+ </extension>
+
+ <extension point="org.eclipse.papyrus.uml.extensionpoints.UMLProfile">
+ <profile
+ description="Active Test profile"
+ name="Active Test profile"
+ path="pathmap://ACTIVE_TEST_PROFILE/active.rule-in-plugin.profile.uml"
+ provider="CEA LIST"/>
+ </extension>
+
+</plugin>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/pom.xml b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/pom.xml
new file mode 100644
index 00000000000..7abdb98345d
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.tests.releng</artifactId>
+ <version>1.2.0-SNAPSHOT</version>
+ <relativePath>../../../../../../releng/main-tests</relativePath>
+ </parent>
+ <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.uml.validation.tests.staticprofile</artifactId>
+ <version>1.2.0-SNAPSHOT</version>
+ <packaging>eclipse-test-plugin</packaging>
+</project>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/AlwaysActive.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/AlwaysActive.java
new file mode 100644
index 00000000000..1dd3fe5c004
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/AlwaysActive.java
@@ -0,0 +1,66 @@
+/**
+ */
+package profile;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Always Active</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link profile.AlwaysActive#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @see profile.ProfilePackage#getAlwaysActive()
+ * @model
+ * @generated
+ */
+public interface AlwaysActive extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see profile.ProfilePackage#getAlwaysActive_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link profile.AlwaysActive#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * @param diagnostics The chain of diagnostics to which problems are to be appended.
+ * @param context The cache of context-specific information.
+ * <!-- end-model-doc -->
+ * @model annotation="http://www.eclipse.org/uml2/1.1.0/GenModel body='base_Class.isActive'"
+ * @generated
+ */
+ boolean ConstraintAlwaysActive(DiagnosticChain diagnostics, Map<Object, Object> context);
+
+} // AlwaysActive
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/AlwaysActiveMalformed.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/AlwaysActiveMalformed.java
new file mode 100644
index 00000000000..3c6c910e8a1
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/AlwaysActiveMalformed.java
@@ -0,0 +1,66 @@
+/**
+ */
+package profile;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Always Active Malformed</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link profile.AlwaysActiveMalformed#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @see profile.ProfilePackage#getAlwaysActiveMalformed()
+ * @model
+ * @generated
+ */
+public interface AlwaysActiveMalformed extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see profile.ProfilePackage#getAlwaysActiveMalformed_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link profile.AlwaysActiveMalformed#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * @param diagnostics The chain of diagnostics to which problems are to be appended.
+ * @param context The cache of context-specific information.
+ * <!-- end-model-doc -->
+ * @model annotation="http://www.eclipse.org/uml2/1.1.0/GenModel body='self.oclAsType(Class).isActive'"
+ * @generated
+ */
+ boolean ConstraintAlwaysActiveMF(DiagnosticChain diagnostics, Map<Object, Object> context);
+
+} // AlwaysActiveMalformed
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/AlwaysPassiveJava.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/AlwaysPassiveJava.java
new file mode 100644
index 00000000000..ed6af169604
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/AlwaysPassiveJava.java
@@ -0,0 +1,66 @@
+/**
+ */
+package profile;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Always Passive Java</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link profile.AlwaysPassiveJava#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @see profile.ProfilePackage#getAlwaysPassiveJava()
+ * @model
+ * @generated
+ */
+public interface AlwaysPassiveJava extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see profile.ProfilePackage#getAlwaysPassiveJava_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link profile.AlwaysPassiveJava#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * @param diagnostics The chain of diagnostics to which problems are to be appended.
+ * @param context The cache of context-specific information.
+ * <!-- end-model-doc -->
+ * @model annotation="http://www.eclipse.org/uml2/1.1.0/GenModel body='return !self.getBase_Class().isActive();'"
+ * @generated
+ */
+ boolean AlwaysPassive(DiagnosticChain diagnostics, Map<Object, Object> context);
+
+} // AlwaysPassiveJava
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/ProfileFactory.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/ProfileFactory.java
new file mode 100644
index 00000000000..4b4dd195497
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/ProfileFactory.java
@@ -0,0 +1,69 @@
+/**
+ */
+package profile;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see profile.ProfilePackage
+ * @generated
+ */
+public interface ProfileFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ProfileFactory eINSTANCE = profile.impl.ProfileFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Always Active</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Always Active</em>'.
+ * @generated
+ */
+ AlwaysActive createAlwaysActive();
+
+ /**
+ * Returns a new object of class '<em>Tst</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Tst</em>'.
+ * @generated
+ */
+ Tst createTst();
+
+ /**
+ * Returns a new object of class '<em>Always Active Malformed</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Always Active Malformed</em>'.
+ * @generated
+ */
+ AlwaysActiveMalformed createAlwaysActiveMalformed();
+
+ /**
+ * Returns a new object of class '<em>Always Passive Java</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Always Passive Java</em>'.
+ * @generated
+ */
+ AlwaysPassiveJava createAlwaysPassiveJava();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ ProfilePackage getProfilePackage();
+
+} //ProfileFactory
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/ProfilePackage.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/ProfilePackage.java
new file mode 100644
index 00000000000..eb547e71885
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/ProfilePackage.java
@@ -0,0 +1,470 @@
+/**
+ */
+package profile;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see profile.ProfileFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface ProfilePackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "profile";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://org.eclipse.papyrus/activetest/1";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "profile";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ProfilePackage eINSTANCE = profile.impl.ProfilePackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link profile.impl.AlwaysActiveImpl <em>Always Active</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see profile.impl.AlwaysActiveImpl
+ * @see profile.impl.ProfilePackageImpl#getAlwaysActive()
+ * @generated
+ */
+ int ALWAYS_ACTIVE = 0;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALWAYS_ACTIVE__BASE_CLASS = 0;
+
+ /**
+ * The number of structural features of the '<em>Always Active</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALWAYS_ACTIVE_FEATURE_COUNT = 1;
+
+ /**
+ * The operation id for the '<em>Constraint Always Active</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALWAYS_ACTIVE___CONSTRAINT_ALWAYS_ACTIVE__DIAGNOSTICCHAIN_MAP = 0;
+
+ /**
+ * The number of operations of the '<em>Always Active</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALWAYS_ACTIVE_OPERATION_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link profile.impl.TstImpl <em>Tst</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see profile.impl.TstImpl
+ * @see profile.impl.ProfilePackageImpl#getTst()
+ * @generated
+ */
+ int TST = 1;
+
+ /**
+ * The feature id for the '<em><b>Base Package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TST__BASE_PACKAGE = 0;
+
+ /**
+ * The number of structural features of the '<em>Tst</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TST_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Tst</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TST_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link profile.impl.AlwaysActiveMalformedImpl <em>Always Active Malformed</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see profile.impl.AlwaysActiveMalformedImpl
+ * @see profile.impl.ProfilePackageImpl#getAlwaysActiveMalformed()
+ * @generated
+ */
+ int ALWAYS_ACTIVE_MALFORMED = 2;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALWAYS_ACTIVE_MALFORMED__BASE_CLASS = 0;
+
+ /**
+ * The number of structural features of the '<em>Always Active Malformed</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALWAYS_ACTIVE_MALFORMED_FEATURE_COUNT = 1;
+
+ /**
+ * The operation id for the '<em>Constraint Always Active MF</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALWAYS_ACTIVE_MALFORMED___CONSTRAINT_ALWAYS_ACTIVE_MF__DIAGNOSTICCHAIN_MAP = 0;
+
+ /**
+ * The number of operations of the '<em>Always Active Malformed</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALWAYS_ACTIVE_MALFORMED_OPERATION_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link profile.impl.AlwaysPassiveJavaImpl <em>Always Passive Java</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see profile.impl.AlwaysPassiveJavaImpl
+ * @see profile.impl.ProfilePackageImpl#getAlwaysPassiveJava()
+ * @generated
+ */
+ int ALWAYS_PASSIVE_JAVA = 3;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALWAYS_PASSIVE_JAVA__BASE_CLASS = 0;
+
+ /**
+ * The number of structural features of the '<em>Always Passive Java</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALWAYS_PASSIVE_JAVA_FEATURE_COUNT = 1;
+
+ /**
+ * The operation id for the '<em>Always Passive</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALWAYS_PASSIVE_JAVA___ALWAYS_PASSIVE__DIAGNOSTICCHAIN_MAP = 0;
+
+ /**
+ * The number of operations of the '<em>Always Passive Java</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALWAYS_PASSIVE_JAVA_OPERATION_COUNT = 1;
+
+
+ /**
+ * Returns the meta object for class '{@link profile.AlwaysActive <em>Always Active</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Always Active</em>'.
+ * @see profile.AlwaysActive
+ * @generated
+ */
+ EClass getAlwaysActive();
+
+ /**
+ * Returns the meta object for the reference '{@link profile.AlwaysActive#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see profile.AlwaysActive#getBase_Class()
+ * @see #getAlwaysActive()
+ * @generated
+ */
+ EReference getAlwaysActive_Base_Class();
+
+ /**
+ * Returns the meta object for the '{@link profile.AlwaysActive#ConstraintAlwaysActive(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map) <em>Constraint Always Active</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Constraint Always Active</em>' operation.
+ * @see profile.AlwaysActive#ConstraintAlwaysActive(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
+ * @generated
+ */
+ EOperation getAlwaysActive__ConstraintAlwaysActive__DiagnosticChain_Map();
+
+ /**
+ * Returns the meta object for class '{@link profile.Tst <em>Tst</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Tst</em>'.
+ * @see profile.Tst
+ * @generated
+ */
+ EClass getTst();
+
+ /**
+ * Returns the meta object for the reference '{@link profile.Tst#getBase_Package <em>Base Package</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Package</em>'.
+ * @see profile.Tst#getBase_Package()
+ * @see #getTst()
+ * @generated
+ */
+ EReference getTst_Base_Package();
+
+ /**
+ * Returns the meta object for class '{@link profile.AlwaysActiveMalformed <em>Always Active Malformed</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Always Active Malformed</em>'.
+ * @see profile.AlwaysActiveMalformed
+ * @generated
+ */
+ EClass getAlwaysActiveMalformed();
+
+ /**
+ * Returns the meta object for the reference '{@link profile.AlwaysActiveMalformed#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see profile.AlwaysActiveMalformed#getBase_Class()
+ * @see #getAlwaysActiveMalformed()
+ * @generated
+ */
+ EReference getAlwaysActiveMalformed_Base_Class();
+
+ /**
+ * Returns the meta object for the '{@link profile.AlwaysActiveMalformed#ConstraintAlwaysActiveMF(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map) <em>Constraint Always Active MF</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Constraint Always Active MF</em>' operation.
+ * @see profile.AlwaysActiveMalformed#ConstraintAlwaysActiveMF(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
+ * @generated
+ */
+ EOperation getAlwaysActiveMalformed__ConstraintAlwaysActiveMF__DiagnosticChain_Map();
+
+ /**
+ * Returns the meta object for class '{@link profile.AlwaysPassiveJava <em>Always Passive Java</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Always Passive Java</em>'.
+ * @see profile.AlwaysPassiveJava
+ * @generated
+ */
+ EClass getAlwaysPassiveJava();
+
+ /**
+ * Returns the meta object for the reference '{@link profile.AlwaysPassiveJava#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see profile.AlwaysPassiveJava#getBase_Class()
+ * @see #getAlwaysPassiveJava()
+ * @generated
+ */
+ EReference getAlwaysPassiveJava_Base_Class();
+
+ /**
+ * Returns the meta object for the '{@link profile.AlwaysPassiveJava#AlwaysPassive(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map) <em>Always Passive</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Always Passive</em>' operation.
+ * @see profile.AlwaysPassiveJava#AlwaysPassive(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
+ * @generated
+ */
+ EOperation getAlwaysPassiveJava__AlwaysPassive__DiagnosticChain_Map();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ ProfileFactory getProfileFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link profile.impl.AlwaysActiveImpl <em>Always Active</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see profile.impl.AlwaysActiveImpl
+ * @see profile.impl.ProfilePackageImpl#getAlwaysActive()
+ * @generated
+ */
+ EClass ALWAYS_ACTIVE = eINSTANCE.getAlwaysActive();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ALWAYS_ACTIVE__BASE_CLASS = eINSTANCE.getAlwaysActive_Base_Class();
+
+ /**
+ * The meta object literal for the '<em><b>Constraint Always Active</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation ALWAYS_ACTIVE___CONSTRAINT_ALWAYS_ACTIVE__DIAGNOSTICCHAIN_MAP = eINSTANCE.getAlwaysActive__ConstraintAlwaysActive__DiagnosticChain_Map();
+
+ /**
+ * The meta object literal for the '{@link profile.impl.TstImpl <em>Tst</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see profile.impl.TstImpl
+ * @see profile.impl.ProfilePackageImpl#getTst()
+ * @generated
+ */
+ EClass TST = eINSTANCE.getTst();
+
+ /**
+ * The meta object literal for the '<em><b>Base Package</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TST__BASE_PACKAGE = eINSTANCE.getTst_Base_Package();
+
+ /**
+ * The meta object literal for the '{@link profile.impl.AlwaysActiveMalformedImpl <em>Always Active Malformed</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see profile.impl.AlwaysActiveMalformedImpl
+ * @see profile.impl.ProfilePackageImpl#getAlwaysActiveMalformed()
+ * @generated
+ */
+ EClass ALWAYS_ACTIVE_MALFORMED = eINSTANCE.getAlwaysActiveMalformed();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ALWAYS_ACTIVE_MALFORMED__BASE_CLASS = eINSTANCE.getAlwaysActiveMalformed_Base_Class();
+
+ /**
+ * The meta object literal for the '<em><b>Constraint Always Active MF</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation ALWAYS_ACTIVE_MALFORMED___CONSTRAINT_ALWAYS_ACTIVE_MF__DIAGNOSTICCHAIN_MAP = eINSTANCE.getAlwaysActiveMalformed__ConstraintAlwaysActiveMF__DiagnosticChain_Map();
+
+ /**
+ * The meta object literal for the '{@link profile.impl.AlwaysPassiveJavaImpl <em>Always Passive Java</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see profile.impl.AlwaysPassiveJavaImpl
+ * @see profile.impl.ProfilePackageImpl#getAlwaysPassiveJava()
+ * @generated
+ */
+ EClass ALWAYS_PASSIVE_JAVA = eINSTANCE.getAlwaysPassiveJava();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ALWAYS_PASSIVE_JAVA__BASE_CLASS = eINSTANCE.getAlwaysPassiveJava_Base_Class();
+
+ /**
+ * The meta object literal for the '<em><b>Always Passive</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation ALWAYS_PASSIVE_JAVA___ALWAYS_PASSIVE__DIAGNOSTICCHAIN_MAP = eINSTANCE.getAlwaysPassiveJava__AlwaysPassive__DiagnosticChain_Map();
+
+ }
+
+} //ProfilePackage
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/Tst.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/Tst.java
new file mode 100644
index 00000000000..649f133bc7d
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/Tst.java
@@ -0,0 +1,50 @@
+/**
+ */
+package profile;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Tst</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link profile.Tst#getBase_Package <em>Base Package</em>}</li>
+ * </ul>
+ *
+ * @see profile.ProfilePackage#getTst()
+ * @model
+ * @generated
+ */
+public interface Tst extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Package</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Package</em>' reference.
+ * @see #setBase_Package(org.eclipse.uml2.uml.Package)
+ * @see profile.ProfilePackage#getTst_Base_Package()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Package getBase_Package();
+
+ /**
+ * Sets the value of the '{@link profile.Tst#getBase_Package <em>Base Package</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Package</em>' reference.
+ * @see #getBase_Package()
+ * @generated
+ */
+ void setBase_Package(org.eclipse.uml2.uml.Package value);
+
+} // Tst
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/AlwaysActiveImpl.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/AlwaysActiveImpl.java
new file mode 100644
index 00000000000..88801aa6be5
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/AlwaysActiveImpl.java
@@ -0,0 +1,211 @@
+/**
+ */
+package profile.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.emf.ecore.util.EObjectValidator;
+
+import profile.AlwaysActive;
+import profile.ProfilePackage;
+
+import profile.util.ProfileValidator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Always Active</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link profile.impl.AlwaysActiveImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class AlwaysActiveImpl extends MinimalEObjectImpl.Container implements AlwaysActive {
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AlwaysActiveImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ProfilePackage.Literals.ALWAYS_ACTIVE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProfilePackage.ALWAYS_ACTIVE__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ProfilePackage.ALWAYS_ACTIVE__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean ConstraintAlwaysActive(DiagnosticChain diagnostics, Map<Object, Object> context) {
+ // TODO: implement this method
+ // -> specify the condition that violates the invariant
+ // -> verify the details of the diagnostic, including severity and message
+ // Ensure that you remove @generated or mark it @generated NOT
+ if (false) {
+ if (diagnostics != null) {
+ diagnostics.add
+ (new BasicDiagnostic
+ (Diagnostic.ERROR,
+ ProfileValidator.DIAGNOSTIC_SOURCE,
+ ProfileValidator.ALWAYS_ACTIVE__CONSTRAINT_ALWAYS_ACTIVE,
+ EcorePlugin.INSTANCE.getString("_UI_GenericInvariant_diagnostic", new Object[] { "ConstraintAlwaysActive", EObjectValidator.getObjectLabel(this, context) }),
+ new Object [] { this }));
+ }
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ProfilePackage.ALWAYS_ACTIVE__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ProfilePackage.ALWAYS_ACTIVE__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ProfilePackage.ALWAYS_ACTIVE__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ProfilePackage.ALWAYS_ACTIVE__BASE_CLASS:
+ return base_Class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case ProfilePackage.ALWAYS_ACTIVE___CONSTRAINT_ALWAYS_ACTIVE__DIAGNOSTICCHAIN_MAP:
+ return ConstraintAlwaysActive((DiagnosticChain)arguments.get(0), (Map<Object, Object>)arguments.get(1));
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+} //AlwaysActiveImpl
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/AlwaysActiveMalformedImpl.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/AlwaysActiveMalformedImpl.java
new file mode 100644
index 00000000000..fed412d4214
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/AlwaysActiveMalformedImpl.java
@@ -0,0 +1,211 @@
+/**
+ */
+package profile.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.emf.ecore.util.EObjectValidator;
+
+import profile.AlwaysActiveMalformed;
+import profile.ProfilePackage;
+
+import profile.util.ProfileValidator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Always Active Malformed</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link profile.impl.AlwaysActiveMalformedImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class AlwaysActiveMalformedImpl extends MinimalEObjectImpl.Container implements AlwaysActiveMalformed {
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AlwaysActiveMalformedImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ProfilePackage.Literals.ALWAYS_ACTIVE_MALFORMED;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProfilePackage.ALWAYS_ACTIVE_MALFORMED__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ProfilePackage.ALWAYS_ACTIVE_MALFORMED__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean ConstraintAlwaysActiveMF(DiagnosticChain diagnostics, Map<Object, Object> context) {
+ // TODO: implement this method
+ // -> specify the condition that violates the invariant
+ // -> verify the details of the diagnostic, including severity and message
+ // Ensure that you remove @generated or mark it @generated NOT
+ if (false) {
+ if (diagnostics != null) {
+ diagnostics.add
+ (new BasicDiagnostic
+ (Diagnostic.ERROR,
+ ProfileValidator.DIAGNOSTIC_SOURCE,
+ ProfileValidator.ALWAYS_ACTIVE_MALFORMED__CONSTRAINT_ALWAYS_ACTIVE_MF,
+ EcorePlugin.INSTANCE.getString("_UI_GenericInvariant_diagnostic", new Object[] { "ConstraintAlwaysActiveMF", EObjectValidator.getObjectLabel(this, context) }),
+ new Object [] { this }));
+ }
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ProfilePackage.ALWAYS_ACTIVE_MALFORMED__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ProfilePackage.ALWAYS_ACTIVE_MALFORMED__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ProfilePackage.ALWAYS_ACTIVE_MALFORMED__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ProfilePackage.ALWAYS_ACTIVE_MALFORMED__BASE_CLASS:
+ return base_Class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case ProfilePackage.ALWAYS_ACTIVE_MALFORMED___CONSTRAINT_ALWAYS_ACTIVE_MF__DIAGNOSTICCHAIN_MAP:
+ return ConstraintAlwaysActiveMF((DiagnosticChain)arguments.get(0), (Map<Object, Object>)arguments.get(1));
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+} //AlwaysActiveMalformedImpl
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/AlwaysPassiveJavaImpl.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/AlwaysPassiveJavaImpl.java
new file mode 100644
index 00000000000..11471ee8745
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/AlwaysPassiveJavaImpl.java
@@ -0,0 +1,211 @@
+/**
+ */
+package profile.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.emf.ecore.util.EObjectValidator;
+
+import profile.AlwaysPassiveJava;
+import profile.ProfilePackage;
+
+import profile.util.ProfileValidator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Always Passive Java</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link profile.impl.AlwaysPassiveJavaImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class AlwaysPassiveJavaImpl extends MinimalEObjectImpl.Container implements AlwaysPassiveJava {
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AlwaysPassiveJavaImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ProfilePackage.Literals.ALWAYS_PASSIVE_JAVA;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProfilePackage.ALWAYS_PASSIVE_JAVA__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ProfilePackage.ALWAYS_PASSIVE_JAVA__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean AlwaysPassive(DiagnosticChain diagnostics, Map<Object, Object> context) {
+ // TODO: implement this method
+ // -> specify the condition that violates the invariant
+ // -> verify the details of the diagnostic, including severity and message
+ // Ensure that you remove @generated or mark it @generated NOT
+ if (false) {
+ if (diagnostics != null) {
+ diagnostics.add
+ (new BasicDiagnostic
+ (Diagnostic.ERROR,
+ ProfileValidator.DIAGNOSTIC_SOURCE,
+ ProfileValidator.ALWAYS_PASSIVE_JAVA__ALWAYS_PASSIVE,
+ EcorePlugin.INSTANCE.getString("_UI_GenericInvariant_diagnostic", new Object[] { "AlwaysPassive", EObjectValidator.getObjectLabel(this, context) }),
+ new Object [] { this }));
+ }
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ProfilePackage.ALWAYS_PASSIVE_JAVA__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ProfilePackage.ALWAYS_PASSIVE_JAVA__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ProfilePackage.ALWAYS_PASSIVE_JAVA__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ProfilePackage.ALWAYS_PASSIVE_JAVA__BASE_CLASS:
+ return base_Class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case ProfilePackage.ALWAYS_PASSIVE_JAVA___ALWAYS_PASSIVE__DIAGNOSTICCHAIN_MAP:
+ return AlwaysPassive((DiagnosticChain)arguments.get(0), (Map<Object, Object>)arguments.get(1));
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+} //AlwaysPassiveJavaImpl
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/ProfileFactoryImpl.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/ProfileFactoryImpl.java
new file mode 100644
index 00000000000..d28d40292f6
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/ProfileFactoryImpl.java
@@ -0,0 +1,128 @@
+/**
+ */
+package profile.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import profile.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ProfileFactoryImpl extends EFactoryImpl implements ProfileFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ProfileFactory init() {
+ try {
+ ProfileFactory theProfileFactory = (ProfileFactory)EPackage.Registry.INSTANCE.getEFactory(ProfilePackage.eNS_URI);
+ if (theProfileFactory != null) {
+ return theProfileFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new ProfileFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProfileFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case ProfilePackage.ALWAYS_ACTIVE: return createAlwaysActive();
+ case ProfilePackage.TST: return createTst();
+ case ProfilePackage.ALWAYS_ACTIVE_MALFORMED: return createAlwaysActiveMalformed();
+ case ProfilePackage.ALWAYS_PASSIVE_JAVA: return createAlwaysPassiveJava();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AlwaysActive createAlwaysActive() {
+ AlwaysActiveImpl alwaysActive = new AlwaysActiveImpl();
+ return alwaysActive;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Tst createTst() {
+ TstImpl tst = new TstImpl();
+ return tst;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AlwaysActiveMalformed createAlwaysActiveMalformed() {
+ AlwaysActiveMalformedImpl alwaysActiveMalformed = new AlwaysActiveMalformedImpl();
+ return alwaysActiveMalformed;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AlwaysPassiveJava createAlwaysPassiveJava() {
+ AlwaysPassiveJavaImpl alwaysPassiveJava = new AlwaysPassiveJavaImpl();
+ return alwaysPassiveJava;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProfilePackage getProfilePackage() {
+ return (ProfilePackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static ProfilePackage getPackage() {
+ return ProfilePackage.eINSTANCE;
+ }
+
+} //ProfileFactoryImpl
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/ProfilePackageImpl.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/ProfilePackageImpl.java
new file mode 100644
index 00000000000..7919f616184
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/ProfilePackageImpl.java
@@ -0,0 +1,384 @@
+/**
+ */
+package profile.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EGenericType;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EValidator;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+import profile.AlwaysActive;
+import profile.AlwaysActiveMalformed;
+import profile.AlwaysPassiveJava;
+import profile.ProfileFactory;
+import profile.ProfilePackage;
+import profile.Tst;
+
+import profile.util.ProfileValidator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ProfilePackageImpl extends EPackageImpl implements ProfilePackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass alwaysActiveEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass tstEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass alwaysActiveMalformedEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass alwaysPassiveJavaEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see profile.ProfilePackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private ProfilePackageImpl() {
+ super(eNS_URI, ProfileFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link ProfilePackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static ProfilePackage init() {
+ if (isInited) return (ProfilePackage)EPackage.Registry.INSTANCE.getEPackage(ProfilePackage.eNS_URI);
+
+ // Obtain or create and register package
+ ProfilePackageImpl theProfilePackage = (ProfilePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ProfilePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ProfilePackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ UMLPackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theProfilePackage.createPackageContents();
+
+ // Initialize created meta-data
+ theProfilePackage.initializePackageContents();
+
+ // Register package validator
+ EValidator.Registry.INSTANCE.put
+ (theProfilePackage,
+ new EValidator.Descriptor() {
+ public EValidator getEValidator() {
+ return ProfileValidator.INSTANCE;
+ }
+ });
+
+ // Mark meta-data to indicate it can't be changed
+ theProfilePackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(ProfilePackage.eNS_URI, theProfilePackage);
+ return theProfilePackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAlwaysActive() {
+ return alwaysActiveEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAlwaysActive_Base_Class() {
+ return (EReference)alwaysActiveEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getAlwaysActive__ConstraintAlwaysActive__DiagnosticChain_Map() {
+ return alwaysActiveEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTst() {
+ return tstEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTst_Base_Package() {
+ return (EReference)tstEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAlwaysActiveMalformed() {
+ return alwaysActiveMalformedEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAlwaysActiveMalformed_Base_Class() {
+ return (EReference)alwaysActiveMalformedEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getAlwaysActiveMalformed__ConstraintAlwaysActiveMF__DiagnosticChain_Map() {
+ return alwaysActiveMalformedEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAlwaysPassiveJava() {
+ return alwaysPassiveJavaEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAlwaysPassiveJava_Base_Class() {
+ return (EReference)alwaysPassiveJavaEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getAlwaysPassiveJava__AlwaysPassive__DiagnosticChain_Map() {
+ return alwaysPassiveJavaEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProfileFactory getProfileFactory() {
+ return (ProfileFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ alwaysActiveEClass = createEClass(ALWAYS_ACTIVE);
+ createEReference(alwaysActiveEClass, ALWAYS_ACTIVE__BASE_CLASS);
+ createEOperation(alwaysActiveEClass, ALWAYS_ACTIVE___CONSTRAINT_ALWAYS_ACTIVE__DIAGNOSTICCHAIN_MAP);
+
+ tstEClass = createEClass(TST);
+ createEReference(tstEClass, TST__BASE_PACKAGE);
+
+ alwaysActiveMalformedEClass = createEClass(ALWAYS_ACTIVE_MALFORMED);
+ createEReference(alwaysActiveMalformedEClass, ALWAYS_ACTIVE_MALFORMED__BASE_CLASS);
+ createEOperation(alwaysActiveMalformedEClass, ALWAYS_ACTIVE_MALFORMED___CONSTRAINT_ALWAYS_ACTIVE_MF__DIAGNOSTICCHAIN_MAP);
+
+ alwaysPassiveJavaEClass = createEClass(ALWAYS_PASSIVE_JAVA);
+ createEReference(alwaysPassiveJavaEClass, ALWAYS_PASSIVE_JAVA__BASE_CLASS);
+ createEOperation(alwaysPassiveJavaEClass, ALWAYS_PASSIVE_JAVA___ALWAYS_PASSIVE__DIAGNOSTICCHAIN_MAP);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ UMLPackage theUMLPackage = (UMLPackage)EPackage.Registry.INSTANCE.getEPackage(UMLPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(alwaysActiveEClass, AlwaysActive.class, "AlwaysActive", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getAlwaysActive_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, AlwaysActive.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ EOperation op = initEOperation(getAlwaysActive__ConstraintAlwaysActive__DiagnosticChain_Map(), ecorePackage.getEBoolean(), "ConstraintAlwaysActive", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, IS_UNIQUE, IS_ORDERED);
+ EGenericType g1 = createEGenericType(ecorePackage.getEMap());
+ EGenericType g2 = createEGenericType(ecorePackage.getEJavaObject());
+ g1.getETypeArguments().add(g2);
+ g2 = createEGenericType(ecorePackage.getEJavaObject());
+ g1.getETypeArguments().add(g2);
+ addEParameter(op, g1, "context", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(tstEClass, Tst.class, "Tst", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTst_Base_Package(), theUMLPackage.getPackage(), null, "base_Package", null, 1, 1, Tst.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(alwaysActiveMalformedEClass, AlwaysActiveMalformed.class, "AlwaysActiveMalformed", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getAlwaysActiveMalformed_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, AlwaysActiveMalformed.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ op = initEOperation(getAlwaysActiveMalformed__ConstraintAlwaysActiveMF__DiagnosticChain_Map(), ecorePackage.getEBoolean(), "ConstraintAlwaysActiveMF", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, IS_UNIQUE, IS_ORDERED);
+ g1 = createEGenericType(ecorePackage.getEMap());
+ g2 = createEGenericType(ecorePackage.getEJavaObject());
+ g1.getETypeArguments().add(g2);
+ g2 = createEGenericType(ecorePackage.getEJavaObject());
+ g1.getETypeArguments().add(g2);
+ addEParameter(op, g1, "context", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(alwaysPassiveJavaEClass, AlwaysPassiveJava.class, "AlwaysPassiveJava", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getAlwaysPassiveJava_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, AlwaysPassiveJava.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ op = initEOperation(getAlwaysPassiveJava__AlwaysPassive__DiagnosticChain_Map(), ecorePackage.getEBoolean(), "AlwaysPassive", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, IS_UNIQUE, IS_ORDERED);
+ g1 = createEGenericType(ecorePackage.getEMap());
+ g2 = createEGenericType(ecorePackage.getEJavaObject());
+ g1.getETypeArguments().add(g2);
+ g2 = createEGenericType(ecorePackage.getEJavaObject());
+ g1.getETypeArguments().add(g2);
+ addEParameter(op, g1, "context", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+
+ // Create annotations
+ // http://www.eclipse.org/uml2/1.1.0/GenModel
+ createGenModelAnnotations();
+ }
+
+ /**
+ * Initializes the annotations for <b>http://www.eclipse.org/uml2/1.1.0/GenModel</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createGenModelAnnotations() {
+ String source = "http://www.eclipse.org/uml2/1.1.0/GenModel";
+ addAnnotation
+ (getAlwaysActive__ConstraintAlwaysActive__DiagnosticChain_Map(),
+ source,
+ new String[] {
+ "body", "base_Class.isActive"
+ });
+ addAnnotation
+ (getAlwaysActiveMalformed__ConstraintAlwaysActiveMF__DiagnosticChain_Map(),
+ source,
+ new String[] {
+ "body", "self.oclAsType(Class).isActive"
+ });
+ addAnnotation
+ (getAlwaysPassiveJava__AlwaysPassive__DiagnosticChain_Map(),
+ source,
+ new String[] {
+ "body", "return !self.getBase_Class().isActive();"
+ });
+ }
+
+} //ProfilePackageImpl
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/TstImpl.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/TstImpl.java
new file mode 100644
index 00000000000..5b39987d73c
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/impl/TstImpl.java
@@ -0,0 +1,156 @@
+/**
+ */
+package profile.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import profile.ProfilePackage;
+import profile.Tst;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Tst</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link profile.impl.TstImpl#getBase_Package <em>Base Package</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TstImpl extends MinimalEObjectImpl.Container implements Tst {
+ /**
+ * The cached value of the '{@link #getBase_Package() <em>Base Package</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Package()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Package base_Package;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TstImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ProfilePackage.Literals.TST;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Package getBase_Package() {
+ if (base_Package != null && base_Package.eIsProxy()) {
+ InternalEObject oldBase_Package = (InternalEObject)base_Package;
+ base_Package = (org.eclipse.uml2.uml.Package)eResolveProxy(oldBase_Package);
+ if (base_Package != oldBase_Package) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProfilePackage.TST__BASE_PACKAGE, oldBase_Package, base_Package));
+ }
+ }
+ return base_Package;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Package basicGetBase_Package() {
+ return base_Package;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Package(org.eclipse.uml2.uml.Package newBase_Package) {
+ org.eclipse.uml2.uml.Package oldBase_Package = base_Package;
+ base_Package = newBase_Package;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ProfilePackage.TST__BASE_PACKAGE, oldBase_Package, base_Package));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ProfilePackage.TST__BASE_PACKAGE:
+ if (resolve) return getBase_Package();
+ return basicGetBase_Package();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ProfilePackage.TST__BASE_PACKAGE:
+ setBase_Package((org.eclipse.uml2.uml.Package)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ProfilePackage.TST__BASE_PACKAGE:
+ setBase_Package((org.eclipse.uml2.uml.Package)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ProfilePackage.TST__BASE_PACKAGE:
+ return base_Package != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //TstImpl
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/util/ProfileAdapterFactory.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/util/ProfileAdapterFactory.java
new file mode 100644
index 00000000000..2f4c9374d6f
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/util/ProfileAdapterFactory.java
@@ -0,0 +1,174 @@
+/**
+ */
+package profile.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import profile.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see profile.ProfilePackage
+ * @generated
+ */
+public class ProfileAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static ProfilePackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProfileAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = ProfilePackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ProfileSwitch<Adapter> modelSwitch =
+ new ProfileSwitch<Adapter>() {
+ @Override
+ public Adapter caseAlwaysActive(AlwaysActive object) {
+ return createAlwaysActiveAdapter();
+ }
+ @Override
+ public Adapter caseTst(Tst object) {
+ return createTstAdapter();
+ }
+ @Override
+ public Adapter caseAlwaysActiveMalformed(AlwaysActiveMalformed object) {
+ return createAlwaysActiveMalformedAdapter();
+ }
+ @Override
+ public Adapter caseAlwaysPassiveJava(AlwaysPassiveJava object) {
+ return createAlwaysPassiveJavaAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link profile.AlwaysActive <em>Always Active</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see profile.AlwaysActive
+ * @generated
+ */
+ public Adapter createAlwaysActiveAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link profile.Tst <em>Tst</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see profile.Tst
+ * @generated
+ */
+ public Adapter createTstAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link profile.AlwaysActiveMalformed <em>Always Active Malformed</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see profile.AlwaysActiveMalformed
+ * @generated
+ */
+ public Adapter createAlwaysActiveMalformedAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link profile.AlwaysPassiveJava <em>Always Passive Java</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see profile.AlwaysPassiveJava
+ * @generated
+ */
+ public Adapter createAlwaysPassiveJavaAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //ProfileAdapterFactory
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/util/ProfileSwitch.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/util/ProfileSwitch.java
new file mode 100644
index 00000000000..2eab23ad54b
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/util/ProfileSwitch.java
@@ -0,0 +1,173 @@
+/**
+ */
+package profile.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import profile.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see profile.ProfilePackage
+ * @generated
+ */
+public class ProfileSwitch<T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static ProfilePackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProfileSwitch() {
+ if (modelPackage == null) {
+ modelPackage = ProfilePackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case ProfilePackage.ALWAYS_ACTIVE: {
+ AlwaysActive alwaysActive = (AlwaysActive)theEObject;
+ T result = caseAlwaysActive(alwaysActive);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ProfilePackage.TST: {
+ Tst tst = (Tst)theEObject;
+ T result = caseTst(tst);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ProfilePackage.ALWAYS_ACTIVE_MALFORMED: {
+ AlwaysActiveMalformed alwaysActiveMalformed = (AlwaysActiveMalformed)theEObject;
+ T result = caseAlwaysActiveMalformed(alwaysActiveMalformed);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ProfilePackage.ALWAYS_PASSIVE_JAVA: {
+ AlwaysPassiveJava alwaysPassiveJava = (AlwaysPassiveJava)theEObject;
+ T result = caseAlwaysPassiveJava(alwaysPassiveJava);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Always Active</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Always Active</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAlwaysActive(AlwaysActive object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Tst</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Tst</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTst(Tst object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Always Active Malformed</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Always Active Malformed</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAlwaysActiveMalformed(AlwaysActiveMalformed object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Always Passive Java</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Always Passive Java</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAlwaysPassiveJava(AlwaysPassiveJava object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //ProfileSwitch
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/util/ProfileValidator.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/util/ProfileValidator.java
new file mode 100644
index 00000000000..e7cd93c5d18
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src-gen/profile/util/ProfileValidator.java
@@ -0,0 +1,235 @@
+/**
+ */
+package profile.util;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.EObjectValidator;
+
+import profile.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Validator</b> for the model.
+ * <!-- end-user-doc -->
+ * @see profile.ProfilePackage
+ * @generated
+ */
+public class ProfileValidator extends EObjectValidator {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final ProfileValidator INSTANCE = new ProfileValidator();
+
+ /**
+ * A constant for the {@link org.eclipse.emf.common.util.Diagnostic#getSource() source} of diagnostic {@link org.eclipse.emf.common.util.Diagnostic#getCode() codes} from this package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.common.util.Diagnostic#getSource()
+ * @see org.eclipse.emf.common.util.Diagnostic#getCode()
+ * @generated
+ */
+ public static final String DIAGNOSTIC_SOURCE = "profile";
+
+ /**
+ * The {@link org.eclipse.emf.common.util.Diagnostic#getCode() code} for constraint 'Constraint Always Active' of 'Always Active'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final int ALWAYS_ACTIVE__CONSTRAINT_ALWAYS_ACTIVE = 1;
+
+ /**
+ * The {@link org.eclipse.emf.common.util.Diagnostic#getCode() code} for constraint 'Constraint Always Active MF' of 'Always Active Malformed'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final int ALWAYS_ACTIVE_MALFORMED__CONSTRAINT_ALWAYS_ACTIVE_MF = 2;
+
+ /**
+ * The {@link org.eclipse.emf.common.util.Diagnostic#getCode() code} for constraint 'Always Passive' of 'Always Passive Java'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final int ALWAYS_PASSIVE_JAVA__ALWAYS_PASSIVE = 3;
+
+ /**
+ * A constant with a fixed name that can be used as the base value for additional hand written constants.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 3;
+
+ /**
+ * A constant with a fixed name that can be used as the base value for additional hand written constants in a derived class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static final int DIAGNOSTIC_CODE_COUNT = GENERATED_DIAGNOSTIC_CODE_COUNT;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProfileValidator() {
+ super();
+ }
+
+ /**
+ * Returns the package of this validator switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EPackage getEPackage() {
+ return ProfilePackage.eINSTANCE;
+ }
+
+ /**
+ * Calls <code>validateXXX</code> for the corresponding classifier of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected boolean validate(int classifierID, Object value, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ switch (classifierID) {
+ case ProfilePackage.ALWAYS_ACTIVE:
+ return validateAlwaysActive((AlwaysActive)value, diagnostics, context);
+ case ProfilePackage.TST:
+ return validateTst((Tst)value, diagnostics, context);
+ case ProfilePackage.ALWAYS_ACTIVE_MALFORMED:
+ return validateAlwaysActiveMalformed((AlwaysActiveMalformed)value, diagnostics, context);
+ case ProfilePackage.ALWAYS_PASSIVE_JAVA:
+ return validateAlwaysPassiveJava((AlwaysPassiveJava)value, diagnostics, context);
+ default:
+ return true;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateAlwaysActive(AlwaysActive alwaysActive, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ if (!validate_NoCircularContainment(alwaysActive, diagnostics, context)) return false;
+ boolean result = validate_EveryMultiplicityConforms(alwaysActive, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryDataValueConforms(alwaysActive, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(alwaysActive, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(alwaysActive, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryProxyResolves(alwaysActive, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_UniqueID(alwaysActive, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryKeyUnique(alwaysActive, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(alwaysActive, diagnostics, context);
+ if (result || diagnostics != null) result &= validateAlwaysActive_ConstraintAlwaysActive(alwaysActive, diagnostics, context);
+ return result;
+ }
+
+ /**
+ * Validates the ConstraintAlwaysActive constraint of '<em>Always Active</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateAlwaysActive_ConstraintAlwaysActive(AlwaysActive alwaysActive, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return alwaysActive.ConstraintAlwaysActive(diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateTst(Tst tst, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validate_EveryDefaultConstraint(tst, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateAlwaysActiveMalformed(AlwaysActiveMalformed alwaysActiveMalformed, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ if (!validate_NoCircularContainment(alwaysActiveMalformed, diagnostics, context)) return false;
+ boolean result = validate_EveryMultiplicityConforms(alwaysActiveMalformed, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryDataValueConforms(alwaysActiveMalformed, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(alwaysActiveMalformed, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(alwaysActiveMalformed, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryProxyResolves(alwaysActiveMalformed, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_UniqueID(alwaysActiveMalformed, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryKeyUnique(alwaysActiveMalformed, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(alwaysActiveMalformed, diagnostics, context);
+ if (result || diagnostics != null) result &= validateAlwaysActiveMalformed_ConstraintAlwaysActiveMF(alwaysActiveMalformed, diagnostics, context);
+ return result;
+ }
+
+ /**
+ * Validates the ConstraintAlwaysActiveMF constraint of '<em>Always Active Malformed</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateAlwaysActiveMalformed_ConstraintAlwaysActiveMF(AlwaysActiveMalformed alwaysActiveMalformed, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return alwaysActiveMalformed.ConstraintAlwaysActiveMF(diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateAlwaysPassiveJava(AlwaysPassiveJava alwaysPassiveJava, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ if (!validate_NoCircularContainment(alwaysPassiveJava, diagnostics, context)) return false;
+ boolean result = validate_EveryMultiplicityConforms(alwaysPassiveJava, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryDataValueConforms(alwaysPassiveJava, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(alwaysPassiveJava, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(alwaysPassiveJava, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryProxyResolves(alwaysPassiveJava, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_UniqueID(alwaysPassiveJava, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryKeyUnique(alwaysPassiveJava, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(alwaysPassiveJava, diagnostics, context);
+ if (result || diagnostics != null) result &= validateAlwaysPassiveJava_AlwaysPassive(alwaysPassiveJava, diagnostics, context);
+ return result;
+ }
+
+ /**
+ * Validates the AlwaysPassive constraint of '<em>Always Passive Java</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateAlwaysPassiveJava_AlwaysPassive(AlwaysPassiveJava alwaysPassiveJava, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return alwaysPassiveJava.AlwaysPassive(diagnostics, context);
+ }
+
+ /**
+ * Returns the resource locator that will be used to fetch messages for this validator's diagnostics.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ // TODO
+ // Specialize this to return a resource locator for messages specific to this validator.
+ // Ensure that you remove @generated or mark it @generated NOT
+ return super.getResourceLocator();
+ }
+
+} //ProfileValidator
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src/org/eclipse/papyrus/uml/validation/tests/staticprofile/Activator.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src/org/eclipse/papyrus/uml/validation/tests/staticprofile/Activator.java
new file mode 100644
index 00000000000..982fd2e175d
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests.staticprofile/src/org/eclipse/papyrus/uml/validation/tests/staticprofile/Activator.java
@@ -0,0 +1,50 @@
+package org.eclipse.papyrus.uml.validation.tests.staticprofile;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.uml.validation.tests.staticprofile"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/.classpath b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/.classpath
new file mode 100644
index 00000000000..ad32c83a788
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/.project b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/.project
new file mode 100644
index 00000000000..baf5b5828b9
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.uml.validation.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/.settings/org.eclipse.jdt.core.prefs b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..410244d65a6
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,291 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=260
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=260
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=5
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/.settings/org.eclipse.jdt.ui.prefs b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..954281dbc31
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=false
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_type_arguments=false
+cleanup_profile=_Papyrus
+cleanup_settings_version=2
+eclipse.preferences.version=1
+formatter_profile=_Papyrus
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * Constructor.\n *\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*****************************************************************************\n * Copyright (c) ${year} CEA LIST and others.\n * \n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n * CEA LIST - Initial API and implementation\n * \n *****************************************************************************/\n</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**\n * ${see_to_overridden}\n *\n * ${tags}\n */</template><template autoinsert\="false" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${see_to_target}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/META-INF/MANIFEST.MF b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..37bdf767b12
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,46 @@
+Manifest-Version: 1.0
+Bundle-Description: Tests for validation rules of the UmlRT profile
+Bundle-SymbolicName: org.eclipse.papyrus.uml.validation.tests;singleton:=true
+Bundle-Version: 1.2.0.qualifier
+Bundle-ClassPath: .
+Bundle-Name: %pluginName
+Require-Bundle: org.eclipse.papyrus.junit.utils;bundle-version="1.2.0",
+ org.junit,
+ org.eclipse.ui.views.properties.tabbed;bundle-version="3.6.0",
+ org.eclipse.papyrus.uml.tools;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.services.validation;bundle-version="1.2.0",
+ org.eclipse.papyrus.uml.service.validation;bundle-version="1.2.0",
+ org.eclipse.gmf.runtime.emf.commands.core;bundle-version="1.7.0",
+ org.eclipse.papyrus.infra.gmfdiag.commands;bundle-version="1.2.0",
+ org.eclipse.uml2.uml;bundle-version="5.0.0";visibility:=reexport,
+ org.eclipse.ui.navigator;bundle-version="3.5.400",
+ org.eclipse.ui.ide;bundle-version="3.10.0",
+ org.eclipse.ui,
+ org.eclipse.papyrus.views.modelexplorer;bundle-version="1.2.0",
+ org.eclipse.papyrus.uml.tools.utils;bundle-version="1.2.0",
+ org.eclipse.papyrus.junit.framework;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.widgets;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.emf;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
+ org.eclipse.papyrus.emf.facet.util.core;bundle-version="1.2.0",
+ org.eclipse.papyrus.emf.facet.custom.core;bundle-version="1.2.0",
+ org.eclipse.emf.workspace;bundle-version="1.5.1",
+ org.eclipse.emf.validation,
+ org.eclipse.emf.transaction;bundle-version="1.8.0",
+ org.eclipse.emf;bundle-version="2.6.0",
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.uml2.types;visibility:=reexport,
+ org.eclipse.core.resources;bundle-version="3.9.0",
+ org.eclipse.ocl.pivot;bundle-version="1.1.0",
+ org.eclipse.ocl;bundle-version="3.5.100",
+ org.eclipse.ocl.xtext.completeocl;bundle-version="1.1.0",
+ org.eclipse.papyrus.dsml.validation
+Bundle-ActivationPolicy: lazy
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.uml.validation.tests.Activator
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Export-Package: org.eclipse.papyrus.uml.validation.tests,
+ org.eclipse.papyrus.uml.validation.tests.rules
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/about.html b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/build.properties b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/build.properties
new file mode 100644
index 00000000000..fcf7058002e
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/build.properties
@@ -0,0 +1,10 @@
+#
+
+bin.includes = .,\
+ resources/,\
+ META-INF/,\
+ plugin.properties,\
+ about.html
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/plugin.properties b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/plugin.properties
new file mode 100644
index 00000000000..07f9a91b3c2
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/plugin.properties
@@ -0,0 +1,13 @@
+################################################################################
+# Copyright (c) 2015 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Ansgar Radermacher (CEA LIST) ansgar.radermacher@cea.fr - initial API and implementation
+################################################################################
+pluginName=Papyrus UML validation tests
+pluginProvider=Eclipse Modeling Project
+providerName = www.example.org
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/pom.xml b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/pom.xml
new file mode 100644
index 00000000000..f1dfbdf15f6
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.tests.releng</artifactId>
+ <version>1.2.0-SNAPSHOT</version>
+ <relativePath>../../../../../../releng/main-tests</relativePath>
+ </parent>
+ <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.uml.validation.tests</artifactId>
+ <version>1.2.0-SNAPSHOT</version>
+ <packaging>eclipse-test-plugin</packaging>
+</project>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/ExtraUMLValidation.ocl b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/ExtraUMLValidation.ocl
new file mode 100644
index 00000000000..d859fa0da47
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/ExtraUMLValidation.ocl
@@ -0,0 +1,5 @@
+import uml : 'http://www.eclipse.org/uml2/5.0.0/UML#/'
+
+context uml::Class
+
+inv CamelCaseName : name.at(1)=name.at(1).toUpperCase()
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/UMLValidationTests.di b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/UMLValidationTests.di
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/UMLValidationTests.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/UMLValidationTests.notation b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/UMLValidationTests.notation
new file mode 100644
index 00000000000..b8ee8d5e4d5
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/UMLValidationTests.notation
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_omV90KS-EeW4s_E9GftyFw" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_pgAJsKS-EeW4s_E9GftyFw" type="2007">
+ <children xmi:type="notation:DecorationNode" xmi:id="_pgAJsqS-EeW4s_E9GftyFw" type="5026"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_pgAwwKS-EeW4s_E9GftyFw" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_rYYAkKS-EeW4s_E9GftyFw" type="3010">
+ <children xmi:type="notation:DecorationNode" xmi:id="_rYYnoKS-EeW4s_E9GftyFw" type="5014"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rYYnoaS-EeW4s_E9GftyFw" type="8518">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rYYnoqS-EeW4s_E9GftyFw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rYYno6S-EeW4s_E9GftyFw" type="7011">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rYYnpKS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rYYnpaS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rYYnpqS-EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rYYnp6S-EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rYYnqKS-EeW4s_E9GftyFw" visible="false" type="7012">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rYYnqaS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rYYnqqS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rYYnq6S-EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rYYnrKS-EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rYYnraS-EeW4s_E9GftyFw" visible="false" type="7013">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rYYnrqS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rYYnr6S-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rYYnsKS-EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rYYnsaS-EeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:Class" href="UMLValidationTests.uml#_qkJ7kJnMEeWYtqO0PaPS_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rYYAkaS-EeW4s_E9GftyFw" x="74" y="34" width="121" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_r1O7sKS-EeW4s_E9GftyFw" type="3010">
+ <children xmi:type="notation:DecorationNode" xmi:id="_r1PiwKS-EeW4s_E9GftyFw" type="5014"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_r1PiwaS-EeW4s_E9GftyFw" type="8518">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_r1PiwqS-EeW4s_E9GftyFw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_r1Piw6S-EeW4s_E9GftyFw" type="7011">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_r1PixKS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_r1PixaS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_r1PixqS-EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r1Pix6S-EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_r1PiyKS-EeW4s_E9GftyFw" visible="false" type="7012">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_r1PiyaS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_r1PiyqS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_r1Piy6S-EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r1PizKS-EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_r1PizaS-EeW4s_E9GftyFw" visible="false" type="7013">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_r1PizqS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_r1Piz6S-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_r1Pi0KS-EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r1Pi0aS-EeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:Class" href="UMLValidationTests.uml#_sn8YQJnMEeWYtqO0PaPS_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r1O7saS-EeW4s_E9GftyFw" x="234" y="34" width="120" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_B_msIKS_EeW4s_E9GftyFw" type="3028">
+ <children xmi:type="notation:DecorationNode" xmi:id="_B_msIqS_EeW4s_E9GftyFw" type="5063"/>
+ <element xmi:type="uml:Comment" href="UMLValidationTests.uml#_B_Z30KS_EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_B_msIaS_EeW4s_E9GftyFw" x="414" y="34" width="281"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_pgAwwaS-EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pgAwwqS-EeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:Package" href="UMLValidationTests.uml#_uogh0JnMEeWYtqO0PaPS_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pgAJsaS-EeW4s_E9GftyFw" x="101" y="58" width="780" height="163"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_s1zn4KS-EeW4s_E9GftyFw" type="2007">
+ <children xmi:type="notation:DecorationNode" xmi:id="_s1zn4qS-EeW4s_E9GftyFw" type="5026"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_s1zn46S-EeW4s_E9GftyFw" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_t8HvsKS-EeW4s_E9GftyFw" type="3010">
+ <children xmi:type="notation:DecorationNode" xmi:id="_t8HvsqS-EeW4s_E9GftyFw" type="5014"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_t8Hvs6S-EeW4s_E9GftyFw" type="8518">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_t8HvtKS-EeW4s_E9GftyFw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_t8HvtaS-EeW4s_E9GftyFw" type="7011">
+ <children xmi:type="notation:Shape" xmi:id="_wmiHgKS-EeW4s_E9GftyFw" type="3012">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_Qn4kIKS_EeW4s_E9GftyFw" name="maskLabel">
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ </styles>
+ <element xmi:type="uml:Property" href="UMLValidationTests.uml#_1MB5MJnMEeWYtqO0PaPS_g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wmiHgaS-EeW4s_E9GftyFw"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_t8HvtqS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_t8Hvt6S-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_t8HvuKS-EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t8HvuaS-EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_t8HvuqS-EeW4s_E9GftyFw" visible="false" type="7012">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_t8Hvu6S-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_t8HvvKS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_t8HvvaS-EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t8HvvqS-EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_t8Hvv6S-EeW4s_E9GftyFw" visible="false" type="7013">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_t8HvwKS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_t8HvwaS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_t8HvwqS-EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t8Hvw6S-EeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:Class" href="UMLValidationTests.uml#_zv4rUJnMEeWYtqO0PaPS_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t8HvsaS-EeW4s_E9GftyFw" x="72" y="13" width="184" height="60"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TQx5AKS_EeW4s_E9GftyFw" type="3028">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TQygEKS_EeW4s_E9GftyFw" type="5063"/>
+ <element xmi:type="uml:Comment" href="UMLValidationTests.uml#_TQp9MKS_EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TQx5AaS_EeW4s_E9GftyFw" x="415" y="12" width="281" height="61"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_s1zn5KS-EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s1zn5aS-EeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:Package" href="UMLValidationTests.uml#_xjBLIJnMEeWYtqO0PaPS_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s1zn4aS-EeW4s_E9GftyFw" x="100" y="280" width="781" height="141"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7VrKwKS-EeW4s_E9GftyFw" type="2007">
+ <children xmi:type="notation:DecorationNode" xmi:id="_7VrKwqS-EeW4s_E9GftyFw" type="5026"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7Vrx0KS-EeW4s_E9GftyFw" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_-3BxoKS-EeW4s_E9GftyFw" type="3010">
+ <children xmi:type="notation:DecorationNode" xmi:id="_-3BxoqS-EeW4s_E9GftyFw" type="5014"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-3Bxo6S-EeW4s_E9GftyFw" type="8518">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-3BxpKS-EeW4s_E9GftyFw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-3BxpaS-EeW4s_E9GftyFw" type="7011">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-3BxpqS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-3Bxp6S-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-3BxqKS-EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-3BxqaS-EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-3BxqqS-EeW4s_E9GftyFw" visible="false" type="7012">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-3Bxq6S-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-3BxrKS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-3BxraS-EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-3BxrqS-EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-3Bxr6S-EeW4s_E9GftyFw" visible="false" type="7013">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-3BxsKS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-3BxsaS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-3BxsqS-EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-3Bxs6S-EeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:Class" href="UMLValidationTests.uml#_mL57sKS-EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-3BxoaS-EeW4s_E9GftyFw" x="75" y="16" width="181" height="63"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_mJqDgKS_EeW4s_E9GftyFw" type="3028">
+ <children xmi:type="notation:DecorationNode" xmi:id="_mJqqkKS_EeW4s_E9GftyFw" type="5063"/>
+ <element xmi:type="uml:Comment" href="UMLValidationTests.uml#_mJgSgKS_EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mJqDgaS_EeW4s_E9GftyFw" x="415" y="16" width="281" height="61"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7Vrx0aS-EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7Vrx0qS-EeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:Package" href="UMLValidationTests.uml#_hMHn8KS-EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7VrKwaS-EeW4s_E9GftyFw" x="100" y="456" width="781" height="145"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_omV90aS-EeW4s_E9GftyFw" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_omV90qS-EeW4s_E9GftyFw"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_omV906S-EeW4s_E9GftyFw">
+ <owner xmi:type="uml:Model" href="UMLValidationTests.uml#_m57FgJnMEeWYtqO0PaPS_g"/>
+ </styles>
+ <element xmi:type="uml:Model" href="UMLValidationTests.uml#_m57FgJnMEeWYtqO0PaPS_g"/>
+ <edges xmi:type="notation:Connector" xmi:id="_bLxZoKS_EeW4s_E9GftyFw" type="4013" source="_TQx5AKS_EeW4s_E9GftyFw" target="_t8HvsKS-EeW4s_E9GftyFw" routing="Rectilinear">
+ <styles xmi:type="notation:FontStyle" xmi:id="_bLxZoaS_EeW4s_E9GftyFw"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bLxZoqS_EeW4s_E9GftyFw" points="[520, 340, -643984, -643984]$[361, 360, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bMDGcKS_EeW4s_E9GftyFw" id="(0.0,0.6557377049180327)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bMDGcaS_EeW4s_E9GftyFw" id="(1.0,0.5342465753424658)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_cS8dEKS_EeW4s_E9GftyFw" type="4013" source="_B_msIKS_EeW4s_E9GftyFw" target="_r1O7sKS-EeW4s_E9GftyFw" routing="Rectilinear">
+ <styles xmi:type="notation:FontStyle" xmi:id="_cS8dEaS_EeW4s_E9GftyFw"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cS8dEqS_EeW4s_E9GftyFw" points="[520, 140, -643984, -643984]$[460, 140, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cTOw8KS_EeW4s_E9GftyFw" id="(0.0,0.3333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cTPYAKS_EeW4s_E9GftyFw" id="(1.0,0.273972602739726)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_dOZYsKS_EeW4s_E9GftyFw" type="4013" source="_B_msIKS_EeW4s_E9GftyFw" target="_rYYAkKS-EeW4s_E9GftyFw" routing="Rectilinear">
+ <styles xmi:type="notation:FontStyle" xmi:id="_dOZYsaS_EeW4s_E9GftyFw"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dOZYsqS_EeW4s_E9GftyFw" points="[540, 180, -643984, -643984]$[540, 200, -643984, -643984]$[280, 200, -643984, -643984]$[301, 180, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dOxzMKS_EeW4s_E9GftyFw" id="(0.0711743772241993,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dOxzMaS_EeW4s_E9GftyFw" id="(0.8264462809917356,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_yy9GUKS_EeW4s_E9GftyFw" type="4013" source="_mJqDgKS_EeW4s_E9GftyFw" target="_-3BxoKS-EeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_yy9GUaS_EeW4s_E9GftyFw"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yy9GUqS_EeW4s_E9GftyFw" points="[520, 540, -643984, -643984]$[361, 540, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yzQoUKS_EeW4s_E9GftyFw" id="(0.0,0.45977011494252873)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yzQoUaS_EeW4s_E9GftyFw" id="(1.0,0.6349206349206349)"/>
+ </edges>
+</notation:Diagram>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/UMLValidationTests.uml b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/UMLValidationTests.uml
new file mode 100644
index 00000000000..33d49eb1f7e
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/UMLValidationTests.uml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_m57FgJnMEeWYtqO0PaPS_g" name="RootElement">
+ <packagedElement xmi:type="uml:Package" xmi:id="_uogh0JnMEeWYtqO0PaPS_g" name="nameclash">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_B_Z30KS_EeW4s_E9GftyFw" annotatedElement="_sn8YQJnMEeWYtqO0PaPS_g _qkJ7kJnMEeWYtqO0PaPS_g">
+ <body>Check a simple standard UML constraint: elements in the same namespace must have unique names</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_qkJ7kJnMEeWYtqO0PaPS_g" name="Class1"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_sn8YQJnMEeWYtqO0PaPS_g" name="Class1"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_xjBLIJnMEeWYtqO0PaPS_g" name="multiplicity">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_TQp9MKS_EeW4s_E9GftyFw" annotatedElement="_zv4rUJnMEeWYtqO0PaPS_g">
+ <body>The attribute in this class has a non-integer multiplicity. This must not be detected as a failure</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_zv4rUJnMEeWYtqO0PaPS_g" name="NonStandardMultiplicity">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_1MB5MJnMEeWYtqO0PaPS_g" name="attribute">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7DpM0JnMEeWYtqO0PaPS_g" value="1"/>
+ <upperValue xmi:type="uml:LiteralString" xmi:id="_FCLSgJnNEeWYtqO0PaPS_g" value="MAX"/>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_hMHn8KS-EeW4s_E9GftyFw" name="oclFromFile">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_mJgSgKS_EeW4s_E9GftyFw" annotatedElement="_mL57sKS-EeW4s_E9GftyFw">
+ <body>This naming of this class is normally valid. However, the test loads an OCL constraint from a file that checks that all classes start with an upper case letter, i.e. this class violates this constraints.</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_mL57sKS-EeW4s_E9GftyFw" name="lowerCaseClass"/>
+ </packagedElement>
+</uml:Model>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-definition.di b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-definition.di
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-definition.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-definition.notation b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-definition.notation
new file mode 100644
index 00000000000..bf66ab27ffc
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-definition.notation
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_QsVmEOG1EeOAC6sb_-0VbA" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_RyXaAOG1EeOAC6sb_-0VbA" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XGtBcOG1EeOAC6sb_-0VbA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rwst4DHJEeSoT4aYNKjAtQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rwst4THJEeSoT4aYNKjAtQ" key="StereotypeList" value="profile::AlwaysActive,profile::AlwaysActiveMalformed"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rwst4jHJEeSoT4aYNKjAtQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rwst4zHJEeSoT4aYNKjAtQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rwst5DHJEeSoT4aYNKjAtQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_RyYoIOG1EeOAC6sb_-0VbA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RyZPMOG1EeOAC6sb_-0VbA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RyZPMeG1EeOAC6sb_-0VbA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RyZPMuG1EeOAC6sb_-0VbA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RyZPM-G1EeOAC6sb_-0VbA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RyZPNOG1EeOAC6sb_-0VbA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RyZPNeG1EeOAC6sb_-0VbA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RyZPNuG1EeOAC6sb_-0VbA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RyZPN-G1EeOAC6sb_-0VbA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RyZPOOG1EeOAC6sb_-0VbA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RyZPOeG1EeOAC6sb_-0VbA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RyZPOuG1EeOAC6sb_-0VbA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RyZPO-G1EeOAC6sb_-0VbA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RyZPPOG1EeOAC6sb_-0VbA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RyZPPeG1EeOAC6sb_-0VbA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RyZPPuG1EeOAC6sb_-0VbA"/>
+ </children>
+ <element xmi:type="uml:Class" href="active-tst.uml#_RxxkIOG1EeOAC6sb_-0VbA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RyXaAeG1EeOAC6sb_-0VbA" x="140" y="40" width="221" height="161"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_4kTwMC9SEeShgI5a-mZZKQ" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7yKzUC9SEeShgI5a-mZZKQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7yLaYC9SEeShgI5a-mZZKQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7yLaYS9SEeShgI5a-mZZKQ" key="StereotypeList" value="profile::AlwaysActive"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7yMBcC9SEeShgI5a-mZZKQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7yMBcS9SEeShgI5a-mZZKQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7yMBci9SEeShgI5a-mZZKQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4kWzgC9SEeShgI5a-mZZKQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_4kWzgS9SEeShgI5a-mZZKQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_4kXakC9SEeShgI5a-mZZKQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_4kXakS9SEeShgI5a-mZZKQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_4kXaki9SEeShgI5a-mZZKQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4kXaky9SEeShgI5a-mZZKQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_4kXalC9SEeShgI5a-mZZKQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_4kXalS9SEeShgI5a-mZZKQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_4kXali9SEeShgI5a-mZZKQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_4kXaly9SEeShgI5a-mZZKQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4kXamC9SEeShgI5a-mZZKQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_4kYBoC9SEeShgI5a-mZZKQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_4kYBoS9SEeShgI5a-mZZKQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_4kYBoi9SEeShgI5a-mZZKQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_4kYBoy9SEeShgI5a-mZZKQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4kYBpC9SEeShgI5a-mZZKQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="active-tst.uml#_4iSW8C9SEeShgI5a-mZZKQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4kTwMS9SEeShgI5a-mZZKQ" x="400" y="40" width="221" height="161"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_QsVmEeG1EeOAC6sb_-0VbA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_QsVmEuG1EeOAC6sb_-0VbA">
+ <owner xmi:type="uml:Model" href="active-tst.uml#_PXaagOG1EeOAC6sb_-0VbA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="active-tst.uml#_PXaagOG1EeOAC6sb_-0VbA"/>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_PeKqkDHJEeSoT4aYNKjAtQ"/>
+ <notation:Diagram xmi:id="__bshwKS6EeW4s_E9GftyFw" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_AaK8MKS7EeW4s_E9GftyFw" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_AaN_gKS7EeW4s_E9GftyFw" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AaN_gaS7EeW4s_E9GftyFw" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AaN_gqS7EeW4s_E9GftyFw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AaOmkKS7EeW4s_E9GftyFw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AaOmkaS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AaOmkqS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AaOmk6S7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AaOmlKS7EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AaOmlaS7EeW4s_E9GftyFw" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AaOmlqS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AaOml6S7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AaOmmKS7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AaOmmaS7EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AaOmmqS7EeW4s_E9GftyFw" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AaOmm6S7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AaOmnKS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AaOmnaS7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AaOmnqS7EeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:Class" href="active-tst.rule-in-definition.uml#_4iSW8C9SEeShgI5a-mZZKQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AaK8MaS7EeW4s_E9GftyFw" x="149" y="160" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_AauV0KS7EeW4s_E9GftyFw" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AauV0aS7EeW4s_E9GftyFw" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_AauV06S7EeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="active-tst.rule-in-definition.uml#_4iSW8C9SEeShgI5a-mZZKQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AauV0qS7EeW4s_E9GftyFw" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_A4eo0KS7EeW4s_E9GftyFw" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_A4f28KS7EeW4s_E9GftyFw" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_A4f28aS7EeW4s_E9GftyFw" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A4geAKS7EeW4s_E9GftyFw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_A4geAaS7EeW4s_E9GftyFw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_A4geAqS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_A4geA6S7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_A4geBKS7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_A4geBaS7EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_A4geBqS7EeW4s_E9GftyFw" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_A4geB6S7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_A4geCKS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_A4geCaS7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_A4geCqS7EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_A4geC6S7EeW4s_E9GftyFw" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_A4geDKS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_A4geDaS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_A4geDqS7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_A4geD6S7EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_A4ugcKS7EeW4s_E9GftyFw" type="StereotypeLabel">
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_A4ugcaS7EeW4s_E9GftyFw" name="stereotype" stringValue="profile::AlwaysActive"/>
+ <element xmi:type="uml:Stereotype" href="active.rule-in-definition.profile.uml#_pG-b4OGoEeOLd684kqvD2g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_A4ugcqS7EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_A4vHgKS7EeW4s_E9GftyFw" type="StereotypeBrace">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_A4vHgaS7EeW4s_E9GftyFw" showTitle="true"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_A4vHgqS7EeW4s_E9GftyFw" name="stereotype" stringValue="profile::AlwaysActive"/>
+ <element xmi:type="uml:Stereotype" href="active.rule-in-definition.profile.uml#_pG-b4OGoEeOLd684kqvD2g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_A4vHg6S7EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_A4vukKS7EeW4s_E9GftyFw" type="compartment_shape_display">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_A4vukaS7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_A4vukqS7EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_A4w8vKS7EeW4s_E9GftyFw" type="StereotypeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_A4w8vaS7EeW4s_E9GftyFw" showTitle="true"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_A4w8vqS7EeW4s_E9GftyFw" name="stereotype" stringValue="profile::AlwaysActive"/>
+ <element xmi:type="uml:Stereotype" href="active.rule-in-definition.profile.uml#_pG-b4OGoEeOLd684kqvD2g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_A4w8v6S7EeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:Class" href="active-tst.rule-in-definition.uml#_RxxkIOG1EeOAC6sb_-0VbA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_A4eo0aS7EeW4s_E9GftyFw" x="380" y="160" width="221" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_A4vuk6S7EeW4s_E9GftyFw" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_A4vulKS7EeW4s_E9GftyFw" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_A4vulqS7EeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="active-tst.rule-in-definition.uml#_RxxkIOG1EeOAC6sb_-0VbA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_A4vulaS7EeW4s_E9GftyFw" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KmX_kKS9EeW4s_E9GftyFw" type="2012">
+ <children xmi:type="notation:DecorationNode" xmi:id="_KmYmoKS9EeW4s_E9GftyFw" type="5038"/>
+ <element xmi:type="uml:Comment" href="active-tst.rule-in-definition.uml#_KmWKYKS9EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KmX_kaS9EeW4s_E9GftyFw" x="80" y="340" width="241" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Nhg7AKS9EeW4s_E9GftyFw" type="2012">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Nhg7AqS9EeW4s_E9GftyFw" type="5038"/>
+ <element xmi:type="uml:Comment" href="active-tst.rule-in-definition.uml#_NhgT8KS9EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nhg7AaS9EeW4s_E9GftyFw" x="720" y="340" width="301" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TmFskKS9EeW4s_E9GftyFw" type="2012">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TmFskqS9EeW4s_E9GftyFw" type="5038"/>
+ <element xmi:type="uml:Comment" href="active-tst.rule-in-definition.uml#_TmEecKS9EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TmFskaS9EeW4s_E9GftyFw" x="40" y="20" width="321" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7FWNsKWYEeW4s_E9GftyFw" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_7FWNsaWYEeW4s_E9GftyFw" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7FWNsqWYEeW4s_E9GftyFw" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7FWNs6WYEeW4s_E9GftyFw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7FWNtKWYEeW4s_E9GftyFw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7FWNtaWYEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_7FWNtqWYEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_7FWNt6WYEeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7FWNuKWYEeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7FWNuaWYEeW4s_E9GftyFw" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7FWNuqWYEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_7FWNu6WYEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_7FWNvKWYEeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7FWNvaWYEeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7FWNvqWYEeW4s_E9GftyFw" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7FWNv6WYEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_7FWNwKWYEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_7FWNwaWYEeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7FWNwqWYEeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7FWNyqWYEeW4s_E9GftyFw" type="StereotypeLabel">
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_7FWNy6WYEeW4s_E9GftyFw" name="stereotype" stringValue="profile::AlwaysActiveMalformed"/>
+ <element xmi:type="uml:Stereotype" href="active.rule-in-definition.profile.uml#_neZ30DHGEeSIQaU3LZ0hmw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7FWNzKWYEeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7FWNzaWYEeW4s_E9GftyFw" type="StereotypeBrace">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7FWNzqWYEeW4s_E9GftyFw" showTitle="true"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_7FWNz6WYEeW4s_E9GftyFw" name="stereotype" stringValue="profile::AlwaysActiveMalformed"/>
+ <element xmi:type="uml:Stereotype" href="active.rule-in-definition.profile.uml#_neZ30DHGEeSIQaU3LZ0hmw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7FWN0KWYEeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7FWN0aWYEeW4s_E9GftyFw" type="compartment_shape_display">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7FWN0qWYEeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7FWN06WYEeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7FWN2KWYEeW4s_E9GftyFw" type="StereotypeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7FWN2aWYEeW4s_E9GftyFw" showTitle="true"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_7FWN2qWYEeW4s_E9GftyFw" name="stereotype" stringValue="profile::AlwaysActiveMalformed"/>
+ <element xmi:type="uml:Stereotype" href="active.rule-in-definition.profile.uml#_neZ30DHGEeSIQaU3LZ0hmw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7FWN26WYEeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:Class" href="active-tst.rule-in-definition.uml#_7FVmoKWYEeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7FW0xKWYEeW4s_E9GftyFw" x="720" y="160" width="261" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GE0L8KWZEeW4s_E9GftyFw" type="2012">
+ <children xmi:type="notation:DecorationNode" xmi:id="_GE0L8qWZEeW4s_E9GftyFw" type="5038"/>
+ <element xmi:type="uml:Comment" href="active-tst.rule-in-definition.uml#_GEzk4KWZEeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GE0L8aWZEeW4s_E9GftyFw" x="380" y="340" width="221" height="101"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="__bshwaS6EeW4s_E9GftyFw" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="__bshwqS6EeW4s_E9GftyFw"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="__bshw6S6EeW4s_E9GftyFw">
+ <owner xmi:type="uml:Model" href="active-tst.rule-in-definition.uml#_PXaagOG1EeOAC6sb_-0VbA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="active-tst.rule-in-definition.uml#_PXaagOG1EeOAC6sb_-0VbA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_AauV1KS7EeW4s_E9GftyFw" type="StereotypeCommentLink" source="_AaK8MKS7EeW4s_E9GftyFw" target="_AauV0KS7EeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_AauV1aS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_AauV2aS7EeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="active-tst.rule-in-definition.uml#_4iSW8C9SEeShgI5a-mZZKQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AauV1qS7EeW4s_E9GftyFw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AauV16S7EeW4s_E9GftyFw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AauV2KS7EeW4s_E9GftyFw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_A4vul6S7EeW4s_E9GftyFw" type="StereotypeCommentLink" source="_A4eo0KS7EeW4s_E9GftyFw" target="_A4vuk6S7EeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_A4vumKS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_A4wVoqS7EeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="active-tst.rule-in-definition.uml#_RxxkIOG1EeOAC6sb_-0VbA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_A4vumaS7EeW4s_E9GftyFw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A4wVoKS7EeW4s_E9GftyFw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A4wVoaS7EeW4s_E9GftyFw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_QgqzwKS9EeW4s_E9GftyFw" type="4013" source="_KmX_kKS9EeW4s_E9GftyFw" target="_AaK8MKS7EeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_QgqzwaS9EeW4s_E9GftyFw"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QgqzwqS9EeW4s_E9GftyFw" points="[200, 340, -643984, -643984]$[200, 261, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qg0kwKS9EeW4s_E9GftyFw" id="(0.4979253112033195,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qg1L0KS9EeW4s_E9GftyFw" id="(0.51,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_RA06gKS9EeW4s_E9GftyFw" type="4013" source="_Nhg7AKS9EeW4s_E9GftyFw" target="_7FWNsKWYEeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_RA06gaS9EeW4s_E9GftyFw"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RA06gqS9EeW4s_E9GftyFw" points="[520, 340, -643984, -643984]$[520, 261, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RBEyIKS9EeW4s_E9GftyFw" id="(0.46511627906976744,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RBEyIaS9EeW4s_E9GftyFw" id="(0.5363984674329502,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_MU6RAKWZEeW4s_E9GftyFw" type="4013" source="_GE0L8KWZEeW4s_E9GftyFw" target="_A4eo0KS7EeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_MU6RAaWZEeW4s_E9GftyFw"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MU6RAqWZEeW4s_E9GftyFw" points="[500, 340, -643984, -643984]$[500, 261, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MVW88KWZEeW4s_E9GftyFw" id="(0.5429864253393665,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MVW88aWZEeW4s_E9GftyFw" id="(0.5429864253393665,1.0)"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-definition.uml b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-definition.uml
new file mode 100644
index 00000000000..14bb7691204
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-definition.uml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:profile="http:///schemas/profile/_N8bc8DHHEeSIQaU3LZ0hmw/6" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http:///schemas/profile/_N8bc8DHHEeSIQaU3LZ0hmw/6 active.rule-in-definition.profile.uml#_N8d5MDHHEeSIQaU3LZ0hmw">
+ <uml:Model xmi:id="_PXaagOG1EeOAC6sb_-0VbA" name="model">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_KmWKYKS9EeW4s_E9GftyFw" annotatedElement="_4iSW8C9SEeShgI5a-mZZKQ">
+ <body>An inactive class with the stereotype AlwaysActive. This stereotype has an OCL constraint that verifies that the class is active. Thus, the class violates the constraints</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="_NhgT8KS9EeW4s_E9GftyFw" annotatedElement="_7FVmoKWYEeW4s_E9GftyFw">
+ <body>An active class with the stereotype AlwaysActiveMalformed. This stereotype has an OCL constraint which is not well formed. Validation should result in an error reporting the mal-formedness</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="_TmEecKS9EeW4s_E9GftyFw">
+ <body>This model applies a profile with constraints embedded into the profile definition. This is currently only possible for OCL constraints</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="_GEzk4KWZEeW4s_E9GftyFw" annotatedElement="_RxxkIOG1EeOAC6sb_-0VbA">
+ <body>An inacitve class with the stereotype AlwaysActive. The stereotype constraint is violated</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_RxxkIOG1EeOAC6sb_-0VbA" name="Inactive"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_4iSW8C9SEeShgI5a-mZZKQ" name="Active" isActive="true"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_7FVmoKWYEeW4s_E9GftyFw" name="ActiveMalformed" isActive="true"/>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_5PUj4J0LEeWTbMathxr4SQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5PaqgJ0LEeWTbMathxr4SQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="active.rule-in-definition.profile.uml#_N8d5MDHHEeSIQaU3LZ0hmw"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="active.rule-in-definition.profile.uml#_GkQEIOGnEeO2stwZ2ZCXww"/>
+ </profileApplication>
+ </uml:Model>
+ <profile:AlwaysActive xmi:id="_XGipYOG1EeOAC6sb_-0VbA" base_Class="_RxxkIOG1EeOAC6sb_-0VbA"/>
+ <profile:Tst xmi:id="_68Ns4OV-EeOFd8atAXGFIA" base_Package="_PXaagOG1EeOAC6sb_-0VbA"/>
+ <profile:AlwaysActive xmi:id="_7yCQcC9SEeShgI5a-mZZKQ" base_Class="_4iSW8C9SEeShgI5a-mZZKQ"/>
+ <profile:AlwaysActiveMalformed xmi:id="_7FYC4KWYEeW4s_E9GftyFw" base_Class="_7FVmoKWYEeW4s_E9GftyFw"/>
+</xmi:XMI>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-plugin.di b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-plugin.di
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-plugin.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-plugin.notation b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-plugin.notation
new file mode 100644
index 00000000000..32e022abd34
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-plugin.notation
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_E1dbwKS7EeW4s_E9GftyFw" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_FfLuMKS7EeW4s_E9GftyFw" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_FfMVQKS7EeW4s_E9GftyFw" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FfM8UKS7EeW4s_E9GftyFw" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FfM8UaS7EeW4s_E9GftyFw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_FfM8UqS7EeW4s_E9GftyFw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_FfM8U6S7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_FfM8VKS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_FfM8VaS7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FfM8VqS7EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_FfM8V6S7EeW4s_E9GftyFw" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_FfM8WKS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_FfM8WaS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_FfM8WqS7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FfM8W6S7EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_FfM8XKS7EeW4s_E9GftyFw" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_FfM8XaS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_FfM8XqS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_FfM8X6S7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FfM8YKS7EeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:Class" href="active-tst.rule-in-plugin.uml#_RxxkIOG1EeOAC6sb_-0VbA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FfLuMaS7EeW4s_E9GftyFw" x="103" y="60" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FfYig6S7EeW4s_E9GftyFw" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_FfYihKS7EeW4s_E9GftyFw" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_FfYihqS7EeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="active-tst.rule-in-plugin.uml#_RxxkIOG1EeOAC6sb_-0VbA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FfYihaS7EeW4s_E9GftyFw" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GYOPAKS7EeW4s_E9GftyFw" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_GYO2EKS7EeW4s_E9GftyFw" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GYO2EaS7EeW4s_E9GftyFw" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GYO2EqS7EeW4s_E9GftyFw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GYO2E6S7EeW4s_E9GftyFw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GYO2FKS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GYO2FaS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GYO2FqS7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GYO2F6S7EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GYO2GKS7EeW4s_E9GftyFw" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GYO2GaS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GYO2GqS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GYO2G6S7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GYO2HKS7EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GYO2HaS7EeW4s_E9GftyFw" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GYO2HqS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GYO2H6S7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GYO2IKS7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GYO2IaS7EeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:Class" href="active-tst.rule-in-plugin.uml#_4iSW8C9SEeShgI5a-mZZKQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GYOPAaS7EeW4s_E9GftyFw" x="340" y="60" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GYacQ6S7EeW4s_E9GftyFw" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GYacRKS7EeW4s_E9GftyFw" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GYacRqS7EeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="active-tst.rule-in-plugin.uml#_4iSW8C9SEeShgI5a-mZZKQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GYacRaS7EeW4s_E9GftyFw" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HEb0wKS7EeW4s_E9GftyFw" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_HEb0wqS7EeW4s_E9GftyFw" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HEb0w6S7EeW4s_E9GftyFw" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HEb0xKS7EeW4s_E9GftyFw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HEcb0KS7EeW4s_E9GftyFw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HEcb0aS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HEcb0qS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HEcb06S7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HEcb1KS7EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HEcb1aS7EeW4s_E9GftyFw" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HEcb1qS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HEcb16S7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HEcb2KS7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HEcb2aS7EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HEcb2qS7EeW4s_E9GftyFw" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HEcb26S7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HEcb3KS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HEcb3aS7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HEcb3qS7EeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:Class" href="active-tst.rule-in-plugin.uml#_CjfAgJ7FEeWu3Jt7boFR1Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HEb0waS7EeW4s_E9GftyFw" x="100" y="380" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HEmz46S7EeW4s_E9GftyFw" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HEmz5KS7EeW4s_E9GftyFw" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_HEmz5qS7EeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="active-tst.rule-in-plugin.uml#_CjfAgJ7FEeWu3Jt7boFR1Q"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HEmz5aS7EeW4s_E9GftyFw" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HoaEgKS7EeW4s_E9GftyFw" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_HoarkaS7EeW4s_E9GftyFw" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HoarkqS7EeW4s_E9GftyFw" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Hoark6S7EeW4s_E9GftyFw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HoarlKS7EeW4s_E9GftyFw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HoarlaS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HoarlqS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Hoarl6S7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HoarmKS7EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HoarmaS7EeW4s_E9GftyFw" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HoarmqS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Hoarm6S7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HoarnKS7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HoarnaS7EeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HoarnqS7EeW4s_E9GftyFw" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Hoarn6S7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HoaroKS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HoaroaS7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HoaroqS7EeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:Class" href="active-tst.rule-in-plugin.uml#_Vksg0J83EeWEmsoUFtjwMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HoarkKS7EeW4s_E9GftyFw" x="340" y="380" width="161" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HolDoKS7EeW4s_E9GftyFw" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HolDoaS7EeW4s_E9GftyFw" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_HolDo6S7EeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="active-tst.rule-in-plugin.uml#_Vksg0J83EeWEmsoUFtjwMA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HolDoqS7EeW4s_E9GftyFw" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_egqOoKS7EeW4s_E9GftyFw" type="2012">
+ <children xmi:type="notation:DecorationNode" xmi:id="_egq1sKS7EeW4s_E9GftyFw" type="5038"/>
+ <element xmi:type="uml:Comment" href="active-tst.rule-in-plugin.uml#_egUQYKS7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_egqOoaS7EeW4s_E9GftyFw" x="60" y="220" width="221" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0LXAgKS7EeW4s_E9GftyFw" type="2012">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0LXAgqS7EeW4s_E9GftyFw" type="5038"/>
+ <element xmi:type="uml:Comment" href="active-tst.rule-in-plugin.uml#_0LVLUKS7EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0LXAgaS7EeW4s_E9GftyFw" x="320" y="220" width="261" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KV0QgKS8EeW4s_E9GftyFw" type="2012">
+ <children xmi:type="notation:DecorationNode" xmi:id="_KV0QgqS8EeW4s_E9GftyFw" type="5038"/>
+ <element xmi:type="uml:Comment" href="active-tst.rule-in-plugin.uml#_KVybUKS8EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KV0QgaS8EeW4s_E9GftyFw" x="60" y="520" width="221" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zutrUKS8EeW4s_E9GftyFw" type="2012">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zutrUaS8EeW4s_E9GftyFw" type="5038"/>
+ <element xmi:type="uml:Comment" href="active-tst.rule-in-plugin.uml#_zutEQKS8EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zutrUqS8EeW4s_E9GftyFw" x="320" y="520" width="261" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_cYRT4aS9EeW4s_E9GftyFw" type="2012">
+ <children xmi:type="notation:DecorationNode" xmi:id="_cYRT4qS9EeW4s_E9GftyFw" type="5038"/>
+ <element xmi:type="uml:Comment" href="active-tst.rule-in-plugin.uml#_cYRT4KS9EeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cYRT46S9EeW4s_E9GftyFw" x="700" y="60" width="241" height="101"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_E1dbwaS7EeW4s_E9GftyFw" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_E1dbwqS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_E1dbw6S7EeW4s_E9GftyFw">
+ <owner xmi:type="uml:Model" href="active-tst.rule-in-plugin.uml#_PXaagOG1EeOAC6sb_-0VbA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="active-tst.rule-in-plugin.uml#_PXaagOG1EeOAC6sb_-0VbA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_FfZJkKS7EeW4s_E9GftyFw" type="StereotypeCommentLink" source="_FfLuMKS7EeW4s_E9GftyFw" target="_FfYig6S7EeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_FfZJkaS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_FfZJlaS7EeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="active-tst.rule-in-plugin.uml#_RxxkIOG1EeOAC6sb_-0VbA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FfZJkqS7EeW4s_E9GftyFw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FfZJk6S7EeW4s_E9GftyFw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FfZJlKS7EeW4s_E9GftyFw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GYacR6S7EeW4s_E9GftyFw" type="StereotypeCommentLink" source="_GYOPAKS7EeW4s_E9GftyFw" target="_GYacQ6S7EeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GYacSKS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GYbDUqS7EeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="active-tst.rule-in-plugin.uml#_4iSW8C9SEeShgI5a-mZZKQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GYacSaS7EeW4s_E9GftyFw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GYbDUKS7EeW4s_E9GftyFw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GYbDUaS7EeW4s_E9GftyFw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_HEna8KS7EeW4s_E9GftyFw" type="StereotypeCommentLink" source="_HEb0wKS7EeW4s_E9GftyFw" target="_HEmz46S7EeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_HEna8aS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_HEna9aS7EeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="active-tst.rule-in-plugin.uml#_CjfAgJ7FEeWu3Jt7boFR1Q"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HEna8qS7EeW4s_E9GftyFw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HEna86S7EeW4s_E9GftyFw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HEna9KS7EeW4s_E9GftyFw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_HolDpKS7EeW4s_E9GftyFw" type="StereotypeCommentLink" source="_HoaEgKS7EeW4s_E9GftyFw" target="_HolDoKS7EeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_HolDpaS7EeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_HolDqaS7EeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="active-tst.rule-in-plugin.uml#_Vksg0J83EeWEmsoUFtjwMA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HolDpqS7EeW4s_E9GftyFw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HolDp6S7EeW4s_E9GftyFw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HolDqKS7EeW4s_E9GftyFw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_nM8pUKS7EeW4s_E9GftyFw" type="4013" source="_egqOoKS7EeW4s_E9GftyFw" target="_FfLuMKS7EeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_nM8pUaS7EeW4s_E9GftyFw"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nM8pUqS7EeW4s_E9GftyFw" points="[161, 216, -643984, -643984]$[161, 175, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nNqbAKS7EeW4s_E9GftyFw" id="(0.45248868778280543,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nNrCEKS7EeW4s_E9GftyFw" id="(0.57,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_JONIMKS8EeW4s_E9GftyFw" type="4013" source="_0LXAgKS7EeW4s_E9GftyFw" target="_GYOPAKS7EeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_JONIMaS8EeW4s_E9GftyFw"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JONIMqS8EeW4s_E9GftyFw" points="[420, 220, -643984, -643984]$[420, 161, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JOn-8KS8EeW4s_E9GftyFw" id="(0.3831417624521073,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JOn-8aS8EeW4s_E9GftyFw" id="(0.5031446540880503,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_FPc-MKS9EeW4s_E9GftyFw" type="4013" source="_zutrUKS8EeW4s_E9GftyFw" target="_HoaEgKS7EeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_FPc-MaS9EeW4s_E9GftyFw"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FPc-MqS9EeW4s_E9GftyFw" points="[480, 520, -643984, -643984]$[440, 481, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FP5qIKS9EeW4s_E9GftyFw" id="(0.45248868778280543,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FP5qIaS9EeW4s_E9GftyFw" id="(0.6211180124223602,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_F_wZwKS9EeW4s_E9GftyFw" type="4013" source="_KV0QgKS8EeW4s_E9GftyFw" target="_HEb0wKS7EeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_F_wZwaS9EeW4s_E9GftyFw"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F_wZwqS9EeW4s_E9GftyFw" points="[160, 520, -643984, -643984]$[160, 481, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GAL3kKS9EeW4s_E9GftyFw" id="(0.45248868778280543,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GAMeoKS9EeW4s_E9GftyFw" id="(0.46875,1.0)"/>
+ </edges>
+</notation:Diagram>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-plugin.uml b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-plugin.uml
new file mode 100644
index 00000000000..02f900b938b
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active-tst.rule-in-plugin.uml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:profile="http://org.eclipse.papyrus/activetest/1" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <uml:Model xmi:id="_PXaagOG1EeOAC6sb_-0VbA" name="model">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_egUQYKS7EeW4s_E9GftyFw" annotatedElement="_RxxkIOG1EeOAC6sb_-0VbA">
+ <body>An inactive class with the stereotype AlwaysActive. This stereotype has an OCL constraint that verifies that the class is active. Thus, the class violates the constraints</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="_0LVLUKS7EeW4s_E9GftyFw" annotatedElement="_4iSW8C9SEeShgI5a-mZZKQ">
+ <body>An active class with the stereotype AlwaysActiveMalformed. This stereotype has an OCL constraint which is not well formed. Validation should result in an error reporting the mal-formedness</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="_KVybUKS8EeW4s_E9GftyFw" annotatedElement="_CjfAgJ7FEeWu3Jt7boFR1Q">
+ <body>An inactive class with the stereotype AlwaysPassive. This stereotype has a Java constraint that verifies that the class is passive. Thus, this class should not have an error.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="_zutEQKS8EeW4s_E9GftyFw" annotatedElement="_Vksg0J83EeWEmsoUFtjwMA">
+ <body>An active class with the stereotype AlwaysPassive. This stereotype has a Java constraint that verifies that the class is passive. Thus, this class violates the constraint</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="_cYRT4KS9EeW4s_E9GftyFw">
+ <body>This model applies a profile with OCL and Java constraints embedded into the plugin.xml (using DSML validation). profile definition.</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_RxxkIOG1EeOAC6sb_-0VbA" name="InactiveOCL"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_4iSW8C9SEeShgI5a-mZZKQ" name="ActiveOCL" isActive="true"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_CjfAgJ7FEeWu3Jt7boFR1Q" name="InactiveJava"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Vksg0J83EeWEmsoUFtjwMA" name="ActiveJava" isActive="true"/>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_Jr0gQJ81EeWF7vVRM-jlQQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Jr1uYJ81EeWF7vVRM-jlQQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://org.eclipse.papyrus/activetest/1#/"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://ACTIVE_TEST_PROFILE//active.rule-in-plugin.profile.uml#_GkQEIOGnEeO2stwZ2ZCXww"/>
+ </profileApplication>
+ </uml:Model>
+ <profile:AlwaysPassiveJava xmi:id="_MJl4UJ83EeWEmsoUFtjwMA" base_Class="_CjfAgJ7FEeWu3Jt7boFR1Q"/>
+ <profile:AlwaysActiveMalformed xmi:id="_N2ISoJ83EeWEmsoUFtjwMA" base_Class="_4iSW8C9SEeShgI5a-mZZKQ"/>
+ <profile:AlwaysActive xmi:id="_OykswJ83EeWEmsoUFtjwMA" base_Class="_RxxkIOG1EeOAC6sb_-0VbA"/>
+ <profile:AlwaysPassiveJava xmi:id="_Y3DpcJ83EeWEmsoUFtjwMA" base_Class="_Vksg0J83EeWEmsoUFtjwMA"/>
+</xmi:XMI>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active.rule-in-definition.profile.di b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active.rule-in-definition.profile.di
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active.rule-in-definition.profile.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active.rule-in-definition.profile.notation b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active.rule-in-definition.profile.notation
new file mode 100644
index 00000000000..34a35d4548b
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active.rule-in-definition.profile.notation
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_nLZ7gOGyEeOvkKBujXdKCg" type="PapyrusUMLProfileDiagram" name="ProfileDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_oWSaQOGyEeOvkKBujXdKCg" type="1026">
+ <children xmi:type="notation:DecorationNode" xmi:id="_oWTBUOGyEeOvkKBujXdKCg" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_oWToYOGyEeOvkKBujXdKCg" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_oWToYeGyEeOvkKBujXdKCg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_oWToYuGyEeOvkKBujXdKCg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_oWToY-GyEeOvkKBujXdKCg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oWToZOGyEeOvkKBujXdKCg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_oWToZeGyEeOvkKBujXdKCg" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_oWToZuGyEeOvkKBujXdKCg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_oWToZ-GyEeOvkKBujXdKCg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_oWToaOGyEeOvkKBujXdKCg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oWToaeGyEeOvkKBujXdKCg"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="active.rule-in-definition.profile.uml#_pG-b4OGoEeOLd684kqvD2g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oWSaQeGyEeOvkKBujXdKCg" x="220" y="160" width="198" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_pDqdoOGyEeOvkKBujXdKCg" type="1031">
+ <children xmi:type="notation:DecorationNode" xmi:id="_pDqdouGyEeOvkKBujXdKCg" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pDqdoeGyEeOvkKBujXdKCg" x="220" y="40" width="541"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uV0TwOGyEeOvkKBujXdKCg" type="1014">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HiPDcOG0EeOljYnPInggmQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HiPDceG0EeOljYnPInggmQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HiPDcuG0EeOljYnPInggmQ" key="StereotypeList" value="PapyrusDSMLValidationRule::ValidationRule"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HiPDc-G0EeOljYnPInggmQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HiPqgOG0EeOljYnPInggmQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HiPqgeG0EeOljYnPInggmQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uV060OGyEeOvkKBujXdKCg" type="1015"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uV060eGyEeOvkKBujXdKCg" type="5063"/>
+ <element xmi:type="uml:Constraint" href="active.rule-in-definition.profile.uml#_uHg9kOGoEeOLd684kqvD2g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uV0TweGyEeOvkKBujXdKCg" x="220" y="300"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CSsAoOV-EeOFd8atAXGFIA" type="1026">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CSsnsOV-EeOFd8atAXGFIA" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CSsnseV-EeOFd8atAXGFIA" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CSsnsuV-EeOFd8atAXGFIA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CSsns-V-EeOFd8atAXGFIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CSsntOV-EeOFd8atAXGFIA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CSsnteV-EeOFd8atAXGFIA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CSsntuV-EeOFd8atAXGFIA" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CSsnt-V-EeOFd8atAXGFIA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CSsnuOV-EeOFd8atAXGFIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CSsnueV-EeOFd8atAXGFIA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CStOwOV-EeOFd8atAXGFIA"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="active.rule-in-definition.profile.uml#_CSo9UOV-EeOFd8atAXGFIA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CSsAoeV-EeOFd8atAXGFIA" x="60" y="180" width="101" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JlOaIOV-EeOFd8atAXGFIA" type="1031">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JlRdcOV-EeOFd8atAXGFIA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JlRdceV-EeOFd8atAXGFIA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JlRdcuV-EeOFd8atAXGFIA" key="StereotypeList" value="StandardProfile::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JlRdc-V-EeOFd8atAXGFIA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JlSEgOV-EeOFd8atAXGFIA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JlSEgeV-EeOFd8atAXGFIA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JlPoQOV-EeOFd8atAXGFIA" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlPoQeV-EeOFd8atAXGFIA" x="60" y="40"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_nepIYDHGEeSIQaU3LZ0hmw" type="1026">
+ <children xmi:type="notation:DecorationNode" xmi:id="_neqWgDHGEeSIQaU3LZ0hmw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_neqWgTHGEeSIQaU3LZ0hmw" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_neqWgjHGEeSIQaU3LZ0hmw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_neqWgzHGEeSIQaU3LZ0hmw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_neqWhDHGEeSIQaU3LZ0hmw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_neqWhTHGEeSIQaU3LZ0hmw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_neqWhjHGEeSIQaU3LZ0hmw" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_neqWhzHGEeSIQaU3LZ0hmw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_neqWiDHGEeSIQaU3LZ0hmw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_neqWiTHGEeSIQaU3LZ0hmw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_neqWijHGEeSIQaU3LZ0hmw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="active.rule-in-definition.profile.uml#_neZ30DHGEeSIQaU3LZ0hmw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nepIYTHGEeSIQaU3LZ0hmw" x="500" y="160" width="261" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xPxEMDHGEeSIQaU3LZ0hmw" type="1014">
+ <children xmi:type="notation:DecorationNode" xmi:id="_xPxrQDHGEeSIQaU3LZ0hmw" type="1015"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xPxrQTHGEeSIQaU3LZ0hmw" type="5063"/>
+ <element xmi:type="uml:Constraint" href="active.rule-in-definition.profile.uml#_xPHj8DHGEeSIQaU3LZ0hmw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xPxEMTHGEeSIQaU3LZ0hmw" x="500" y="300" width="261" height="61"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_nLZ7geGyEeOvkKBujXdKCg"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_nLZ7guGyEeOvkKBujXdKCg">
+ <owner xmi:type="uml:Profile" href="active.rule-in-definition.profile.uml#_GkQEIOGnEeO2stwZ2ZCXww"/>
+ </styles>
+ <element xmi:type="uml:Profile" href="active.rule-in-definition.profile.uml#_GkQEIOGnEeO2stwZ2ZCXww"/>
+ <edges xmi:type="notation:Connector" xmi:id="_pD1cwOGyEeOvkKBujXdKCg" type="1013" source="_oWSaQOGyEeOvkKBujXdKCg" target="_pDqdoOGyEeOvkKBujXdKCg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_pD1cweGyEeOvkKBujXdKCg"/>
+ <element xmi:type="uml:Extension" href="active.rule-in-definition.profile.uml#_tkX0QOGoEeOLd684kqvD2g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pD1cwuGyEeOvkKBujXdKCg" points="[-66, -50, 226, 174]$[-292, -224, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pdDOAOGyEeOvkKBujXdKCg" id="(0.5050505050505051,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pdD1EOGyEeOvkKBujXdKCg" id="(0.18484288354898337,0.8)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_KghkwOV-EeOFd8atAXGFIA" type="1013" source="_CSsAoOV-EeOFd8atAXGFIA" target="_JlOaIOV-EeOFd8atAXGFIA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_KghkweV-EeOFd8atAXGFIA"/>
+ <element xmi:type="uml:Extension" href="active.rule-in-definition.profile.uml#_Kga3EOV-EeOFd8atAXGFIA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KghkwuV-EeOFd8atAXGFIA" points="[1, -13, 15, 115]$[36, -126, 50, 2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KgnEUOV-EeOFd8atAXGFIA" id="(0.49504950495049505,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XQzzkO2FEeOySPMTnt--qw" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_YT6K8C9SEeSOA6dgmIDYmA" type="8500" source="_uV0TwOGyEeOvkKBujXdKCg" target="_oWSaQOGyEeOvkKBujXdKCg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_YT6K8S9SEeSOA6dgmIDYmA"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YT6K8i9SEeSOA6dgmIDYmA" points="[-27, 3, 112, -14]$[-117, 15, 22, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YUNF4C9SEeSOA6dgmIDYmA" id="(0.4975124378109453,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YUNs8C9SEeSOA6dgmIDYmA" id="(0.5505050505050505,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_uGtBgDHGEeSIQaU3LZ0hmw" type="1013" source="_nepIYDHGEeSIQaU3LZ0hmw" target="_pDqdoOGyEeOvkKBujXdKCg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_uGtBgTHGEeSIQaU3LZ0hmw"/>
+ <element xmi:type="uml:Extension" href="active.rule-in-definition.profile.uml#_uGpXIDHGEeSIQaU3LZ0hmw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uGtBgjHGEeSIQaU3LZ0hmw" points="[2, -9, 0, 76]$[44, -79, 42, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uGxS8DHGEeSIQaU3LZ0hmw" id="(0.47126436781609193,0.1111111111111111)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uGxS8THGEeSIQaU3LZ0hmw" id="(0.7486136783733827,0.88)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_xrjoUDHGEeSIQaU3LZ0hmw" type="8500" source="_xPxEMDHGEeSIQaU3LZ0hmw" target="_nepIYDHGEeSIQaU3LZ0hmw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_xrjoUTHGEeSIQaU3LZ0hmw"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xrjoUjHGEeSIQaU3LZ0hmw" points="[-47, -50, 71, 78]$[-127, -109, -9, 19]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xrmroDHGEeSIQaU3LZ0hmw" id="(0.4979253112033195,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xrmroTHGEeSIQaU3LZ0hmw" id="(0.46360153256704983,0.7654320987654321)"/>
+ </edges>
+</notation:Diagram>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active.rule-in-definition.profile.uml b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active.rule-in-definition.profile.uml
new file mode 100644
index 00000000000..253eeae0e8b
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active.rule-in-definition.profile.uml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:PapyrusDSMLValidationRule="http://www.eclipse.org/papyrus/dsmlvalidation" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <uml:Profile xmi:id="_GkQEIOGnEeO2stwZ2ZCXww" name="profile" metaclassReference="_sAN54OGoEeOLd684kqvD2g _JlLW0OV-EeOFd8atAXGFIA">
+ <eAnnotations xmi:id="_xI9JwOGyEeOvkKBujXdKCg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <contents xmi:type="ecore:EPackage" xmi:id="_N8d5MDHHEeSIQaU3LZ0hmw" name="profile" nsURI="http:///schemas/profile/_N8bc8DHHEeSIQaU3LZ0hmw/6" nsPrefix="profile">
+ <eAnnotations xmi:id="_N8d5MTHHEeSIQaU3LZ0hmw" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_N8d5MjHHEeSIQaU3LZ0hmw" key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
+ </eAnnotations>
+ <eAnnotations xmi:id="_N8iKoDHHEeSIQaU3LZ0hmw" source="PapyrusVersion">
+ <details xmi:id="_N8iKoTHHEeSIQaU3LZ0hmw" key="Version" value="0.0.7"/>
+ <details xmi:id="_N8iKojHHEeSIQaU3LZ0hmw" key="Comment" value=""/>
+ <details xmi:id="_N8iKozHHEeSIQaU3LZ0hmw" key="Copyright" value=""/>
+ <details xmi:id="_N8iKpDHHEeSIQaU3LZ0hmw" key="Date" value="2014-09-01"/>
+ <details xmi:id="_N8iKpTHHEeSIQaU3LZ0hmw" key="Author" value=""/>
+ </eAnnotations>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_N8d5MzHHEeSIQaU3LZ0hmw" name="AlwaysActive">
+ <eAnnotations xmi:id="_N8d5NDHHEeSIQaU3LZ0hmw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_pG-b4OGoEeOLd684kqvD2g"/>
+ <eOperations xmi:id="_N8d5NTHHEeSIQaU3LZ0hmw" name="ConstraintAlwaysActive">
+ <eAnnotations xmi:id="_N8d5NjHHEeSIQaU3LZ0hmw" source="http://www.eclipse.org/emf/2002/Ecore/OCL">
+ <details xmi:id="_N8d5NzHHEeSIQaU3LZ0hmw" key="body" value="base_Class.isActive"/>
+ </eAnnotations>
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eParameters xmi:id="_N8d5OTHHEeSIQaU3LZ0hmw" name="diagnostics">
+ <eAnnotations xmi:id="_N8d5OjHHEeSIQaU3LZ0hmw" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_N8d5OzHHEeSIQaU3LZ0hmw" key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
+ </eParameters>
+ <eParameters xmi:id="_N8d5PTHHEeSIQaU3LZ0hmw" name="context">
+ <eAnnotations xmi:id="_N8d5PjHHEeSIQaU3LZ0hmw" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_N8d5PzHHEeSIQaU3LZ0hmw" key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType xmi:id="_N8d5QDHHEeSIQaU3LZ0hmw">
+ <eTypeArguments xmi:id="_N8d5QTHHEeSIQaU3LZ0hmw">
+ <eClassifier xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eTypeArguments>
+ <eTypeArguments xmi:id="_N8d5QjHHEeSIQaU3LZ0hmw">
+ <eClassifier xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eTypeArguments>
+ <eClassifier xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_N8d5QzHHEeSIQaU3LZ0hmw" name="base_Class" ordered="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_N8d5RTHHEeSIQaU3LZ0hmw" name="Tst">
+ <eAnnotations xmi:id="_N8d5RjHHEeSIQaU3LZ0hmw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CSo9UOV-EeOFd8atAXGFIA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_N8d5RzHHEeSIQaU3LZ0hmw" name="base_Package" ordered="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Package"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_N8d5STHHEeSIQaU3LZ0hmw" name="AlwaysActiveMalformed">
+ <eAnnotations xmi:id="_N8d5SjHHEeSIQaU3LZ0hmw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_neZ30DHGEeSIQaU3LZ0hmw"/>
+ <eOperations xmi:id="_N8d5SzHHEeSIQaU3LZ0hmw" name="ConstraintAlwaysActiveMF">
+ <eAnnotations xmi:id="_N8d5TDHHEeSIQaU3LZ0hmw" source="http://www.eclipse.org/emf/2002/Ecore/OCL">
+ <details xmi:id="_N8d5TTHHEeSIQaU3LZ0hmw" key="body" value="self.oclAsType(Class).isActive"/>
+ </eAnnotations>
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eParameters xmi:id="_N8d5TzHHEeSIQaU3LZ0hmw" name="diagnostics">
+ <eAnnotations xmi:id="_N8d5UDHHEeSIQaU3LZ0hmw" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_N8d5UTHHEeSIQaU3LZ0hmw" key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
+ </eParameters>
+ <eParameters xmi:id="_N8d5UzHHEeSIQaU3LZ0hmw" name="context">
+ <eAnnotations xmi:id="_N8d5VDHHEeSIQaU3LZ0hmw" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_N8d5VTHHEeSIQaU3LZ0hmw" key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType xmi:id="_N8d5VjHHEeSIQaU3LZ0hmw">
+ <eTypeArguments xmi:id="_N8d5VzHHEeSIQaU3LZ0hmw">
+ <eClassifier xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eTypeArguments>
+ <eTypeArguments xmi:id="_N8d5WDHHEeSIQaU3LZ0hmw">
+ <eClassifier xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eTypeArguments>
+ <eClassifier xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_N8d5WTHHEeSIQaU3LZ0hmw" name="base_Class" ordered="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ </eAnnotations>
+ <elementImport xmi:id="_sAN54OGoEeOLd684kqvD2g" alias="Class">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </elementImport>
+ <elementImport xmi:id="_JlLW0OV-EeOFd8atAXGFIA" alias="Package">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ </elementImport>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_pG-b4OGoEeOLd684kqvD2g" name="AlwaysActive">
+ <ownedRule xmi:id="_uHg9kOGoEeOLd684kqvD2g" name="ConstraintAlwaysActive">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_xQ_P8OGoEeOLd684kqvD2g">
+ <language>OCL</language>
+ <body>base_Class.isActive</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_tkXNMOGoEeOLd684kqvD2g" name="base_Class" association="_tkX0QOGoEeOLd684kqvD2g">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_tkX0QOGoEeOLd684kqvD2g" name="E_AlwaysActive_Class1" memberEnd="_tkX0QeGoEeOLd684kqvD2g _tkXNMOGoEeOLd684kqvD2g">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_tkX0QeGoEeOLd684kqvD2g" name="extension_AlwaysActive" type="_pG-b4OGoEeOLd684kqvD2g" aggregation="composite" association="_tkX0QOGoEeOLd684kqvD2g"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_CSo9UOV-EeOFd8atAXGFIA" name="Tst">
+ <ownedAttribute xmi:id="_KgaQAOV-EeOFd8atAXGFIA" name="base_Package" association="_Kga3EOV-EeOFd8atAXGFIA">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_Kga3EOV-EeOFd8atAXGFIA" name="E_Tst_Package1" memberEnd="_Kga3EeV-EeOFd8atAXGFIA _KgaQAOV-EeOFd8atAXGFIA">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_Kga3EeV-EeOFd8atAXGFIA" name="extension_Tst" type="_CSo9UOV-EeOFd8atAXGFIA" aggregation="composite" association="_Kga3EOV-EeOFd8atAXGFIA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_neZ30DHGEeSIQaU3LZ0hmw" name="AlwaysActiveMalformed">
+ <ownedRule xmi:id="_xPHj8DHGEeSIQaU3LZ0hmw" name="ConstraintAlwaysActiveMF">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_02t8wDHGEeSIQaU3LZ0hmw">
+ <language>OCL</language>
+ <body>self.oclAsType(Class).isActive</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_uGowEDHGEeSIQaU3LZ0hmw" name="base_Class" association="_uGpXIDHGEeSIQaU3LZ0hmw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_uGpXIDHGEeSIQaU3LZ0hmw" name="E_AlwaysActiveMalformed_Class1" memberEnd="_uGpXITHGEeSIQaU3LZ0hmw _uGowEDHGEeSIQaU3LZ0hmw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_uGpXITHGEeSIQaU3LZ0hmw" name="extension_AlwaysActiveMalformed" type="_neZ30DHGEeSIQaU3LZ0hmw" aggregation="composite" association="_uGpXIDHGEeSIQaU3LZ0hmw"/>
+ </packagedElement>
+ <profileApplication xmi:id="_EKPz8OG0EeOljYnPInggmQ">
+ <eAnnotations xmi:id="_EVNt0OG0EeOljYnPInggmQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/dsmlvalidation#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://DSMLValidation_PROFILES/PapyrusValidationRuleDSML.uml#__sUW0OhNEeCjcc2EgK3Uwg"/>
+ </profileApplication>
+ </uml:Profile>
+ <PapyrusDSMLValidationRule:ValidationRule xmi:id="_HiHHoOG0EeOljYnPInggmQ" base_Constraint="_uHg9kOGoEeOLd684kqvD2g" message="Custom message"/>
+</xmi:XMI>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active.rule-in-plugin.profile.di b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active.rule-in-plugin.profile.di
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/active.rule-in-plugin.profile.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/instanceSpecification.di b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/instanceSpecification.di
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/instanceSpecification.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/instanceSpecification.notation b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/instanceSpecification.notation
new file mode 100644
index 00000000000..43c4a817ca0
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/instanceSpecification.notation
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_WnybYKVfEeW4s_E9GftyFw" type="PapyrusUMLClassDiagram" name="Constraint+Instance" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_XOOJQKVfEeW4s_E9GftyFw" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XOOwUKVfEeW4s_E9GftyFw" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XOOwUaVfEeW4s_E9GftyFw" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XOOwUqVfEeW4s_E9GftyFw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XOPXYKVfEeW4s_E9GftyFw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XOPXYaVfEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XOPXYqVfEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XOPXY6VfEeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XOPXZKVfEeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XOPXZaVfEeW4s_E9GftyFw" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XOPXZqVfEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XOPXZ6VfEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XOPXaKVfEeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XOPXaaVfEeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XOPXaqVfEeW4s_E9GftyFw" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XOPXa6VfEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XOPXbKVfEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XOPXbaVfEeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XOPXbqVfEeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:Class" href="instanceSpecification.uml#_5ktJYKhfEeOr1u-v4EL04w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XOOJQaVfEeW4s_E9GftyFw" x="80" y="99" width="181"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_d0zbsKVfEeW4s_E9GftyFw" type="2011">
+ <children xmi:type="notation:DecorationNode" xmi:id="_d00CwKVfEeW4s_E9GftyFw" type="5037"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_d00CwaVfEeW4s_E9GftyFw" type="5159"/>
+ <element xmi:type="uml:Constraint" href="instanceSpecification.uml#_Lg8WYKhpEeOgS_WPNFAhog"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d0zbsaVfEeW4s_E9GftyFw" x="380" y="102" width="161"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_wrGzUKVfEeW4s_E9GftyFw" type="2001">
+ <children xmi:type="notation:DecorationNode" xmi:id="_wrHaYKVfEeW4s_E9GftyFw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wrHaYaVfEeW4s_E9GftyFw" type="8505">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wrHaYqVfEeW4s_E9GftyFw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wrHaY6VfEeW4s_E9GftyFw" type="7001">
+ <children xmi:type="notation:Shape" xmi:id="_3JJNwKVfEeW4s_E9GftyFw" type="3030">
+ <element xmi:type="uml:Slot" href="instanceSpecification.uml#_GB9lMKhpEeOgS_WPNFAhog"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3JJNwaVfEeW4s_E9GftyFw"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wrHaZKVfEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wrHaZaVfEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wrHaZqVfEeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wrHaZ6VfEeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:InstanceSpecification" href="instanceSpecification.uml#_EXC7gKhpEeOgS_WPNFAhog"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wrGzUaVfEeW4s_E9GftyFw" x="80" y="299" width="341" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_4rmfAKVfEeW4s_E9GftyFw" type="2012">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4rnGEKVfEeW4s_E9GftyFw" type="5038"/>
+ <element xmi:type="uml:Comment" href="instanceSpecification.uml#_4rl38KVfEeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4rmfAaVfEeW4s_E9GftyFw" x="523" y="297" width="328" height="78"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7IQSMKVgEeW4s_E9GftyFw" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7IQSMaVgEeW4s_E9GftyFw" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_7IQ5QKVgEeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:InstanceSpecification" href="instanceSpecification.uml#_EXC7gKhpEeOgS_WPNFAhog"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7IQSMqVgEeW4s_E9GftyFw" x="301" y="299"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_WnybYaVfEeW4s_E9GftyFw" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_WnybYqVfEeW4s_E9GftyFw"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_WnybY6VfEeW4s_E9GftyFw">
+ <owner xmi:type="uml:Model" href="instanceSpecification.uml#_u3QIMKhfEeOr1u-v4EL04w"/>
+ </styles>
+ <element xmi:type="uml:Model" href="instanceSpecification.uml#_u3QIMKhfEeOr1u-v4EL04w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_eIOuAKVfEeW4s_E9GftyFw" type="8500" source="_d0zbsKVfEeW4s_E9GftyFw" target="_XOOJQKVfEeW4s_E9GftyFw" routing="Rectilinear">
+ <children xmi:type="notation:DecorationNode" xmi:id="_eIOuA6VfEeW4s_E9GftyFw" type="8501">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kr0W0KVfEeW4s_E9GftyFw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eIOuBKVfEeW4s_E9GftyFw" y="-22"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_eIOuAaVfEeW4s_E9GftyFw"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eIOuAqVfEeW4s_E9GftyFw" points="[373, 141, -643984, -643984]$[254, 141, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_krveUKVfEeW4s_E9GftyFw" id="(0.0,0.6333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_krveUaVfEeW4s_E9GftyFw" id="(1.0,0.41)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ACqzMKVgEeW4s_E9GftyFw" type="4013" source="_4rmfAKVfEeW4s_E9GftyFw" target="_wrGzUKVfEeW4s_E9GftyFw" routing="Rectilinear">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ACqzMaVgEeW4s_E9GftyFw"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ACqzMqVgEeW4s_E9GftyFw" points="[523, 334, -643984, -643984]$[428, 334, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AC3ngKVgEeW4s_E9GftyFw" id="(0.0,0.41379310344827586)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AC4OkKVgEeW4s_E9GftyFw" id="(1.0,0.4146341463414634)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_7IQ5QaVgEeW4s_E9GftyFw" type="StereotypeCommentLink" source="_wrGzUKVfEeW4s_E9GftyFw" target="_7IQSMKVgEeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_7IQ5QqVgEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_7IQ5RqVgEeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:InstanceSpecification" href="instanceSpecification.uml#_EXC7gKhpEeOgS_WPNFAhog"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7IQ5Q6VgEeW4s_E9GftyFw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7IQ5RKVgEeW4s_E9GftyFw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7IQ5RaVgEeW4s_E9GftyFw"/>
+ </edges>
+</notation:Diagram>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/instanceSpecification.uml b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/instanceSpecification.uml
new file mode 100644
index 00000000000..e3c51846f3f
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/instanceSpecification.uml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:ocl4uml="http://www.eclipse.org/ocl/2015/OCLforUML/1" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <uml:Model xmi:id="_u3QIMKhfEeOr1u-v4EL04w" name="instanceSpecification">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_4rl38KVfEeW4s_E9GftyFw" annotatedElement="_EXC7gKhpEeOgS_WPNFAhog">
+ <body>Instance specification violates constraint for price attribute
+The OCLforUML stereotype guarantees is required to activate OCL validation for this instance specification</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_5ktJYKhfEeOr1u-v4EL04w" name="ClassWithConstraint">
+ <ownedRule xmi:type="uml:Constraint" xmi:id="_Lg8WYKhpEeOgS_WPNFAhog" name="PriceConstraint">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_QpI_QKhpEeOgS_WPNFAhog">
+ <language>OCL</language>
+ <body>price > 0</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_7BYiwKhfEeOr1u-v4EL04w" name="price" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-1H6IKhfEeOr1u-v4EL04w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-1JvUKhfEeOr1u-v4EL04w" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_EXC7gKhpEeOgS_WPNFAhog" name="instance" classifier="_5ktJYKhfEeOr1u-v4EL04w">
+ <slot xmi:type="uml:Slot" xmi:id="_GB9lMKhpEeOgS_WPNFAhog" definingFeature="_7BYiwKhfEeOr1u-v4EL04w">
+ <value xmi:type="uml:LiteralInteger" xmi:id="_Kvu74KhpEeOgS_WPNFAhog" name="Minus5" value="-5"/>
+ </slot>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_4k0FEKVgEeW4s_E9GftyFw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4k1TMKVgEeW4s_E9GftyFw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/ocl/2015/OCLforUML/1#/"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://OCL_PROFILES/OCLforUML.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <ocl4uml:Validation xmi:id="_7FR2sKVgEeW4s_E9GftyFw" base_InstanceSpecification="_EXC7gKhpEeOgS_WPNFAhog" validate="true"/>
+</xmi:XMI>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.di b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.di
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.notation b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.notation
new file mode 100644
index 00000000000..611fed1eb43
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.notation
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_tivRMKWAEeW4s_E9GftyFw" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_uHztIKWAEeW4s_E9GftyFw" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_uH0UMKWAEeW4s_E9GftyFw" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uH0UMaWAEeW4s_E9GftyFw" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uH0UMqWAEeW4s_E9GftyFw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uH0UM6WAEeW4s_E9GftyFw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_uH0UNKWAEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_uH0UNaWAEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_uH0UNqWAEeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uH0UN6WAEeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uH0UOKWAEeW4s_E9GftyFw" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_uH0UOaWAEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_uH0UOqWAEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_uH0UO6WAEeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uH0UPKWAEeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uH0UPaWAEeW4s_E9GftyFw" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_uH0UPqWAEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_uH0UP6WAEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_uH0UQKWAEeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uH0UQaWAEeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:Class" href="simple.uml#_uHzGEKWAEeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uHztIaWAEeW4s_E9GftyFw" x="174" y="99" width="250" height="124"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_BsDI0KWBEeW4s_E9GftyFw" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BsDI0aWBEeW4s_E9GftyFw" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_BsDI06WBEeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="simple.uml#_uHzGEKWAEeW4s_E9GftyFw"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BsDI0qWBEeW4s_E9GftyFw" x="374" y="99"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_tivRMaWAEeW4s_E9GftyFw" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_tivRMqWAEeW4s_E9GftyFw"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_tivRM6WAEeW4s_E9GftyFw">
+ <owner xmi:type="uml:Model" href="simple.uml#_n5yEoKWAEeW4s_E9GftyFw"/>
+ </styles>
+ <element xmi:type="uml:Model" href="simple.uml#_n5yEoKWAEeW4s_E9GftyFw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_BsDI1KWBEeW4s_E9GftyFw" type="StereotypeCommentLink" source="_uHztIKWAEeW4s_E9GftyFw" target="_BsDI0KWBEeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_BsDI1aWBEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_BsDI2aWBEeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="simple.uml#_uHzGEKWAEeW4s_E9GftyFw"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BsDI1qWBEeW4s_E9GftyFw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BsDI16WBEeW4s_E9GftyFw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BsDI2KWBEeW4s_E9GftyFw"/>
+ </edges>
+</notation:Diagram>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.profile.di b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.profile.di
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.profile.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.profile.notation b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.profile.notation
new file mode 100644
index 00000000000..e66e12da098
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.profile.notation
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_N3HM8KWAEeW4s_E9GftyFw" type="PapyrusUMLProfileDiagram" name="ProfileDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_OYrB4KWAEeW4s_E9GftyFw" type="1026">
+ <children xmi:type="notation:DecorationNode" xmi:id="_OYrB4qWAEeW4s_E9GftyFw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_OYro8KWAEeW4s_E9GftyFw" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_PA11IKWAEeW4s_E9GftyFw" type="3002">
+ <element xmi:type="uml:Property" href="simple.profile.uml#_dTBnQJnNEeWYtqO0PaPS_g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PA11IaWAEeW4s_E9GftyFw"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_OYro8aWAEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_OYro8qWAEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_OYro86WAEeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OYro9KWAEeW4s_E9GftyFw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_OYro9aWAEeW4s_E9GftyFw" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_OYro9qWAEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_OYro96WAEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_OYro-KWAEeW4s_E9GftyFw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OYro-aWAEeW4s_E9GftyFw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="simple.profile.uml#_Ydk7QJnNEeWYtqO0PaPS_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OYrB4aWAEeW4s_E9GftyFw" x="140" y="131" width="241" height="102"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_yzPhgKWAEeW4s_E9GftyFw" type="1031">
+ <children xmi:type="notation:DecorationNode" xmi:id="_yzPhgqWAEeW4s_E9GftyFw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yzPhg6WAEeW4s_E9GftyFw" x="140" y="11" width="241"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_yzhOUKWAEeW4s_E9GftyFw" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_yzhOUaWAEeW4s_E9GftyFw" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_yzhOU6WAEeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yzhOUqWAEeW4s_E9GftyFw" x="338" y="11"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_N3HM8aWAEeW4s_E9GftyFw" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_N3HM8qWAEeW4s_E9GftyFw"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_N3HM86WAEeW4s_E9GftyFw">
+ <owner xmi:type="uml:Profile" href="simple.profile.uml#_Vk7TIJnNEeWYtqO0PaPS_g"/>
+ </styles>
+ <element xmi:type="uml:Profile" href="simple.profile.uml#_Vk7TIJnNEeWYtqO0PaPS_g"/>
+ <edges xmi:type="notation:Connector" xmi:id="_yzhOVKWAEeW4s_E9GftyFw" type="StereotypeCommentLink" source="_yzPhgKWAEeW4s_E9GftyFw" target="_yzhOUKWAEeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_yzhOVaWAEeW4s_E9GftyFw"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_yzh1YKWAEeW4s_E9GftyFw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yzhOVqWAEeW4s_E9GftyFw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yzhOV6WAEeW4s_E9GftyFw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yzhOWKWAEeW4s_E9GftyFw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3fi4kKWAEeW4s_E9GftyFw" type="1013" source="_OYrB4KWAEeW4s_E9GftyFw" target="_yzPhgKWAEeW4s_E9GftyFw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_3fi4kaWAEeW4s_E9GftyFw"/>
+ <element xmi:type="uml:Extension" href="simple.profile.uml#_3fWEQKWAEeW4s_E9GftyFw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3fi4kqWAEeW4s_E9GftyFw" points="[260, 131, -643984, -643984]$[260, 61, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3ft3sKWAEeW4s_E9GftyFw" id="(0.4979253112033195,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3ft3saWAEeW4s_E9GftyFw" id="(0.4979253112033195,1.0)"/>
+ </edges>
+</notation:Diagram>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.profile.uml b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.profile.uml
new file mode 100644
index 00000000000..c55944a1f3a
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.profile.uml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Profile xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_Vk7TIJnNEeWYtqO0PaPS_g" name="SimpleProfile" metaclassReference="_yzOTYKWAEeW4s_E9GftyFw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kFxngKWAEeW4s_E9GftyFw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <contents xmi:type="ecore:EPackage" xmi:id="_5saYwKWAEeW4s_E9GftyFw" name="SimpleProfile" nsURI="http:///schemas/SimpleProfile/_5sX8gKWAEeW4s_E9GftyFw/0" nsPrefix="SimpleProfile">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5sbm4KWAEeW4s_E9GftyFw" source="PapyrusVersion">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5sbm4aWAEeW4s_E9GftyFw" key="Version" value="0.0.1"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5sbm4qWAEeW4s_E9GftyFw" key="Comment" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5sbm46WAEeW4s_E9GftyFw" key="Copyright" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5sbm5KWAEeW4s_E9GftyFw" key="Date" value="2015-12-18"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5sbm5aWAEeW4s_E9GftyFw" key="Author" value=""/>
+ </eAnnotations>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_5saYwaWAEeW4s_E9GftyFw" name="Stereotype1">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5saYwqWAEeW4s_E9GftyFw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Ydk7QJnNEeWYtqO0PaPS_g"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_5saYw6WAEeW4s_E9GftyFw" name="requiredAttribute" ordered="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/5.0.0/Types#//String"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_5saYxaWAEeW4s_E9GftyFw" name="base_Class" ordered="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ </eAnnotations>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_yzOTYKWAEeW4s_E9GftyFw" alias="Class">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </elementImport>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_c1Nj8KWAEeW4s_E9GftyFw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_Ydk7QJnNEeWYtqO0PaPS_g" name="Stereotype1">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_dTBnQJnNEeWYtqO0PaPS_g" name="requiredAttribute" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_SRMLkKWAEeW4s_E9GftyFw">
+ <body>+ requiredAttribute : String {unique}</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_3fZuoKWAEeW4s_E9GftyFw" name="base_Class" association="_3fWEQKWAEeW4s_E9GftyFw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_3fWEQKWAEeW4s_E9GftyFw" name="E_Stereotype1_Class1" memberEnd="_3fZHkKWAEeW4s_E9GftyFw _3fZuoKWAEeW4s_E9GftyFw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_3fZHkKWAEeW4s_E9GftyFw" name="extension_Stereotype1" type="_Ydk7QJnNEeWYtqO0PaPS_g" aggregation="composite" association="_3fWEQKWAEeW4s_E9GftyFw"/>
+ </packagedElement>
+</uml:Profile>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.uml b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.uml
new file mode 100644
index 00000000000..1b92aa09a18
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/resources/simple.uml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SimpleProfile="http:///schemas/SimpleProfile/_5sX8gKWAEeW4s_E9GftyFw/0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http:///schemas/SimpleProfile/_5sX8gKWAEeW4s_E9GftyFw/0 simple.profile.uml#_5saYwKWAEeW4s_E9GftyFw">
+ <uml:Model xmi:id="_n5yEoKWAEeW4s_E9GftyFw" name="simple">
+ <packagedElement xmi:type="uml:Class" xmi:id="_uHzGEKWAEeW4s_E9GftyFw" name="Class1"/>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_sWuxEKWAEeW4s_E9GftyFw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__R_hMKWAEeW4s_E9GftyFw" source="PapyrusVersion">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__R_hMaWAEeW4s_E9GftyFw" key="Version" value="0.0.1"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__R_hMqWAEeW4s_E9GftyFw" key="Comment" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__R_hM6WAEeW4s_E9GftyFw" key="Copyright" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__R_hNKWAEeW4s_E9GftyFw" key="Date" value="2015-12-18"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__R_hNaWAEeW4s_E9GftyFw" key="Author" value=""/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sWvYIKWAEeW4s_E9GftyFw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="simple.profile.uml#_5saYwKWAEeW4s_E9GftyFw"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="simple.profile.uml#_Vk7TIJnNEeWYtqO0PaPS_g"/>
+ </profileApplication>
+ </uml:Model>
+ <SimpleProfile:Stereotype1 xmi:id="_Br6l8KWBEeW4s_E9GftyFw" base_Class="_uHzGEKWAEeW4s_E9GftyFw"/>
+</xmi:XMI>
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/Activator.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/Activator.java
new file mode 100644
index 00000000000..22a8a350e0c
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/Activator.java
@@ -0,0 +1,67 @@
+/*****************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Benoit Maggi (CEA LIST) benoit.maggi@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.validation.tests;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.uml.validation.tests"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/AllTests.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/AllTests.java
new file mode 100644
index 00000000000..e91c950e977
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/AllTests.java
@@ -0,0 +1,69 @@
+/*****************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Benoit Maggi (CEA LIST) benoit.maggi@cea.fr - Initial API and implementation
+ * Ansgar Radermacher (CEA) ansgar.radermacher@cea.fr - Extension to validation test suite
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.validation.tests;
+
+
+import org.eclipse.papyrus.uml.validation.tests.rules.TestOCLConstraintOnInstanceSpec;
+import org.eclipse.papyrus.uml.validation.tests.rules.TestOCLValidationRuleFromFile;
+import org.eclipse.papyrus.uml.validation.tests.rules.TestStereotypeValidation;
+import org.eclipse.papyrus.uml.validation.tests.rules.TestUMLValidationRules;
+import org.eclipse.papyrus.uml.validation.tests.rules.TestValidationRulesInPluginXML;
+import org.eclipse.papyrus.uml.validation.tests.rules.TestValidationRulesInProfile;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ * Test suite for validation rules. See suite classes below
+ */
+@RunWith(Suite.class)
+@SuiteClasses({
+
+ /**
+ * Model with OCL constraints on class, verified in instance specification
+ * Model with OCL constraints on redefined attribute of a class.
+ */
+ TestOCLConstraintOnInstanceSpec.class,
+
+ /**
+ * Verify that custom OCL file contributes to validation, see bug 408215* Sample test for cut in model explorer
+ */
+ TestOCLValidationRuleFromFile.class,
+
+ /**
+ * Model with OCL and Java constraints in plugin.xml (EMFv)
+ */
+ TestValidationRulesInPluginXML.class,
+
+ /**
+ * Model with OCL constraints embedded in profile
+ */
+ TestValidationRulesInProfile.class,
+
+ /**
+ * Model with UML warning (identifiers of same name in package),
+ * Model/profile. Model applies a stereotype, but does not set the value of a required stereotype attribute
+ * Model with non-integer multiplicity on attribute (0..MAX)
+ */
+ TestUMLValidationRules.class,
+
+ /**
+ * Model/profile. Model applies a stereotype, but does not set the value of a required stereotype attribute.
+ */
+ TestStereotypeValidation.class
+})
+public class AllTests {
+ // JUnit for test suite
+}
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/Messages.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/Messages.java
new file mode 100644
index 00000000000..5fc7ba11b81
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/Messages.java
@@ -0,0 +1,47 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.validation.tests;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * @author ansgar
+ *
+ */
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.papyrus.uml.validation.tests.messages"; //$NON-NLS-1$
+ public static String TestOCLConstraintOnInstanceSpec_PriceRule;
+ public static String TestOCLValidationRuleFromFile_CamelCaseRule;
+ public static String TestOCLValidationRuleFromFile_CanNotGetEnvFactory;
+ public static String TestOCLValidationRuleFromFile_OCLCanNotLoadMM;
+ public static String TestStereotypeValidation_UnsetRequiredAttribute;
+ public static String TestUMLValidationRules_DetectNameClash;
+ public static String TestUMLValidationRules_NonStandardMultiplicityMayNotImplyError;
+ public static String TestValidationRulesInPluginXML_ConstraintIsMissing;
+ public static String TestValidationRulesInPluginXML_IsActiveShouldNotTriggerIssue;
+ public static String TestValidationRulesInPluginXML_IsActiveShouldTriggerIssue;
+ public static String TestValidationRulesInPluginXML_IsPassiveShouldNotTriggerIssue;
+ public static String TestValidationRulesInPluginXML_IsPassiveShouldTriggerIssue;
+ public static String TestValidationRulesInProfile_IsActiveMalformedShouldTriggerIssue;
+ public static String TestValidationRulesInProfile_IsActiveShouldNotTriggerIssue;
+ public static String TestValidationRulesInProfile_IsActiveShouldTriggerIssue;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/messages.properties b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/messages.properties
new file mode 100644
index 00000000000..0d5b38d5986
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/messages.properties
@@ -0,0 +1,15 @@
+TestOCLConstraintOnInstanceSpec_PriceRule=The OCL price rule should trigger an issue for this instance specification
+TestOCLValidationRuleFromFile_CamelCaseRule=The rule CamelCaseName in %s should trigger an issue for this class
+TestOCLValidationRuleFromFile_CanNotGetEnvFactory=Can not get environment factory
+TestOCLValidationRuleFromFile_OCLCanNotLoadMM=OCL: can not load meta-models
+TestStereotypeValidation_UnsetRequiredAttribute=The unset required stereotype attribute should trigger an issue for class1
+TestUMLValidationRules_DetectNameClash=The standard UML validation should detect a name clash for class %s
+TestUMLValidationRules_NonStandardMultiplicityMayNotImplyError=Non-standard multiplicities as in class %s may not imply an error
+TestValidationRulesInPluginXML_ConstraintIsMissing=Constraint is missing
+TestValidationRulesInPluginXML_IsActiveShouldNotTriggerIssue=The rule isActive should not trigger an issue for class %s
+TestValidationRulesInPluginXML_IsActiveShouldTriggerIssue=The rule isActive should trigger an issue for class %s
+TestValidationRulesInPluginXML_IsPassiveShouldNotTriggerIssue=The rule isPassive should trigger an issue for class %s
+TestValidationRulesInPluginXML_IsPassiveShouldTriggerIssue=The rule isPassive should not trigger an issue for class %s
+TestValidationRulesInProfile_IsActiveMalformedShouldTriggerIssue=The rule isActiveMalformed should trigger an issue for class %s
+TestValidationRulesInProfile_IsActiveShouldNotTriggerIssue=The rule isActive should not trigger an issue for class %s
+TestValidationRulesInProfile_IsActiveShouldTriggerIssue=The rule isActive should trigger an issue for class %s
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/AbstractValidationEditorTest.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/AbstractValidationEditorTest.java
new file mode 100644
index 00000000000..71ec9879cc6
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/AbstractValidationEditorTest.java
@@ -0,0 +1,81 @@
+/*****************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Benoit Maggi (CEA LIST) benoit.maggi@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.validation.tests.rules;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.papyrus.junit.utils.tests.AbstractEditorTest;
+import org.eclipse.uml2.uml.Element;
+
+
+/**
+ * Abstract test for validat
+ * import org.eclipse.uml2.uml.Element;ion rules
+ */
+public abstract class AbstractValidationEditorTest extends AbstractEditorTest {
+
+ protected static final String PLATFORM_PLUGIN = "platform:/plugin/"; //$NON-NLS-1$
+
+ protected static final String VALIDATE_COMMAND_ID = "org.eclipse.papyrus.validation.ValidateModelCommand"; //$NON-NLS-1$
+
+ protected static final String PROJECT_PREFIX = "org.eclipse.testproject."; //$NON-NLS-1$
+
+ protected static final String RESOURCES_PATH = "/resources/"; //$NON-NLS-1$
+
+ protected static final String CAN_NOT_FIND_ELEMENT = "Can not find element %s in model %s"; //$NON-NLS-1$
+
+ /** validation diagnostic */
+ protected Diagnostic globalDiagnostic;
+
+ /**
+ * find diagnostic by source
+ * (Should be unique per element if the source is correctly defined)
+ */
+ public List<Diagnostic> findDiagnosticBySource(Diagnostic diagnostic, String source) {
+ List<Diagnostic> foundDiagnostic = new ArrayList<Diagnostic>();
+ List<Diagnostic> children = diagnostic.getChildren();
+ if (source.equals(diagnostic.getSource())) {
+ foundDiagnostic.add(diagnostic);
+ }
+ if (children != null && !children.isEmpty()) {
+ for (Diagnostic diagnostic2 : children) {
+ foundDiagnostic.addAll(findDiagnosticBySource(diagnostic2, source));
+ }
+ }
+ return foundDiagnostic;
+ }
+
+ public List<Diagnostic> filterDiagnosticsByElement(List<Diagnostic> diagnostics, Element element) {
+ List<Diagnostic> filteredDiagnostics = new ArrayList<Diagnostic>();
+ for (Diagnostic diagnostic : diagnostics) {
+ List<?> datas = diagnostic.getData();
+ if (datas != null && !datas.isEmpty()) {
+ // try to get first element. According to Diagnostic#getData() documentation : The first element is typically the object that is the primary source of the problem;
+ Object o = datas.get(0);
+ if (element.equals(o)) {
+ filteredDiagnostics.add(diagnostic);
+ }
+ }
+ }
+ return filteredDiagnostics;
+ }
+
+ @Override
+ protected String getSourcePath() {
+ return RESOURCES_PATH;
+ }
+}
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestOCLConstraintOnInstanceSpec.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestOCLConstraintOnInstanceSpec.java
new file mode 100644
index 00000000000..aad98f65485
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestOCLConstraintOnInstanceSpec.java
@@ -0,0 +1,77 @@
+/*****************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Benoit Maggi (CEA LIST) benoit.maggi@cea.fr - Initial API and implementation
+ * Ansgar Radermacher (CEA) ansgar.radermacher@cea.fr - Extension to validation test suite
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.validation.tests.rules;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.papyrus.commands.wrappers.GMFtoEMFCommandWrapper;
+import org.eclipse.papyrus.infra.services.validation.commands.ValidateModelCommand;
+import org.eclipse.papyrus.uml.validation.tests.Activator;
+import org.eclipse.papyrus.uml.validation.tests.Messages;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Model;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Test suite for validation rules. It tests
+ * - Model with OCL constraints on class, verified in instance specification
+ * - Model with OCL constraints on redefined attribute of a class.
+ */
+public class TestOCLConstraintOnInstanceSpec extends AbstractValidationEditorTest {
+
+ public static final String MODEL_NAME = "instanceSpecification"; //$NON-NLS-1$
+
+ public final static String INSTANCE_NAME = "instance"; //$NON-NLS-1$
+
+ /** instance specification with constraint violation */
+ protected InstanceSpecification instance;
+
+ @Before
+ public void initModelForValidationTest() throws Exception {
+ initModel(PROJECT_PREFIX + MODEL_NAME, MODEL_NAME, Activator.getDefault().getBundle());
+
+ Model model = (Model) getRootUMLModel();
+
+ instance = (InstanceSpecification) model.getPackagedElement(INSTANCE_NAME);
+ Assert.assertNotNull(String.format(CAN_NOT_FIND_ELEMENT, INSTANCE_NAME, model), instance);
+
+ final EditingDomain domain = TransactionUtil.getEditingDomain(model);
+ final ValidateModelCommand validateModelCommand = new ValidateModelCommand(model);
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ domain.getCommandStack().execute(GMFtoEMFCommandWrapper.wrap(validateModelCommand));
+ }
+ });
+
+ globalDiagnostic = validateModelCommand.getDiagnostic();
+ }
+
+ /**
+ * Validation needs to create an entry for the violated constraint of the instance specification
+ */
+ @Test
+ public void validateOCLOnInstanceSpec() throws Exception {
+ // get the diagnostic and check for the given class
+ List<Diagnostic> diagnostics = filterDiagnosticsByElement(globalDiagnostic.getChildren(), instance);
+ Assert.assertEquals(Messages.TestOCLConstraintOnInstanceSpec_PriceRule, 1, diagnostics.size());
+ }
+}
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestOCLValidationRuleFromFile.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestOCLValidationRuleFromFile.java
new file mode 100644
index 00000000000..e46e1e71a42
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestOCLValidationRuleFromFile.java
@@ -0,0 +1,116 @@
+/*****************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Benoit Maggi (CEA LIST) benoit.maggi@cea.fr - Initial API and implementation
+ * Ansgar Radermacher (CEA) ansgar.radermacher@cea.fr - Extension to validation test suite
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.validation.tests.rules;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.ocl.pivot.internal.resource.OCLAdapter;
+import org.eclipse.ocl.xtext.completeocl.utilities.CompleteOCLLoader;
+import org.eclipse.papyrus.commands.wrappers.GMFtoEMFCommandWrapper;
+import org.eclipse.papyrus.infra.services.validation.commands.ValidateModelCommand;
+import org.eclipse.papyrus.uml.validation.tests.Activator;
+import org.eclipse.papyrus.uml.validation.tests.Messages;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.Package;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Test suite for validation rules:
+ * Verify that custom OCL file contributes to validation, see bug 408215* Sample test for cut in model explorer
+ */
+public class TestOCLValidationRuleFromFile extends AbstractValidationEditorTest {
+
+ protected static final String EXTRA_UML_VALIDATION_OCL = "ExtraUMLValidation.ocl"; //$NON-NLS-1$
+
+ protected static final String CONSTRAINT_ID = "isActiveEntity"; //$NON-NLS-1$
+
+ protected static final String MODEL_NAME = "UMLValidationTests"; //$NON-NLS-1$
+
+ protected static final String PKG_OCL_FROM_FILE = "oclFromFile"; //$NON-NLS-1$
+
+ protected final static String CLASS_LOWER_CASE = "lowerCaseClass"; //$NON-NLS-1$
+
+ /* class starting with a lower case name (violates constraint in external OCL file) */
+ protected Class lowerCaseClass;
+
+ @Before
+ public void initModelForValidationTest() throws Exception {
+ initModel(PROJECT_PREFIX + MODEL_NAME, MODEL_NAME, Activator.getDefault().getBundle());
+
+ Model model = (Model) getRootUMLModel();
+ Package pkg = (Package) model.getPackagedElement(PKG_OCL_FROM_FILE);
+ Assert.assertNotNull(String.format(CAN_NOT_FIND_ELEMENT, PKG_OCL_FROM_FILE, model), pkg);
+
+ lowerCaseClass = (Class) pkg.getPackagedElement(CLASS_LOWER_CASE);
+ Assert.assertNotNull(String.format(CAN_NOT_FIND_ELEMENT, CLASS_LOWER_CASE, model), lowerCaseClass);
+
+ // Registering OCL components
+ //
+ ResourceSet modelResources = model.eResource().getResourceSet();
+ OCLAdapter oclAdapter = OCLAdapter.getAdapter(modelResources);
+ CompleteOCLLoader helper = new CompleteOCLLoader(oclAdapter.getEnvironmentFactory()) {
+ @Override
+ protected boolean error(String primaryMessage, String detailMessage) {
+ Assert.fail(Messages.TestOCLValidationRuleFromFile_CanNotGetEnvFactory);
+ return false;
+ }
+ };
+ Assert.assertTrue(Messages.TestOCLValidationRuleFromFile_OCLCanNotLoadMM, helper.loadMetamodels());
+
+ // load OCL file
+ URI oclURI = URI.createPlatformPluginURI(Activator.PLUGIN_ID + RESOURCES_PATH + EXTRA_UML_VALIDATION_OCL, false);
+ try {
+ if (!helper.loadDocument(oclURI)) {
+ Assert.fail("Can not load OCL document with URI: " + oclURI.path()); //$NON-NLS-1$
+ }
+ } catch (Throwable e) {
+ Assert.fail(String.format("Exception %s during loading of OCL document with URI: %s", e.getMessage(), oclURI.path())); //$NON-NLS-1$
+ }
+ helper.installPackages();
+
+ // it's important to create the validate model command after the OCL file has been loaded
+ final ValidateModelCommand validateModelCommand = new ValidateModelCommand(model);
+
+ final EditingDomain domain = TransactionUtil.getEditingDomain(model);
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ domain.getCommandStack().execute(GMFtoEMFCommandWrapper.wrap(validateModelCommand));
+ }
+ });
+ globalDiagnostic = validateModelCommand.getDiagnostic();
+ }
+
+ /**
+ * Failing validation for rule defined in ExtraUMLValidation
+ */
+ @Test
+ public void validateCamelCaseRule() throws Exception {
+ // get the diagnostic and check for the given class
+ List<Diagnostic> diagnostics = filterDiagnosticsByElement(globalDiagnostic.getChildren(), lowerCaseClass);
+ Assert.assertEquals(String.format(
+ Messages.TestOCLValidationRuleFromFile_CamelCaseRule, EXTRA_UML_VALIDATION_OCL),
+ 1, diagnostics.size());
+ }
+}
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestStereotypeValidation.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestStereotypeValidation.java
new file mode 100644
index 00000000000..6d287fbfd6f
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestStereotypeValidation.java
@@ -0,0 +1,78 @@
+/*****************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Benoit Maggi (CEA LIST) benoit.maggi@cea.fr - Initial API and implementation
+ * Ansgar Radermacher (CEA) ansgar.radermacher@cea.fr - Extension to validation test suite
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.validation.tests.rules;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.papyrus.commands.wrappers.GMFtoEMFCommandWrapper;
+import org.eclipse.papyrus.infra.services.validation.commands.ValidateModelCommand;
+import org.eclipse.papyrus.uml.validation.tests.Activator;
+import org.eclipse.papyrus.uml.validation.tests.Messages;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Model;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Test suite for validation rules. It tests
+ * Model/profile. Model applies a stereotype, but does not set the value of a required stereotype attribute.
+ */
+public class TestStereotypeValidation extends AbstractValidationEditorTest {
+
+ public static final String MODEL_NAME = "simple"; //$NON-NLS-1$
+
+ public static final String PROFILE_NAME = "simple.profile"; //$NON-NLS-1$
+
+ public final static String CLASS1 = "Class1"; //$NON-NLS-1$
+ protected Class class1;
+
+ @Before
+ public void initModelForValidationTest() throws Exception {
+ createProject(PROJECT_PREFIX + MODEL_NAME);
+ copyModel(PROFILE_NAME, Activator.getDefault().getBundle());
+ initModel(MODEL_NAME, Activator.getDefault().getBundle());
+
+ Model model = (Model) getRootUMLModel();
+
+ class1 = (Class) model.getPackagedElement(CLASS1);
+ Assert.assertNotNull(String.format(CAN_NOT_FIND_ELEMENT, CLASS1, model), class1);
+
+ final EditingDomain domain = TransactionUtil.getEditingDomain(model);
+ final ValidateModelCommand validateModelCommand = new ValidateModelCommand(model);
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ domain.getCommandStack().execute(GMFtoEMFCommandWrapper.wrap(validateModelCommand));
+ }
+ });
+
+ globalDiagnostic = validateModelCommand.getDiagnostic();
+ }
+
+ /**
+ * Failing validation for stereotype whose required attribute is unset
+ */
+ @Test
+ public void validateUnsetStereotypeAttribute() throws Exception {
+ // get the diagnostic and check for the given capsule
+ List<Diagnostic> diagnostics = filterDiagnosticsByElement(globalDiagnostic.getChildren(), class1);
+ Assert.assertEquals(Messages.TestStereotypeValidation_UnsetRequiredAttribute, 1, diagnostics.size());
+ }
+}
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestUMLValidationRules.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestUMLValidationRules.java
new file mode 100644
index 00000000000..8595ef369f6
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestUMLValidationRules.java
@@ -0,0 +1,103 @@
+/*****************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Benoit Maggi (CEA LIST) benoit.maggi@cea.fr - Initial API and implementation
+ * Ansgar Radermacher (CEA) ansgar.radermacher@cea.fr - Extension to validation test suite
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.validation.tests.rules;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.papyrus.commands.wrappers.GMFtoEMFCommandWrapper;
+import org.eclipse.papyrus.infra.services.validation.commands.ValidateModelCommand;
+import org.eclipse.papyrus.uml.validation.tests.Activator;
+import org.eclipse.papyrus.uml.validation.tests.Messages;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.Package;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Test suite for UML validation rules. It tests
+ * - Model with UML warning (identifiers of same name in package)
+ * - Model with non-integer multiplicity on attribute (0..MAX)
+ */
+public class TestUMLValidationRules extends AbstractValidationEditorTest {
+
+ public static final String MODEL_NAME = "UMLValidationTests"; //$NON-NLS-1$
+
+ public final static String PKG_NAME_CLASH = "nameclash"; //$NON-NLS-1$
+
+ public final static String CLASS1 = "Class1"; //$NON-NLS-1$
+ protected Class class1;
+
+ public final static String PKG_MULTIPLICITY = "multiplicity"; //$NON-NLS-1$
+ public final static String NON_STANDARD_MULTIPLICITY = "NonStandardMultiplicity"; //$NON-NLS-1$
+ protected Class nonStandardMultiplicity;
+
+ @Before
+ public void initModelForValidationTest() throws Exception {
+ initModel(PROJECT_PREFIX + MODEL_NAME, MODEL_NAME, Activator.getDefault().getBundle());
+
+ // validate the new model
+
+ Assert.assertNotNull("RootModel is null", getRootUMLModel()); //$NON-NLS-1$
+ Model model = (Model) getRootUMLModel();
+
+ Package nameclash = (Package) model.getPackagedElement(PKG_NAME_CLASH);
+ Assert.assertNotNull(String.format(CAN_NOT_FIND_ELEMENT, PKG_NAME_CLASH, model), nameclash);
+ class1 = (Class) nameclash.getPackagedElement(CLASS1);
+ Assert.assertNotNull(String.format(CAN_NOT_FIND_ELEMENT, CLASS1, model), class1);
+
+ Package multiplicty = (Package) model.getPackagedElement(PKG_MULTIPLICITY);
+ Assert.assertNotNull(String.format(CAN_NOT_FIND_ELEMENT, PKG_MULTIPLICITY, model), multiplicty);
+ nonStandardMultiplicity = (Class) multiplicty.getPackagedElement(NON_STANDARD_MULTIPLICITY);
+ Assert.assertNotNull(String.format(CAN_NOT_FIND_ELEMENT, NON_STANDARD_MULTIPLICITY, model), nonStandardMultiplicity);
+
+ final EditingDomain domain = TransactionUtil.getEditingDomain(model);
+ final ValidateModelCommand validateModelCommand = new ValidateModelCommand(model);
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ domain.getCommandStack().execute(GMFtoEMFCommandWrapper.wrap(validateModelCommand));
+ }
+ });
+
+ globalDiagnostic = validateModelCommand.getDiagnostic();
+ }
+
+ /**
+ * Simple failing validation for IsActiveEntityRule
+ */
+ @Test
+ public void validateNameClashDetection() throws Exception {
+ // get the diagnostic and check for the given class
+ List<Diagnostic> diagnostics = filterDiagnosticsByElement(globalDiagnostic.getChildren(), class1);
+ Assert.assertEquals(String.format(Messages.TestUMLValidationRules_DetectNameClash, class1), 1, diagnostics.size());
+ }
+
+ /**
+ * Simple valid validation for IsActiveEntityRule
+ */
+ @Test
+ public void validateNonStandardMultiplicity() throws Exception {
+ // get the diagnostic and check for the given class
+ List<Diagnostic> diagnostics = filterDiagnosticsByElement(globalDiagnostic.getChildren(), nonStandardMultiplicity);
+ Assert.assertEquals(String.format(Messages.TestUMLValidationRules_NonStandardMultiplicityMayNotImplyError, nonStandardMultiplicity), 0, diagnostics.size());
+ }
+
+}
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestValidationRulesInPluginXML.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestValidationRulesInPluginXML.java
new file mode 100644
index 00000000000..54f6dc05ada
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestValidationRulesInPluginXML.java
@@ -0,0 +1,147 @@
+/*****************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Benoit Maggi (CEA LIST) benoit.maggi@cea.fr - Initial API and implementation
+ * Ansgar Radermacher (CEA) ansgar.radermacher@cea.fr - Extension to validation test suite
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.validation.tests.rules;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.emf.validation.service.ConstraintRegistry;
+import org.eclipse.emf.validation.service.IConstraintDescriptor;
+import org.eclipse.papyrus.commands.wrappers.GMFtoEMFCommandWrapper;
+import org.eclipse.papyrus.infra.services.validation.commands.ValidateModelCommand;
+import org.eclipse.papyrus.junit.framework.classification.FailingTest;
+import org.eclipse.papyrus.uml.validation.tests.Activator;
+import org.eclipse.papyrus.uml.validation.tests.Messages;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Model;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Test suite for validation rules. It tests
+ * Model with OCL constraints in plugin.xml (EMFv)
+ * Model with Java constraints in plugin.xml (EMFv)
+ */
+public class TestValidationRulesInPluginXML extends AbstractValidationEditorTest {
+
+ public static final String CONSTRAINT_PLUGIN = "org.eclipse.papyrus.uml.validation.tests.genvalidation"; //$NON-NLS-1$
+
+ public static final String CONSTRAINT_ID_ALWAYS_ACTIVE = "profile.AlwaysActive.ConstraintAlwaysActive"; //$NON-NLS-1$
+
+ public static final String MODEL_NAME = "active-tst.rule-in-plugin"; //$NON-NLS-1$
+
+ /**
+ * An active class applying a stereotype with an attached OCL constraint requiring that the class is active
+ */
+ public final static String INACTIVE_OCL_NAME = "ActiveOCL"; //$NON-NLS-1$
+ protected Class activeOCL;
+
+ /**
+ * A non active class applying a stereotype with an attached OCL constraint requiring that the class is active
+ */
+ public final static String ACTIVE_OCL_NAME = "InactiveOCL"; //$NON-NLS-1$
+ protected Class inactiveOCL;
+
+ /**
+ * A non active class applying a stereotype with an attached Java constraint requiring that the class is passive
+ */
+ public final static String INACTIVE_JAVA_NAME = "InactiveJava"; //$NON-NLS-1$
+ protected Class inactiveJava;
+
+ /**
+ * An active class applying a stereotype with an attached Java constraint requiring that the class is passive
+ */
+ public final static String ACTIVE_JAVA_NAME = "ActiveJava"; //$NON-NLS-1$
+ protected Class activeJava;
+
+ @Before
+ public void initModelForValidationTest() throws Exception {
+ initModel(PROJECT_PREFIX + MODEL_NAME, MODEL_NAME, Activator.getDefault().getBundle());
+
+ Model model = (Model) getRootUMLModel();
+
+ inactiveOCL = (Class) model.getPackagedElement(INACTIVE_OCL_NAME);
+ Assert.assertNotNull(String.format(CAN_NOT_FIND_ELEMENT, INACTIVE_OCL_NAME, model), inactiveOCL);
+
+ activeOCL = (Class) model.getPackagedElement(ACTIVE_OCL_NAME);
+ Assert.assertNotNull(String.format(CAN_NOT_FIND_ELEMENT, ACTIVE_OCL_NAME, model), activeOCL);
+
+ inactiveJava = (Class) model.getPackagedElement(INACTIVE_JAVA_NAME);
+ Assert.assertNotNull(String.format(CAN_NOT_FIND_ELEMENT, INACTIVE_JAVA_NAME, model), inactiveJava);
+
+ activeJava = (Class) model.getPackagedElement(ACTIVE_JAVA_NAME);
+ Assert.assertNotNull(String.format(CAN_NOT_FIND_ELEMENT, ACTIVE_JAVA_NAME, model), activeJava);
+
+ final EditingDomain domain = TransactionUtil.getEditingDomain(model);
+ final ValidateModelCommand validateModelCommand = new ValidateModelCommand(model);
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ domain.getCommandStack().execute(GMFtoEMFCommandWrapper.wrap(validateModelCommand));
+ }
+ });
+
+ // check that the constraint exists
+ ConstraintRegistry instance = ConstraintRegistry.getInstance();
+ IConstraintDescriptor descriptor = instance.getDescriptor(CONSTRAINT_PLUGIN, CONSTRAINT_ID_ALWAYS_ACTIVE);
+ Assert.assertNotNull(Messages.TestValidationRulesInPluginXML_ConstraintIsMissing, descriptor);
+
+ globalDiagnostic = validateModelCommand.getDiagnostic();
+ }
+
+ /**
+ * Failing validation for IsActiveEntityRule (OCL rule, on inactive class)
+ */
+ @Test
+ public void validateIsActiveOCLRule_inactiveClass() throws Exception {
+ // get the diagnostic and check for the given class
+ List<Diagnostic> diagnostics = filterDiagnosticsByElement(globalDiagnostic.getChildren(), inactiveOCL);
+ Assert.assertEquals(String.format(Messages.TestValidationRulesInPluginXML_IsActiveShouldTriggerIssue, inactiveOCL), 1, diagnostics.size());
+ }
+
+ /**
+ * Successful validation for IsActiveEntityRule (OCL rule, on active class)
+ */
+ @FailingTest
+ public void validateIsActiveOCLRule_activeClass() throws Exception {
+ // get the diagnostic and check for the given class
+ List<Diagnostic> diagnostics = filterDiagnosticsByElement(globalDiagnostic.getChildren(), activeOCL);
+ Assert.assertEquals(String.format(Messages.TestValidationRulesInPluginXML_IsActiveShouldNotTriggerIssue, activeOCL), 0, diagnostics.size());
+ }
+
+ /**
+ * Successful validation for IsPassiveEntityRule (Java rule, on inactive class)
+ */
+ @Test
+ public void validateIsPassiveJavaRule_inactiveClass() throws Exception {
+ // get the diagnostic and check for the given class
+ List<Diagnostic> diagnostics = filterDiagnosticsByElement(globalDiagnostic.getChildren(), inactiveJava);
+ Assert.assertEquals(String.format(Messages.TestValidationRulesInPluginXML_IsPassiveShouldTriggerIssue, inactiveJava), 0, diagnostics.size());
+ }
+
+ /**
+ * Failing validation for IsPassiveEntityRule (Java rule, on active class)
+ */
+ @Test
+ public void validateIsPassiveJavaRule_activeClass() throws Exception {
+ // get the diagnostic and check for the given class
+ List<Diagnostic> diagnostics = filterDiagnosticsByElement(globalDiagnostic.getChildren(), activeJava);
+ Assert.assertEquals(String.format(Messages.TestValidationRulesInPluginXML_IsPassiveShouldNotTriggerIssue, activeJava), 1, diagnostics.size());
+ }
+}
diff --git a/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestValidationRulesInProfile.java b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestValidationRulesInProfile.java
new file mode 100644
index 00000000000..39307091db4
--- /dev/null
+++ b/tests/junit/plugins/uml/validation/org.eclipse.papyrus.uml.validation.tests/src/org/eclipse/papyrus/uml/validation/tests/rules/TestValidationRulesInProfile.java
@@ -0,0 +1,123 @@
+/*****************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Benoit Maggi (CEA LIST) benoit.maggi@cea.fr - Initial API and implementation
+ * Ansgar Radermacher (CEA) ansgar.radermacher@cea.fr - Extension to validation test suite
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.validation.tests.rules;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.papyrus.commands.wrappers.GMFtoEMFCommandWrapper;
+import org.eclipse.papyrus.infra.services.validation.commands.ValidateModelCommand;
+import org.eclipse.papyrus.uml.validation.tests.Activator;
+import org.eclipse.papyrus.uml.validation.tests.Messages;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Model;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Test suite for validation rules. It tests
+ * Model with OCL constraints embedded in profile
+ */
+public class TestValidationRulesInProfile extends AbstractValidationEditorTest {
+
+ public static final String CONSTRAINT_ID = "isActiveEntity"; //$NON-NLS-1$
+
+ public static final String PROFILE_NAME = "active.rule-in-definition.profile"; //$NON-NLS-1$
+
+ public static final String MODEL_NAME = "active-tst.rule-in-definition"; //$NON-NLS-1$
+
+ /**
+ * A non active class applying a stereotype with an attached OCL constraint requiring that the class is active
+ */
+ public final static String INACTIVE_NAME = "Inactive"; //$NON-NLS-1$
+ protected Class active;
+
+ /**
+ * An active class applying a stereotype with an attached OCL constraint requiring that the class is active
+ */
+ public final static String ACTIVE_NAME = "Active"; //$NON-NLS-1$
+ protected Class inactive;
+
+ /**
+ * An active class applying a stereotype with a malformed OCL constraint attached
+ */
+ public final static String ACTIVE_MALFORMED_NAME = "ActiveMalformed"; //$NON-NLS-1$
+ protected Class activeMalformed;
+
+ @Before
+ public void initModelForValidationTest() throws Exception {
+ createProject(PROJECT_PREFIX + MODEL_NAME);
+ copyModel(PROFILE_NAME, Activator.getDefault().getBundle());
+ initModel(MODEL_NAME, Activator.getDefault().getBundle());
+
+
+ // validate the new model
+ Model model = (Model) getRootUMLModel();
+
+ active = (Class) model.getPackagedElement(ACTIVE_NAME);
+ Assert.assertNotNull(String.format(CAN_NOT_FIND_ELEMENT, ACTIVE_NAME, model), active);
+
+ inactive = (Class) model.getPackagedElement(INACTIVE_NAME);
+ Assert.assertNotNull(String.format(CAN_NOT_FIND_ELEMENT, INACTIVE_NAME, model), inactive);
+
+ activeMalformed = (Class) model.getPackagedElement(ACTIVE_MALFORMED_NAME);
+ Assert.assertNotNull(String.format(CAN_NOT_FIND_ELEMENT, ACTIVE_MALFORMED_NAME, model), activeMalformed);
+
+ final EditingDomain domain = TransactionUtil.getEditingDomain(model);
+ final ValidateModelCommand validateModelCommand = new ValidateModelCommand(model);
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ domain.getCommandStack().execute(GMFtoEMFCommandWrapper.wrap(validateModelCommand));
+ }
+ });
+
+ globalDiagnostic = validateModelCommand.getDiagnostic();
+ }
+
+ /**
+ * No errors on active class
+ */
+ @Test
+ public void validateIsActiveRule_ActiveCapsule() throws Exception {
+ // get the diagnostic and check for the given class
+ List<Diagnostic> diagnostics = filterDiagnosticsByElement(globalDiagnostic.getChildren(), active);
+ Assert.assertEquals(String.format(Messages.TestValidationRulesInProfile_IsActiveShouldNotTriggerIssue, active), 0, diagnostics.size());
+ }
+
+ /**
+ * One warning on inactive class
+ */
+ @Test
+ public void validateIsActiveRule_notActiveCapsule() throws Exception {
+ // get the diagnostic and check for the given class
+ List<Diagnostic> diagnostics = filterDiagnosticsByElement(globalDiagnostic.getChildren(), inactive);
+ Assert.assertEquals(String.format(Messages.TestValidationRulesInProfile_IsActiveShouldTriggerIssue, inactive), 1, diagnostics.size());
+ }
+
+ /**
+ * One error on malformed class
+ */
+ @Test
+ public void validateMalformedActiveRule_notActiveCapsule() throws Exception {
+ // get the diagnostic and check for the given class
+ List<Diagnostic> diagnostics = filterDiagnosticsByElement(globalDiagnostic.getChildren(), activeMalformed);
+ Assert.assertEquals(String.format(Messages.TestValidationRulesInProfile_IsActiveMalformedShouldTriggerIssue, activeMalformed), 1, diagnostics.size());
+ }
+}

Back to the top