Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjeremie.tatibouet2015-04-27 09:42:16 +0000
committerArnaud Cuccuru2015-05-05 16:45:17 +0000
commit4c0ce3cdc44f1add7ac02b24e35b95a551d18aae (patch)
tree103d515b74c8d804d2172f4068c2889abc63fe29
parentab647664e65adea6e9ca8163245691d762ee1eef (diff)
downloadorg.eclipse.papyrus-4c0ce3cdc44f1add7ac02b24e35b95a551d18aae.tar.gz
org.eclipse.papyrus-4c0ce3cdc44f1add7ac02b24e35b95a551d18aae.tar.xz
org.eclipse.papyrus-4c0ce3cdc44f1add7ac02b24e35b95a551d18aae.zip
Proposal to solve https://bugs.eclipse.org/bugs/show_bug.cgi?id=465111
Validation context changes correctly when switching between ALF specifications edited in a Papyrus UML model and ALF specifications edited through the raw editor. Change-Id: I521321cdb439b9336d1c9ac244f9883ef472c5bd Signed-off-by: jeremie.tatibouet <jeremie.tatibouet@cea.fr> Reviewed-on: https://git.eclipse.org/r/46801 Tested-by: Hudson CI Reviewed-by: Arnaud Cuccuru <arnaud.cuccuru@cea.fr> Tested-by: Arnaud Cuccuru <arnaud.cuccuru@cea.fr>
-rw-r--r--plugins/uml/alf/org.eclipse.papyrus.uml.alf.ui/src/org/eclipse/papyrus/uml/alf/ui/editor/AlfPopupEditor.java3
-rw-r--r--plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/Model.java10
-rw-r--r--plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/validation/AlfValidationContextRegistry.java173
-rw-r--r--plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/validation/ModelNamespaceFacade.java125
-rw-r--r--plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/MemberDefinitionImpl.java4
-rw-r--r--plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/ModelNamespaceImpl.java37
-rw-r--r--plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/NamespaceDefinitionImpl.java3
-rw-r--r--plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/QualifiedNameImpl.java3
-rw-r--r--tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/SemanticTest.xtend24
-rw-r--r--tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/SingleTest.xtend20
-rw-r--r--tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/SyntacticTest.xtend13
-rw-r--r--tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/generator/GenerationTest.xtend3
-rw-r--r--tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/AlfMapper.java3
-rw-r--r--tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/CompilerTests.java12
-rw-r--r--tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/MappingTest.xtend11
-rw-r--r--tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/MergeTest.xtend23
-rw-r--r--tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/utils/ContextModelArea.java134
-rw-r--r--tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/utils/RegisteredItemLoader.java9
18 files changed, 379 insertions, 231 deletions
diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf.ui/src/org/eclipse/papyrus/uml/alf/ui/editor/AlfPopupEditor.java b/plugins/uml/alf/org.eclipse.papyrus.uml.alf.ui/src/org/eclipse/papyrus/uml/alf/ui/editor/AlfPopupEditor.java
index 52b348e8417..8ee49a46150 100644
--- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf.ui/src/org/eclipse/papyrus/uml/alf/ui/editor/AlfPopupEditor.java
+++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf.ui/src/org/eclipse/papyrus/uml/alf/ui/editor/AlfPopupEditor.java
@@ -14,7 +14,6 @@
*****************************************************************************/
package org.eclipse.papyrus.uml.alf.ui.editor;
-import org.eclipse.papyrus.uml.alf.impl.ModelNamespaceImpl;
import org.eclipse.papyrus.uml.alf.libraries.helper.AlfUtil;
import org.eclipse.papyrus.uml.alf.ui.internal.AlfActivator;
import org.eclipse.swt.SWT;
@@ -65,7 +64,7 @@ public class AlfPopupEditor {
this.contextElement = contextElement;
this.alfInjector = AlfActivator.getInstance().getInjector("org.eclipse.papyrus.uml.alf.Alf");
this.args = args;
- ModelNamespaceImpl.setContextFor(contextElement);
+ //ModelNamespaceImpl.setContextFor(contextElement);
}
public void openEditor() {
diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/Model.java b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/Model.java
index 87f01e80c12..971e3e5c9dc 100644
--- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/Model.java
+++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/Model.java
@@ -46,7 +46,7 @@ public class Model extends ModelImpl {
public Model() {
super();
- this.setName("Model");
+ this.setName("EmptyModel");
this.modelStorage = new ResourceSetImpl();
this.loadLibraries();
this.importLibraries();
@@ -90,8 +90,14 @@ public class Model extends ModelImpl {
}
private void registerTmpModel() {
- Resource r = this.modelStorage.createResource(URI.createURI("NAME_RESOLUTION_MODEL"));
+ Resource r = this.modelStorage.createResource(URI.createURI("EMPTY_UML_CONTEXT_MODEL.uml"));
r.getContents().add(this);
this.modelStorage.getResources().add(r);
}
+
+ public void clean(){
+ for(Resource resource : this.modelStorage.getResources()){
+ resource.unload();
+ }
+ }
}
diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/validation/AlfValidationContextRegistry.java b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/validation/AlfValidationContextRegistry.java
new file mode 100644
index 00000000000..92dcf4dc74c
--- /dev/null
+++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/validation/AlfValidationContextRegistry.java
@@ -0,0 +1,173 @@
+/*****************************************************************************
+ * 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:
+ * Jeremie Tatibouet
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.alf.validation;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.papyrus.uml.alf.AlfFactory;
+import org.eclipse.papyrus.uml.alf.Model;
+import org.eclipse.papyrus.uml.alf.impl.ModelNamespaceImpl;
+import org.eclipse.uml2.uml.Namespace;
+
+/**
+ * The registry relating URI (of resources containing ALF models) to ModelNamespace which are used
+ * as validation contexts
+ */
+class AlfValidationContextRegistry{
+
+ /**
+ * Relation between URI and ModelNamespace
+ */
+ protected HashMap<URI, ModelNamespaceWithState> validationMap;
+
+ protected AlfValidationContextRegistry(){
+ this.validationMap = new HashMap<URI, ModelNamespaceWithState>();
+ }
+
+ /**
+ * Provide the currently used ModelNamespace
+ *
+ * @return namespace
+ * the currently used ModelNamespace
+ */
+ public ModelNamespaceImpl getCurrentlyUsedValidationContext(){
+ ModelNamespaceImpl namespace = null;
+ Iterator<URI> iterator = this.validationMap.keySet().iterator();
+ while(namespace == null && iterator.hasNext()){
+ URI uri = iterator.next();
+ if(this.validationMap.get(uri).used){
+ namespace = this.validationMap.get(uri).modelNamespace;
+ }
+ }
+ if(namespace==null){
+ namespace = this.createEmptyValidationContext(null);
+ }
+ return namespace;
+ }
+
+ /**
+ * Provide the validation context corresponding to the given URI
+ *
+ * @param uri
+ * the uri of the resource currently validated
+ *
+ * @return modelNamespace
+ * the validation context
+ */
+ public ModelNamespaceImpl getValidationContext(URI uri){
+ if(this.validationMap.get(uri)!=null){
+ return this.validationMap.get(uri).modelNamespace;
+ }
+ return null;
+ }
+
+ /**
+ * Associate the given URI with an empty validation context. Such validation context
+ * is defined by a ModelNamespace associated with an empty UML model.
+ *
+ * @param uri
+ * the uri of the resource that will be validated
+ *
+ * @return namespace
+ * the modelNamespace associated to the uri
+ */
+ protected ModelNamespaceImpl createEmptyValidationContext(URI uri){
+ ModelNamespaceImpl namespace = null;
+ namespace = (ModelNamespaceImpl) AlfFactory.eINSTANCE.createModelNamespace();
+ namespace.setContextNamespace(new Model());
+ this.add(uri, new ModelNamespaceWithState(namespace, true));
+ return namespace;
+ }
+
+ /**
+ * Add the uri and the modelNamespace into the validation map of the registry
+ *
+ * @param uri
+ * the uri of a validated resource
+ *
+ * @param modelNamespace
+ * the modelNamespace associated to uri
+ */
+ private void add(URI uri, ModelNamespaceWithState modelNamespace){
+ for(URI currentURI : this.validationMap.keySet()){
+ this.validationMap.get(currentURI).used = false;;
+ }
+ this.validationMap.put(uri, modelNamespace);
+ }
+
+ /**
+ * Associate the given uri to a ModelNamespace.
+ *
+ * @param uri
+ * the uri of the resource that will be validated
+ *
+ * @param namespace
+ * the namespace associated to the modelNamespace
+ *
+ * @return modelNamespace
+ * the modelNamespace associated to the uri
+ */
+ protected ModelNamespaceImpl createValidationContext(URI uri, Namespace namespace){
+ ModelNamespaceImpl modelNamespace = null;
+ if(uri!=null && namespace!=null){
+ modelNamespace = this.validationMap.get(uri)!=null ? this.validationMap.get(uri).modelNamespace : null;
+ if(modelNamespace!=null){
+ modelNamespace.setContextNamespace(namespace);
+ }else{
+ modelNamespace = (ModelNamespaceImpl) AlfFactory.eINSTANCE.createModelNamespace();
+ modelNamespace.setContextNamespace(namespace);
+ this.add(uri, new ModelNamespaceWithState(modelNamespace, true));
+ }
+ }
+ return modelNamespace;
+ }
+
+ /**
+ * Release the validation context (i.e., the model namespace) corresponding to the URI
+ *
+ * @param uri
+ * the uri for which we have an associated namespace resource
+ *
+ * @return true if the corresponding model namespace was deleted false otherwise
+ */
+ public boolean deleteValidationContext(URI uri){
+ ModelNamespaceWithState modelNamespace = this.validationMap.get(uri);
+ if(modelNamespace!=null){
+ this.validationMap.remove(modelNamespace);
+ if(modelNamespace.modelNamespace.getContextNamespace() instanceof Model){
+ ((Model)modelNamespace.modelNamespace.getContextNamespace()).clean();
+ }
+ return true;
+ }
+ return false;
+ }
+
+ class ModelNamespaceWithState{
+
+ public ModelNamespaceImpl modelNamespace;
+
+ public boolean used;
+
+ protected ModelNamespaceWithState(){
+ this.used = false;
+ }
+
+ protected ModelNamespaceWithState(ModelNamespaceImpl namespace, boolean used){
+ this.used = used;
+ this.modelNamespace = namespace;
+ }
+ }
+}
diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/validation/ModelNamespaceFacade.java b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/validation/ModelNamespaceFacade.java
new file mode 100644
index 00000000000..4731246ba19
--- /dev/null
+++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/validation/ModelNamespaceFacade.java
@@ -0,0 +1,125 @@
+/*****************************************************************************
+ * 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:
+ * Jeremie Tatibouet
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.alf.validation;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.papyrus.uml.alf.ElementReference;
+import org.eclipse.papyrus.uml.alf.NamespaceDefinition;
+import org.eclipse.papyrus.uml.alf.QualifiedName;
+import org.eclipse.papyrus.uml.alf.SyntaxElement;
+import org.eclipse.papyrus.uml.alf.impl.ModelNamespaceImpl;
+import org.eclipse.uml2.uml.Namespace;
+
+/**
+ * Facade to enable the validator to get the right validation context (i.e., a ModelNamespace)
+ * for a given ALF model
+ */
+public class ModelNamespaceFacade {
+
+ /**
+ * The facade is a singleton
+ */
+ private static ModelNamespaceFacade INSTANCE;
+
+ /**
+ * It owns a registry managing the correspondance between resource URI and ModelNamespace
+ */
+ protected AlfValidationContextRegistry registry;
+
+ private ModelNamespaceFacade() {
+ this.registry = new AlfValidationContextRegistry();
+ }
+
+ /**
+ * Provide access onto the ModelNamespaceFacade
+ *
+ * @return INSTANCE
+ * the instance of the facade
+ */
+ public static ModelNamespaceFacade getInstance() {
+ if (INSTANCE == null) {
+ INSTANCE = new ModelNamespaceFacade();
+ }
+ return INSTANCE;
+ }
+
+ /**
+ * Provide the model namespace that need to be used for a given model element
+ *
+ * @param element
+ * an ALF model element
+ *
+ * @return namespace
+ * the model namespace in which the validation occurs
+ */
+ public ModelNamespaceImpl getContext(SyntaxElement element) {
+ if (element.eResource() == null) {
+ return this.registry.getCurrentlyUsedValidationContext();
+ }
+ ModelNamespaceImpl namespace = this.registry.getValidationContext(element.eResource().getURI());
+ if (namespace == null) {
+ namespace = this.registry.createEmptyValidationContext(element.eResource().getURI());
+ }
+ return namespace;
+ }
+
+ public NamespaceDefinition modelNamespaceFor(NamespaceDefinition namespace) {
+ ModelNamespaceImpl modelNamespace = this.getContext(namespace);
+ modelNamespace.setModelUnit(namespace);
+ return modelNamespace;
+ }
+
+ public EList<ElementReference> resolveInModelScope(QualifiedName qualifiedName) {
+ return this.getContext(qualifiedName).resolvePathName(qualifiedName.getPathName());
+ }
+
+ /**
+ * Create a relation between a specific resource and a UML namespace which is used as a validation context
+ *
+ * @param validatedResource
+ * the resource containing the ALF model to validate
+ *
+ * @param validationContext
+ * the namespace used as validation context
+ */
+ public ModelNamespaceImpl createValidationContext(Resource validatedResource, Namespace validationContext){
+ return this.registry.createValidationContext(validatedResource.getURI(), validationContext);
+ }
+
+ /**
+ * Create an empty validation context (i.e., a model namespace) for a given resource. The validation context is an
+ * empty UML model having an import on ALF and the standard UML profile applied
+ *
+ * @param validatedResource
+ * the resource containing the ALF model to validate
+ *
+ * @return the model namespace used as validation context
+ */
+ public ModelNamespaceImpl createEmptyValidationContext(Resource validatedResource){
+ return this.registry.createEmptyValidationContext(validatedResource.getURI());
+ }
+
+ /**
+ * Delete the registered validation context used for the given resource
+ *
+ * @param validatedResource
+ * the resource for the validation context is deleted
+ *
+ * @return true if the validation context was deleted false otherwise
+ */
+ public boolean deleteValidationContext(Resource validatedResource){
+ return this.registry.deleteValidationContext(validatedResource.getURI());
+ }
+}
diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/MemberDefinitionImpl.java b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/MemberDefinitionImpl.java
index 39a15b8451d..957960a79e2 100644
--- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/MemberDefinitionImpl.java
+++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/MemberDefinitionImpl.java
@@ -23,6 +23,7 @@ import org.eclipse.papyrus.uml.alf.QualifiedName;
import org.eclipse.papyrus.uml.alf.StereotypeAnnotation;
import org.eclipse.papyrus.uml.alf.UnitDefinition;
import org.eclipse.papyrus.uml.alf.util.AlfValidator;
+import org.eclipse.papyrus.uml.alf.validation.ModelNamespaceFacade;
/**
* <!-- begin-user-doc -->
@@ -328,7 +329,8 @@ public abstract class MemberDefinitionImpl extends SyntaxElementImpl implements
*/
public Member addToModel() {
// System.out.println("[addToModel] member=" + this.getName());
- return ModelNamespaceImpl.getModelNamespace().addOwnedMember(this);
+ return ModelNamespaceFacade.getInstance().getContext(this).addOwnedMember(this);
+ //return ModelNamespaceImpl.getModelNamespace().addOwnedMember(this);
}
/**
diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/ModelNamespaceImpl.java b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/ModelNamespaceImpl.java
index a81ee8a2a4d..66b8daf3461 100644
--- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/ModelNamespaceImpl.java
+++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/ModelNamespaceImpl.java
@@ -4,12 +4,12 @@ package org.eclipse.papyrus.uml.alf.impl;
import java.lang.reflect.InvocationTargetException;
import java.util.Collection;
+
import org.eclipse.emf.common.util.BasicEList;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.WrappedException;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EOperation;
-import org.eclipse.papyrus.uml.alf.Model;
import org.eclipse.papyrus.uml.alf.AlfFactory;
import org.eclipse.papyrus.uml.alf.AlfPackage;
import org.eclipse.papyrus.uml.alf.ElementReference;
@@ -18,14 +18,13 @@ import org.eclipse.papyrus.uml.alf.ImportedMember;
import org.eclipse.papyrus.uml.alf.InternalElementReference;
import org.eclipse.papyrus.uml.alf.Member;
import org.eclipse.papyrus.uml.alf.MemberDefinition;
+import org.eclipse.papyrus.uml.alf.Model;
import org.eclipse.papyrus.uml.alf.ModelNamespace;
import org.eclipse.papyrus.uml.alf.NamespaceDefinition;
import org.eclipse.papyrus.uml.alf.PackageDefinition;
import org.eclipse.papyrus.uml.alf.QualifiedName;
import org.eclipse.papyrus.uml.alf.UnitDefinition;
import org.eclipse.papyrus.uml.tools.utils.NameResolutionUtils;
-import org.eclipse.uml2.uml.Element;
-import org.eclipse.uml2.uml.NamedElement;
import org.eclipse.uml2.uml.Namespace;
import org.eclipse.uml2.uml.UMLPackage;
@@ -43,21 +42,6 @@ public class ModelNamespaceImpl extends PackageDefinitionImpl implements ModelNa
super();
}
- private static ModelNamespaceImpl modelNamespace;
-
- public static ModelNamespaceImpl getModelNamespace() {
- if (modelNamespace == null) {
- modelNamespace = (ModelNamespaceImpl) AlfFactory.eINSTANCE.createModelNamespace();
- }
- return modelNamespace;
- }
-
- public static NamespaceDefinition modelNamespaceFor(NamespaceDefinition namespace) {
- final ModelNamespaceImpl modelNamespace = getModelNamespace();
- modelNamespace.setModelUnit(namespace);
- return modelNamespace;
- }
-
static protected Member asMember(ElementReference reference) {
ImportedMember importedMember = AlfFactory.eINSTANCE.createImportedMember();
importedMember.setName(reference.name());
@@ -68,23 +52,6 @@ public class ModelNamespaceImpl extends PackageDefinitionImpl implements ModelNa
return member;
}
- public static EList<ElementReference> resolveInModelScope(QualifiedName qualifiedName) {
- return getModelNamespace().resolvePathName(qualifiedName.getPathName());
- }
-
- public static void setContextFor(Element contextElement) {
- setContext(!(contextElement instanceof NamedElement) ? null :
- ((NamedElement) contextElement).getNamespace());
- }
-
- public static void setContext(Namespace contextNamespace) {
- getModelNamespace().setContextNamespace(contextNamespace);
- }
-
- public static Namespace getContext() {
- return getModelNamespace().getContextNamespace();
- }
-
private Namespace contextNamespace = null;
private String modelUnitName = null;
diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/NamespaceDefinitionImpl.java b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/NamespaceDefinitionImpl.java
index 27fc9038953..db878f34043 100644
--- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/NamespaceDefinitionImpl.java
+++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/NamespaceDefinitionImpl.java
@@ -26,6 +26,7 @@ import org.eclipse.papyrus.uml.alf.StereotypeAnnotation;
import org.eclipse.papyrus.uml.alf.SyntaxElement;
import org.eclipse.papyrus.uml.alf.UnitDefinition;
import org.eclipse.papyrus.uml.alf.util.AlfValidator;
+import org.eclipse.papyrus.uml.alf.validation.ModelNamespaceFacade;
/**
* <!-- begin-user-doc -->
@@ -139,7 +140,7 @@ public class NamespaceDefinitionImpl extends MemberDefinitionImpl implements Nam
* @generated NOT
*/
public NamespaceDefinition modelNamespace() {
- return ModelNamespaceImpl.modelNamespaceFor(this);
+ return ModelNamespaceFacade.getInstance().modelNamespaceFor(this);
}
/**
diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/QualifiedNameImpl.java b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/QualifiedNameImpl.java
index edb12057b60..b9ad73af386 100644
--- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/QualifiedNameImpl.java
+++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/QualifiedNameImpl.java
@@ -20,6 +20,7 @@ import org.eclipse.papyrus.uml.alf.FeatureReference;
import org.eclipse.papyrus.uml.alf.NameBinding;
import org.eclipse.papyrus.uml.alf.QualifiedName;
import org.eclipse.papyrus.uml.alf.util.AlfValidator;
+import org.eclipse.papyrus.uml.alf.validation.ModelNamespaceFacade;
/**
* <!-- begin-user-doc -->
@@ -305,7 +306,7 @@ public class QualifiedNameImpl extends SyntaxElementImpl implements QualifiedNam
* @generated NOT
*/
public EList<ElementReference> modelReferents() {
- return ModelNamespaceImpl.resolveInModelScope(this);
+ return ModelNamespaceFacade.getInstance().resolveInModelScope(this);
}
/**
diff --git a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/SemanticTest.xtend b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/SemanticTest.xtend
index 4406e577faf..943830ccd82 100644
--- a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/SemanticTest.xtend
+++ b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/SemanticTest.xtend
@@ -20,18 +20,18 @@ import org.eclipse.ocl.ecore.delegate.OCLDelegateDomain
import org.eclipse.ocl.pivot.model.OCLstdlib
import org.eclipse.ocl.uml.OCL
import org.eclipse.papyrus.uml.alf.AlfInjectorProvider
-import org.eclipse.papyrus.uml.alf.impl.ModelNamespaceImpl
-import org.eclipse.papyrus.uml.alf.tests.utils.ContextModelArea
import org.eclipse.xtext.junit4.InjectWith
import org.eclipse.xtext.junit4.XtextRunner
import org.eclipse.xtext.resource.XtextResourceSet
import org.junit.AfterClass
import org.junit.BeforeClass
-import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
import static org.junit.Assert.*
+import org.junit.Ignore
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.papyrus.uml.alf.validation.ModelNamespaceFacade
@InjectWith(AlfInjectorProvider)
@RunWith(XtextRunner)
@@ -48,25 +48,27 @@ class SemanticTest extends ParserTest {
resourceSet = new XtextResourceSet()
OCL.initialize(resourceSet);
- //UML2Pivot.initialize(resourceSet)
OCLstdlib.install();
- OCLDelegateDomain.initialize(resourceSet)
- //OCLinEcoreStandaloneSetup.doSetup()
- //OCLstdlibStandaloneSetup.doSetup()
-
- var modelArea = new ContextModelArea("Model")
- ModelNamespaceImpl.setContext(modelArea.getModel);
+ OCLDelegateDomain.initialize(resourceSet)
testDirectory = System.getProperty("test.directory", TEST_DIRECTORY)
}
@Test
- // @Ignore("Doesn't run on Maven - Bug 464026")
+ @Ignore("Doesn't run on Maven - Bug 464026")
def void testStaticSemantics() {
System.out.print("[SemanticTest] ")
val failures = parseDirectory(resourceSet, testDirectory, true);
assertEquals(0, failures)
}
+
+ override parseResource(Resource resource, boolean validate) {
+ ModelNamespaceFacade.instance.createEmptyValidationContext(resource);
+ val failures = super.parseResource(resource, validate);
+ ModelNamespaceFacade.instance.deleteValidationContext(resource);
+ return failures;
+ }
+
@AfterClass
static def void cleanUp() {
diff --git a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/SingleTest.xtend b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/SingleTest.xtend
index 9ae6997c386..8befe38d780 100644
--- a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/SingleTest.xtend
+++ b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/SingleTest.xtend
@@ -20,18 +20,18 @@ import org.eclipse.ocl.ecore.delegate.OCLDelegateDomain
import org.eclipse.ocl.pivot.model.OCLstdlib
import org.eclipse.ocl.uml.OCL
import org.eclipse.papyrus.uml.alf.AlfInjectorProvider
-import org.eclipse.papyrus.uml.alf.impl.ModelNamespaceImpl
-import org.eclipse.papyrus.uml.alf.tests.utils.ContextModelArea
import org.eclipse.xtext.junit4.InjectWith
import org.eclipse.xtext.junit4.XtextRunner
import org.eclipse.xtext.resource.XtextResourceSet
import org.junit.AfterClass
import org.junit.BeforeClass
-import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
import static org.junit.Assert.*
+import org.junit.Ignore
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.papyrus.uml.alf.validation.ModelNamespaceFacade
@InjectWith(AlfInjectorProvider)
@RunWith(XtextRunner)
@@ -48,25 +48,27 @@ class SingleTest extends ParserTest {
resourceSet = new XtextResourceSet()
OCL.initialize(resourceSet);
- //UML2Pivot.initialize(resourceSet)
OCLstdlib.install();
OCLDelegateDomain.initialize(resourceSet)
-
- var modelArea = new ContextModelArea("Model")
- ModelNamespaceImpl.setContext(modelArea.getModel);
-
testDirectory = System.getProperty("test.directory", testDirectory)
testFile = System.getProperty("test.file", testFile)
}
@Test
- // @Ignore("Doesn't run on Maven - Bug 464026")
+ @Ignore("Doesn't run on Maven - Bug 464026")
def void testOneFile() {
System.out.print("[SingleTest] ");
val failures = parseFile(resourceSet, new File(testDirectory + "/" + testFile), true);
System.out.println()
assertEquals(0, failures)
}
+
+ override parseResource(Resource resource, boolean validate) {
+ ModelNamespaceFacade.instance.createEmptyValidationContext(resource);
+ val failures = super.parseResource(resource, validate);
+ ModelNamespaceFacade.instance.deleteValidationContext(resource);
+ return failures;
+ }
@AfterClass
static def void cleanUp() {
diff --git a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/SyntacticTest.xtend b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/SyntacticTest.xtend
index 3cb93edfe94..4a4588f375f 100644
--- a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/SyntacticTest.xtend
+++ b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/SyntacticTest.xtend
@@ -24,11 +24,13 @@ import org.eclipse.xtext.junit4.XtextRunner
import org.eclipse.xtext.resource.XtextResourceSet
import org.junit.AfterClass
import org.junit.BeforeClass
-import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
import static org.junit.Assert.*
+import org.junit.Ignore
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.papyrus.uml.alf.validation.ModelNamespaceFacade
@InjectWith(AlfInjectorProvider)
@RunWith(XtextRunner)
@@ -45,10 +47,8 @@ class SyntacticTest extends ParserTest {
resourceSet = new XtextResourceSet()
OCL.initialize(resourceSet);
- //UML2Pivot.initialize(resourceSet)
OCLstdlib.install();
OCLDelegateDomain.initialize(resourceSet)
- //OCLstdlibStandaloneSetup.doSetup()
testDirectory = System.getProperty("test.directory", TEST_DIRECTORY)
}
@@ -61,6 +61,13 @@ class SyntacticTest extends ParserTest {
assertEquals(0, failures)
}
+ override parseResource(Resource resource, boolean validate) {
+ ModelNamespaceFacade.instance.createEmptyValidationContext(resource);
+ val failures = super.parseResource(resource, validate);
+ ModelNamespaceFacade.instance.deleteValidationContext(resource);
+ return failures;
+ }
+
@AfterClass
static def void cleanUp() {
resourceSet = null;
diff --git a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/generator/GenerationTest.xtend b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/generator/GenerationTest.xtend
index 2cbb93a086d..7ee3e7148e5 100644
--- a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/generator/GenerationTest.xtend
+++ b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/generator/GenerationTest.xtend
@@ -23,7 +23,6 @@ import org.eclipse.papyrus.uml.alf.MappingError
import org.eclipse.papyrus.uml.alf.tests.ParserTest
import org.eclipse.xtext.junit4.XtextRunner
import org.junit.BeforeClass
-import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
@@ -45,7 +44,7 @@ class GenerationTest extends ParserTest {
}
@Test
- @Ignore("Doesn't run on Maven - Bug 464026")
+ //@Ignore("Doesn't run on Maven - Bug 464026")
def void testGeneration() {
var failures = 0;
System.out.println("[GenerationTest] Directory " + umlDirectory + ":")
diff --git a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/AlfMapper.java b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/AlfMapper.java
index f279374010e..1f43a951252 100644
--- a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/AlfMapper.java
+++ b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/AlfMapper.java
@@ -35,7 +35,7 @@ import org.eclipse.papyrus.uml.alf.AlfStandaloneSetup;
import org.eclipse.papyrus.uml.alf.MappingError;
import org.eclipse.papyrus.uml.alf.tests.mapper.AlfMapper;
import org.eclipse.papyrus.uml.alf.tests.utils.RegisteredItemLoader;
-import org.eclipse.papyrus.uml.alf.tests.utils.ContextModelArea.RequiredElementsNames;
+import org.eclipse.papyrus.uml.alf.tests.utils.RegisteredItemLoader.RequiredElementsNames;
import org.eclipse.uml2.uml.Package;
import org.eclipse.uml2.uml.PackageableElement;
import org.eclipse.uml2.uml.resources.util.UMLResourcesUtil;
@@ -59,7 +59,6 @@ public class AlfMapper extends org.eclipse.papyrus.uml.alf.AlfMapper {
OCL.initialize(this.resourceSet);
OCLstdlib.install();
OCLDelegateDomain.initialize(this.resourceSet);
- //OCLstdlibStandaloneSetup.doSetup();
this.setStandardProfile(
RegisteredItemLoader.getInstance().loadProfile(this.resourceSet, RequiredElementsNames.STANDARD_PROFILE));
diff --git a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/CompilerTests.java b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/CompilerTests.java
index fd15d2dcd55..4037cedf567 100644
--- a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/CompilerTests.java
+++ b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/CompilerTests.java
@@ -21,10 +21,9 @@ import java.util.List;
import org.eclipse.emf.common.util.EList;
import org.eclipse.papyrus.uml.alf.MappingError;
+import org.eclipse.papyrus.uml.alf.Model;
import org.eclipse.papyrus.uml.alf.ParsingError;
-import org.eclipse.papyrus.uml.alf.impl.ModelNamespaceImpl;
import org.eclipse.papyrus.uml.alf.tests.mapper.AlfCompiler;
-import org.eclipse.papyrus.uml.alf.tests.utils.ContextModelArea;
import org.eclipse.uml2.uml.Activity;
import org.eclipse.uml2.uml.Association;
import org.eclipse.uml2.uml.Behavior;
@@ -63,16 +62,17 @@ public class CompilerTests {
private static AlfCompiler compiler = null;
+ private static Model contextModel = null;
+
@BeforeClass
public static void setup() throws Exception {
compiler = new AlfCompiler();
- ContextModelArea modelArea = new ContextModelArea("Model");
- ModelNamespaceImpl.setContext(modelArea.getModel());
+ contextModel = new Model();
}
@After
public void clean() {
- ((Package) ModelNamespaceImpl.getContext()).getPackagedElements().clear();
+ ((Package)contextModel).getPackagedElements().clear();
}
public static void assertTextualRepresentation(
@@ -156,7 +156,7 @@ public class CompilerTests {
public static <T extends PackageableElement> T setupContextElement(
T element, String name)
throws ParsingError, MappingError {
- ((Package) ModelNamespaceImpl.getContext()).getPackagedElements().add(element);
+ ((Package)contextModel).getPackagedElements().add(element);
// compiler.addTextualRepresentation(element, textualRepresentation);
// compiler.compile(element, textualRepresentation);
return element;
diff --git a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/MappingTest.xtend b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/MappingTest.xtend
index 4c4a8a4faf4..e5b75c4b042 100644
--- a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/MappingTest.xtend
+++ b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/MappingTest.xtend
@@ -18,16 +18,15 @@ import java.io.File
import java.io.IOException
import org.eclipse.emf.common.util.BasicDiagnostic
import org.eclipse.papyrus.uml.alf.MappingError
-import org.eclipse.papyrus.uml.alf.impl.ModelNamespaceImpl
import org.eclipse.papyrus.uml.alf.tests.ParserTest
-import org.eclipse.papyrus.uml.alf.tests.utils.ContextModelArea
import org.eclipse.xtext.junit4.XtextRunner
import org.junit.BeforeClass
-import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
import static org.junit.Assert.*
+import org.junit.Ignore
+import org.eclipse.papyrus.uml.alf.validation.ModelNamespaceFacade
@RunWith(XtextRunner)
class MappingTest extends ParserTest {
@@ -44,12 +43,10 @@ class MappingTest extends ParserTest {
mapper = new AlfMapper()
testDirectory = System.getProperty("test.directory", TEST_DIRECTORY)
testFile = System.getProperty("test.file");
- var modelArea = new ContextModelArea("Model");
- ModelNamespaceImpl.setContext(modelArea.getModel);
}
@Test
- //@Ignore("Doesn't run on Maven - Bug 464026")
+ @Ignore("Doesn't run on Maven - Bug 464026")
def void testMapping() {
var failures = 0
var File[] files
@@ -66,6 +63,7 @@ class MappingTest extends ParserTest {
if (name.substring(l - 4, l).equals(".alf")) {
System.out.print(name + ": ")
val resource = mapper.getResource(file.path)
+ ModelNamespaceFacade.instance.createEmptyValidationContext(resource);
val parseFailures = parseResource(resource, true)
if (parseFailures > 0) {
failures = failures + parseFailures
@@ -88,6 +86,7 @@ class MappingTest extends ParserTest {
failures = failures + 1
}
}
+ ModelNamespaceFacade.instance.deleteValidationContext(resource);
resource.unload()
}
}
diff --git a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/MergeTest.xtend b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/MergeTest.xtend
index 3eab307c8f3..ee3bdb21155 100644
--- a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/MergeTest.xtend
+++ b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/mapper/MergeTest.xtend
@@ -28,19 +28,18 @@ import org.eclipse.papyrus.uml.alf.MappingError
import org.eclipse.papyrus.uml.alf.PackageDefinition
import org.eclipse.papyrus.uml.alf.SignalDefinition
import org.eclipse.papyrus.uml.alf.UnitDefinition
-import org.eclipse.papyrus.uml.alf.impl.ModelNamespaceImpl
import org.eclipse.papyrus.uml.alf.tests.ParserTest
-import org.eclipse.papyrus.uml.alf.tests.utils.ContextModelArea
+import org.eclipse.papyrus.uml.alf.validation.ModelNamespaceFacade
import org.eclipse.uml2.uml.Package
import org.eclipse.uml2.uml.PackageableElement
import org.eclipse.uml2.uml.UMLFactory
import org.eclipse.xtext.junit4.XtextRunner
import org.junit.BeforeClass
-import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
import static org.junit.Assert.*
+import org.junit.Ignore
@RunWith(XtextRunner)
class MergeTest extends ParserTest {
@@ -55,15 +54,11 @@ class MergeTest extends ParserTest {
static def void setUp() {
mapper = new AlfMapper()
testDirectory = System.getProperty("test.directory", TEST_DIRECTORY)
- var modelArea = new ContextModelArea("Model");
- ModelNamespaceImpl.setContext(modelArea.getModel);
}
@Test
@Ignore("Doesn't run on Maven - Bug 464026")
def void testMerging() {
- val contextNamespace = ModelNamespaceImpl.getContext() as Package
- val contextResource = contextNamespace.eResource;
var failures = 0;
System.out.println("[MergeTest] Directory " + testDirectory + ":")
val directory = new File(testDirectory)
@@ -73,6 +68,7 @@ class MergeTest extends ParserTest {
if (name.substring(l - 4, l).equals(".alf")) {
System.out.print(name + ": ")
val resource = mapper.getResource(file.path)
+ val modelNamespace = ModelNamespaceFacade.instance.createEmptyValidationContext(resource);
val parseFailures = parseResource(resource, false)
if (parseFailures > 0) {
failures = failures + parseFailures
@@ -82,19 +78,13 @@ class MergeTest extends ParserTest {
val unit = contents.get(0) as UnitDefinition;
val contextElement = this.mapContext(unit);
contextElement.name = unit.definition.actualName();
- contextNamespace.packagedElements.clear();
- contextNamespace.packagedElements.add(contextElement);
-
+ (modelNamespace.contextNamespace as Package).packagedElements.clear();
+ (modelNamespace.contextNamespace as Package).packagedElements.add(contextElement);
mapper.map(contextElement, contents)
-
- contextResource.save(
+ modelNamespace.contextNamespace.eResource.save(
new FileOutputStream(UML_DIRECTORY + "/" + name.substring(0, l - 4) + ".uml"),
null
);
-
- contextResource.contents.clear();
- contextResource.contents.add(contextNamespace);
-
} catch (MappingError e) {
val status = BasicDiagnostic.toIStatus(e.diagnostic)
System.out.println(" " + status)
@@ -104,6 +94,7 @@ class MergeTest extends ParserTest {
e.printStackTrace()
}
}
+ ModelNamespaceFacade.instance.deleteValidationContext(resource);
resource.unload()
}
}
diff --git a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/utils/ContextModelArea.java b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/utils/ContextModelArea.java
deleted file mode 100644
index 0b71d84d3ac..00000000000
--- a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/utils/ContextModelArea.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*****************************************************************************
- * 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:
- * Jeremie Tatibouet
- *
- *****************************************************************************/
-
-package org.eclipse.papyrus.uml.alf.tests.utils;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
-import org.eclipse.uml2.uml.ElementImport;
-import org.eclipse.uml2.uml.Model;
-import org.eclipse.uml2.uml.PackageableElement;
-import org.eclipse.uml2.uml.Profile;
-import org.eclipse.uml2.uml.UMLFactory;
-import org.eclipse.uml2.uml.VisibilityKind;
-
-/**
- * This class initializes a UML model by applying required profiles and importing required libraries.
- * The model managed by the class can be retrieved by external entities in order to be modified
- */
-public class ContextModelArea {
-
- /**
- * The resource set in which the different resources (the model, the libraries and the profiles)
- * will be loaded.
- */
- private ResourceSet area;
-
- /**
- * The model for applying profiles and importing registered libraries
- */
- private Model model;
-
-
- /**
- * Constructor
- */
- public ContextModelArea(String modelName) {
- this.model = UMLFactory.eINSTANCE.createModel();
- this.model.setName(modelName);
- this.area = new ResourceSetImpl();
- this.addModelInresource();
- this.loadRequiredResources();
- }
-
- /**
- * Place the model in a resource of the resourceSet
- */
- private void addModelInresource() {
- Resource resource = this.area.createResource(URI.createURI("Model"), "UML");
- if (resource != null) {
- resource.getContents().add(this.model);
- }
- }
-
- /**
- * Load elements that makes the model ready to be used
- */
- protected void loadRequiredResources() {
- this.applyRequiredProfiles();
- this.importRequiredLibraries();
- }
-
- /**
- * Apply the standard profile and the action language profile
- */
- private void applyRequiredProfiles() {
- /* 1 Load and apply standard profile */
- Profile standardProfile = RegisteredItemLoader.getInstance().
- getProfile(RequiredElementsNames.STANDARD_PROFILE);
- if (standardProfile != null) {
- this.model.applyProfile(standardProfile);
- }
- /* 2. Load and apply action language profile */
- Profile actionLanguageProfile = RegisteredItemLoader.getInstance().
- getProfile(RequiredElementsNames.ACTION_LANGUAGE_PROFILE);
- if (actionLanguageProfile != null) {
- this.model.applyProfile(actionLanguageProfile);
- }
- }
-
- /**
- * Import ALF library and UML primitive types in the model
- */
- private void importRequiredLibraries() {
- List<PackageableElement> libraries = new ArrayList<PackageableElement>();
- PackageableElement alfLibrary = RegisteredItemLoader.getInstance().
- loadLibrary(this.area, RequiredElementsNames.ALF_LIBRARY);
- if (alfLibrary != null) {
- libraries.add(alfLibrary);
- }
- PackageableElement umlPrimitiveTypes = RegisteredItemLoader.getInstance().
- loadLibrary(this.area, RequiredElementsNames.UML_PRIMITIVE_TYPES);
- if (umlPrimitiveTypes != null) {
- libraries.add(umlPrimitiveTypes);
- }
- for (PackageableElement library : libraries) {
- ElementImport elementImport = UMLFactory.eINSTANCE.createElementImport();
- elementImport.setImportedElement(library);
- elementImport.setVisibility(VisibilityKind.PUBLIC_LITERAL);
- this.model.getElementImports().add(elementImport);
- }
- }
-
- /**
- * Returns the model managed by this area
- */
- public Model getModel() {
- return this.model;
- }
-
- public class RequiredElementsNames {
- /* Profiles */
- public final static String STANDARD_PROFILE = "Standard";
- public final static String ACTION_LANGUAGE_PROFILE = "ActionLanguage";
- /* Libraries */
- public final static String ALF_LIBRARY = "Alf Library";
- public final static String UML_PRIMITIVE_TYPES = "UMLPrimitiveTypes";
- }
-}
diff --git a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/utils/RegisteredItemLoader.java b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/utils/RegisteredItemLoader.java
index e909923dd32..7a021c7daf1 100644
--- a/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/utils/RegisteredItemLoader.java
+++ b/tests/junit/plugins/uml/alf/org.eclipse.papyrus.uml.alf.tests/src/org/eclipse/papyrus/uml/alf/tests/utils/RegisteredItemLoader.java
@@ -206,4 +206,13 @@ public class RegisteredItemLoader {
this.registeredItemResourceSet.getResources().clear();
this.registeredItemResourceSet = null;
}
+
+ public class RequiredElementsNames {
+ /* Profiles */
+ public final static String STANDARD_PROFILE = "Standard";
+ public final static String ACTION_LANGUAGE_PROFILE = "ActionLanguage";
+ /* Libraries */
+ public final static String ALF_LIBRARY = "Alf Library";
+ public final static String UML_PRIMITIVE_TYPES = "UMLPrimitiveTypes";
+ }
}

Back to the top