Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Monnier2015-03-17 17:26:28 +0000
committerSteve Monnier2015-03-17 17:26:28 +0000
commite5fc87bca5f9677ba62c8569ecb67eff7bd95241 (patch)
treea183b36adb258916c267ff434b74276704809b4a
parenteea990666ab364ddb6e1b6d575eee15774f92480 (diff)
downloadorg.eclipse.sirius-e5fc87bca5f9677ba62c8569ecb67eff7bd95241.tar.gz
org.eclipse.sirius-e5fc87bca5f9677ba62c8569ecb67eff7bd95241.tar.xz
org.eclipse.sirius-e5fc87bca5f9677ba62c8569ecb67eff7bd95241.zip
[462336] Allow (un)control on semantic models other than the first
Fix analysis and aird resource are processed during control and uncontrol to allow these function on other semantic models than the first one. Bug: 462336 Change-Id: Ib0178beaf321a56bca74a6bd6311f91e22942a3b Signed-off-by: Steve Monnier <steve.monnier@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/data/unit/control/448373/448373.ecore7
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/data/unit/control/448373/448373b.ecore7
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/data/unit/control/448373/representations.aird65
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/tools/SiriusControlTest.java82
-rw-r--r--plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/control/SiriusControlCommand.java4
-rw-r--r--plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/control/SiriusUncontrolCommand.java6
6 files changed, 163 insertions, 8 deletions
diff --git a/plugins/org.eclipse.sirius.tests.junit/data/unit/control/448373/448373.ecore b/plugins/org.eclipse.sirius.tests.junit/data/unit/control/448373/448373.ecore
new file mode 100644
index 0000000000..435c35d1b3
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.junit/data/unit/control/448373/448373.ecore
@@ -0,0 +1,7 @@
+<?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="p0">
+ <eSubpackages name="p1">
+ <eClassifiers xsi:type="ecore:EClass" name="c1"/>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.sirius.tests.junit/data/unit/control/448373/448373b.ecore b/plugins/org.eclipse.sirius.tests.junit/data/unit/control/448373/448373b.ecore
new file mode 100644
index 0000000000..435c35d1b3
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.junit/data/unit/control/448373/448373b.ecore
@@ -0,0 +1,7 @@
+<?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="p0">
+ <eSubpackages name="p1">
+ <eClassifiers xsi:type="ecore:EClass" name="c1"/>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.sirius.tests.junit/data/unit/control/448373/representations.aird b/plugins/org.eclipse.sirius.tests.junit/data/unit/control/448373/representations.aird
new file mode 100644
index 0000000000..bd477ef285
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.junit/data/unit/control/448373/representations.aird
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<viewpoint:DAnalysis xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" 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/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style" xmi:id="_8JNJ8Mv4EeSbcMzHkaYyAg" selectedViews="_94AOEMv4EeSbcMzHkaYyAg" version="8.1.1">
+ <models xmi:type="ecore:EPackage" href="448373.ecore#/"/>
+ <models xmi:type="ecore:EPackage" href="448373b.ecore#/"/>
+ <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_94AOEMv4EeSbcMzHkaYyAg" initialized="true">
+ <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_CoLYgMv5EeSbcMzHkaYyAg" name="p0 package entities">
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_CoL_kMv5EeSbcMzHkaYyAg" source="GMF_DIAGRAMS">
+ <data xmi:type="notation:Diagram" xmi:id="_CoL_kcv5EeSbcMzHkaYyAg" type="Sirius" element="_CoLYgMv5EeSbcMzHkaYyAg" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_CoMmoMv5EeSbcMzHkaYyAg" type="2002" element="_CoLYgcv5EeSbcMzHkaYyAg">
+ <children xmi:type="notation:Node" xmi:id="_CoMmo8v5EeSbcMzHkaYyAg" type="5006"/>
+ <children xmi:type="notation:Node" xmi:id="_CoMmpMv5EeSbcMzHkaYyAg" type="7001">
+ <children xmi:type="notation:Node" xmi:id="_CoNNsMv5EeSbcMzHkaYyAg" type="3009" element="_CoLYh8v5EeSbcMzHkaYyAg">
+ <children xmi:type="notation:Node" xmi:id="_CoNNs8v5EeSbcMzHkaYyAg" type="5004"/>
+ <children xmi:type="notation:Node" xmi:id="_CoN0wMv5EeSbcMzHkaYyAg" type="7003">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CoN0wcv5EeSbcMzHkaYyAg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CoN0wsv5EeSbcMzHkaYyAg"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_CoNNscv5EeSbcMzHkaYyAg" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CoNNssv5EeSbcMzHkaYyAg" x="45" y="44"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CoMmpcv5EeSbcMzHkaYyAg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CoMmpsv5EeSbcMzHkaYyAg"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_CoMmocv5EeSbcMzHkaYyAg" fontName="Segoe UI" fontHeight="10"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CoMmosv5EeSbcMzHkaYyAg" x="200" y="100"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_CoL_ksv5EeSbcMzHkaYyAg"/>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_CoLYgcv5EeSbcMzHkaYyAg" name="p1">
+ <target xmi:type="ecore:EPackage" href="448373b.ecore#//p1"/>
+ <semanticElements xmi:type="ecore:EPackage" href="448373b.ecore#//p1"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_CoLYgsv5EeSbcMzHkaYyAg" labelSize="10" backgroundStyle="GradientTopToBottom">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_CoLYg8v5EeSbcMzHkaYyAg"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.sirius.sample.ecore.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']/@containerMappings[name='Design%20Package']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_CoLYhMv5EeSbcMzHkaYyAg"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_CoLYhcv5EeSbcMzHkaYyAg" red="255" green="245" blue="181"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_CoLYhsv5EeSbcMzHkaYyAg" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.sirius.sample.ecore.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']/@containerMappings[name='Design%20Package']"/>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_CoLYh8v5EeSbcMzHkaYyAg" name="c1" tooltipText="p1.c1">
+ <target xmi:type="ecore:EClass" href="448373b.ecore#//p1/c1"/>
+ <semanticElements xmi:type="ecore:EClass" href="448373b.ecore#//p1/c1"/>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_CoLYiMv5EeSbcMzHkaYyAg" backgroundStyle="GradientTopToBottom">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_CoLYicv5EeSbcMzHkaYyAg"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.sirius.sample.ecore.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_CoLYisv5EeSbcMzHkaYyAg"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_CoLYi8v5EeSbcMzHkaYyAg" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_CoLYjMv5EeSbcMzHkaYyAg" red="209" green="209" blue="209"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.sirius.sample.ecore.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ </ownedDiagramElements>
+ <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.sirius.sample.ecore.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+ <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_CoLYjcv5EeSbcMzHkaYyAg"/>
+ <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.sirius.sample.ecore.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.sirius.sample.ecore.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+ <target xmi:type="ecore:EPackage" href="448373b.ecore#/"/>
+ </ownedRepresentations>
+ <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.sirius.sample.ecore.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
+ </ownedViews>
+</viewpoint:DAnalysis>
diff --git a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/tools/SiriusControlTest.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/tools/SiriusControlTest.java
index 816155bca1..6cac5f3013 100644
--- a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/tools/SiriusControlTest.java
+++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/tools/SiriusControlTest.java
@@ -11,8 +11,10 @@
package org.eclipse.sirius.tests.unit.api.tools;
import java.io.File;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
+import java.util.Iterator;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
@@ -32,16 +34,18 @@ import org.eclipse.sirius.business.api.preferences.SiriusPreferencesKeys;
import org.eclipse.sirius.common.tools.internal.resource.ResourceSyncClientNotifier;
import org.eclipse.sirius.diagram.tools.api.command.DiagramCommandFactoryService;
import org.eclipse.sirius.diagram.tools.api.command.IDiagramCommandFactory;
+import org.eclipse.sirius.tests.SiriusTestsPlugin;
import org.eclipse.sirius.tests.support.api.EclipseTestsSupportHelper;
import org.eclipse.sirius.tests.support.api.TestsUtil;
+import org.eclipse.sirius.tests.unit.diagram.control.AbstractControlTest;
import org.eclipse.sirius.tools.api.command.ui.NoUICallback;
import org.eclipse.sirius.viewpoint.DAnalysis;
import org.eclipse.sirius.viewpoint.DRepresentation;
import org.eclipse.sirius.viewpoint.DView;
import org.eclipse.sirius.viewpoint.provider.SiriusEditPlugin;
+import org.junit.Assert;
-import org.eclipse.sirius.tests.SiriusTestsPlugin;
-import org.eclipse.sirius.tests.unit.diagram.control.AbstractControlTest;
+import com.google.common.collect.Lists;
public class SiriusControlTest extends AbstractControlTest {
@@ -67,6 +71,10 @@ public class SiriusControlTest extends AbstractControlTest {
private static final String SEMANTIC_MODEL_FILENAME_7 = "VP-2818/tc.ecore";
+ private static final String SEMANTIC_MODEL_FILENAME_8 = "448373/448373.ecore";
+
+ private static final String SEMANTIC_MODEL_FILENAME_8_1 = "448373/448373b.ecore";
+
private static final String SESSION_MODEL_FILENAME_1 = "base/chain.aird";
private static final String SESSION_MODEL_FILENAME_2 = "controlled/chain.aird";
@@ -87,6 +95,8 @@ public class SiriusControlTest extends AbstractControlTest {
private static final String SESSION_MODEL_FILENAME_7 = "VP-2818/tc.aird";
+ private static final String SESSION_MODEL_FILENAME_8 = "448373/representations.aird";
+
@Override
protected void setUp() throws Exception {
super.setUp();
@@ -101,6 +111,8 @@ public class SiriusControlTest extends AbstractControlTest {
EclipseTestsSupportHelper.INSTANCE.copyFile(SiriusTestsPlugin.PLUGIN_ID, PATH + "/" + SEMANTIC_MODEL_FILENAME_6_1, "/" + TEMPORARY_PROJECT_NAME + "/" + SEMANTIC_MODEL_FILENAME_6_1);
EclipseTestsSupportHelper.INSTANCE.copyFile(SiriusTestsPlugin.PLUGIN_ID, PATH + "/" + SEMANTIC_MODEL_FILENAME_6_2, "/" + TEMPORARY_PROJECT_NAME + "/" + SEMANTIC_MODEL_FILENAME_6_2);
EclipseTestsSupportHelper.INSTANCE.copyFile(SiriusTestsPlugin.PLUGIN_ID, PATH + "/" + SEMANTIC_MODEL_FILENAME_7, "/" + TEMPORARY_PROJECT_NAME + "/" + SEMANTIC_MODEL_FILENAME_7);
+ EclipseTestsSupportHelper.INSTANCE.copyFile(SiriusTestsPlugin.PLUGIN_ID, PATH + "/" + SEMANTIC_MODEL_FILENAME_8, "/" + TEMPORARY_PROJECT_NAME + "/" + SEMANTIC_MODEL_FILENAME_8);
+ EclipseTestsSupportHelper.INSTANCE.copyFile(SiriusTestsPlugin.PLUGIN_ID, PATH + "/" + SEMANTIC_MODEL_FILENAME_8_1, "/" + TEMPORARY_PROJECT_NAME + "/" + SEMANTIC_MODEL_FILENAME_8_1);
EclipseTestsSupportHelper.INSTANCE.copyFile(SiriusTestsPlugin.PLUGIN_ID, PATH + "/" + SESSION_MODEL_FILENAME_1, "/" + TEMPORARY_PROJECT_NAME + "/" + SESSION_MODEL_FILENAME_1);
EclipseTestsSupportHelper.INSTANCE.copyFile(SiriusTestsPlugin.PLUGIN_ID, PATH + "/" + SESSION_MODEL_FILENAME_2, "/" + TEMPORARY_PROJECT_NAME + "/" + SESSION_MODEL_FILENAME_2);
@@ -112,6 +124,7 @@ public class SiriusControlTest extends AbstractControlTest {
EclipseTestsSupportHelper.INSTANCE.copyFile(SiriusTestsPlugin.PLUGIN_ID, PATH + "/" + SESSION_MODEL_FILENAME_6_1, "/" + TEMPORARY_PROJECT_NAME + "/" + SESSION_MODEL_FILENAME_6_1);
EclipseTestsSupportHelper.INSTANCE.copyFile(SiriusTestsPlugin.PLUGIN_ID, PATH + "/" + SESSION_MODEL_FILENAME_6_2, "/" + TEMPORARY_PROJECT_NAME + "/" + SESSION_MODEL_FILENAME_6_2);
EclipseTestsSupportHelper.INSTANCE.copyFile(SiriusTestsPlugin.PLUGIN_ID, PATH + "/" + SESSION_MODEL_FILENAME_7, "/" + TEMPORARY_PROJECT_NAME + "/" + SESSION_MODEL_FILENAME_7);
+ EclipseTestsSupportHelper.INSTANCE.copyFile(SiriusTestsPlugin.PLUGIN_ID, PATH + "/" + SESSION_MODEL_FILENAME_8, "/" + TEMPORARY_PROJECT_NAME + "/" + SESSION_MODEL_FILENAME_8);
}
public void testControl() throws Exception {
@@ -153,6 +166,71 @@ public class SiriusControlTest extends AbstractControlTest {
}
/**
+ * Test validating that it is possible to control/uncontrol the second
+ * semantic model of a modeling project.
+ *
+ * @throws Exception
+ */
+ public void testControlUncontrolSecondModel() throws Exception {
+ // Addition of 2 models as semantic resources
+ ArrayList<String> semanticModelPaths = Lists.<String> newArrayList();
+ semanticModelPaths.add(TEMPORARY_PROJECT_NAME + "/" + SEMANTIC_MODEL_FILENAME_8);
+ semanticModelPaths.add(TEMPORARY_PROJECT_NAME + "/" + SEMANTIC_MODEL_FILENAME_8_1);
+ genericSetUp(semanticModelPaths, Collections.<String> emptyList(), TEMPORARY_PROJECT_NAME + "/" + SESSION_MODEL_FILENAME_8);
+ ResourceSet rs = session.getTransactionalEditingDomain().getResourceSet();
+ // Disabling ui callback
+ SiriusEditPlugin.getPlugin().setUiCallback(new NoUICallback());
+ IDiagramCommandFactory commandFactory = DiagramCommandFactoryService.getInstance().getNewProvider().getCommandFactory(session.getTransactionalEditingDomain());
+ commandFactory.setUserInterfaceCallBack(new NoUICallback());
+
+ // The control will be done on a element of the second semantic resource
+ Iterator<Resource> semanticResourceIterator = session.getSemanticResources().iterator();
+ Resource semanticResource = semanticResourceIterator.next();
+ Assert.assertEquals("The path of the first semantic resource is unexpected", "/resource/" + TEMPORARY_PROJECT_NAME + "/" + SEMANTIC_MODEL_FILENAME_8, semanticResource.getURI().path());
+ semanticResource = semanticResourceIterator.next();
+ Assert.assertEquals("The path of the second semantic resource is unexpected", "/resource/" + TEMPORARY_PROJECT_NAME + "/" + SEMANTIC_MODEL_FILENAME_8_1, semanticResource.getURI().path());
+
+ EObject semanticElt = semanticResource.getContents().get(0);
+ try {
+ assertFilesExist("/" + SEMANTIC_MODEL_FILENAME_8, "/" + SEMANTIC_MODEL_FILENAME_8_1, "/" + SESSION_MODEL_FILENAME_8);
+ String semantic_model_filename_8_1_controlled = ("/" + SEMANTIC_MODEL_FILENAME_8_1).replace(".ecore", "_controlled.ecore");
+ String session_model_filename_8_1_controlled = ("/" + SESSION_MODEL_FILENAME_8).replace(".aird", "_controlled.aird");
+ assertFilesDoNotExist(semantic_model_filename_8_1_controlled, session_model_filename_8_1_controlled);
+ assertEquals("The resourceSet should be contains only 3 resources typed Aird and Ecore", 3, getResourceTypeAirdOrEcore(rs).size());
+
+ final EObject root = findPackageNamed("p1", semanticElt);
+ final DRepresentation representation = session.getOwnedViews().iterator().next().getAllRepresentations().get(0);
+ final URI controlledModelUri = URI.createPlatformResourceURI(TEMPORARY_PROJECT_NAME + semantic_model_filename_8_1_controlled, true);
+ final URI controlledAirdUri = URI.createPlatformResourceURI(TEMPORARY_PROJECT_NAME + session_model_filename_8_1_controlled, true);
+ siriusControl(root, controlledModelUri, Collections.singleton(representation), controlledAirdUri);
+
+ final EObject root2 = findPackageNamed("p1", semanticElt);
+ assertNotNull(root2);
+ assertSame(root, root2);
+ assertEquals(controlledModelUri, root2.eResource().getURI());
+ assertEquals(controlledAirdUri, representation.eResource().getURI());
+
+ // Check that the created aird does not need migration (version tag
+ // must be initialized)
+ checkRepresentationFileMigrationStatus(controlledAirdUri, false);
+
+ assertFilesExist("/" + SEMANTIC_MODEL_FILENAME_8, "/" + SEMANTIC_MODEL_FILENAME_8_1, "/" + SESSION_MODEL_FILENAME_8, semantic_model_filename_8_1_controlled,
+ session_model_filename_8_1_controlled);
+ assertEquals("The resourceSet should be contains only 5 resources typed Aird and Ecore", 5, getResourceTypeAirdOrEcore(rs).size());
+
+ // Uncontrol the controlled element
+ Command vuc = new SiriusUncontrolCommand(root2, true, true, new NullProgressMonitor());
+ session.getTransactionalEditingDomain().getCommandStack().execute(vuc);
+
+ assertFilesExist("/" + SEMANTIC_MODEL_FILENAME_8, "/" + SEMANTIC_MODEL_FILENAME_8_1, "/" + SESSION_MODEL_FILENAME_8);
+ assertEquals("The resourceSet should be contains only 3 resources typed Aird and Ecore", 3, getResourceTypeAirdOrEcore(rs).size());
+ assertFilesDoNotExist(semantic_model_filename_8_1_controlled, session_model_filename_8_1_controlled);
+ } finally {
+ session.close(new NullProgressMonitor());
+ }
+ }
+
+ /**
* The control command must add a models if an element of the controlled
* representations point outside the semantic model.
*
diff --git a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/control/SiriusControlCommand.java b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/control/SiriusControlCommand.java
index a0fbe57247..40f0ce547c 100644
--- a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/control/SiriusControlCommand.java
+++ b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/control/SiriusControlCommand.java
@@ -38,6 +38,7 @@ import org.eclipse.sirius.viewpoint.SiriusPlugin;
import org.eclipse.sirius.viewpoint.ViewpointFactory;
import org.eclipse.sirius.viewpoint.description.Viewpoint;
+import com.google.common.collect.Iterables;
import com.google.common.collect.Iterators;
import com.google.common.collect.Sets;
@@ -249,8 +250,7 @@ public class SiriusControlCommand extends ControlCommand {
for (Resource aird : session.getAllSessionResources()) {
DAnalysis currentAnalysis = getDAnalysis(aird);
- Option<EObject> optionalMainModel = new DAnalysisQuery(currentAnalysis).getMainModel();
- if (optionalMainModel.some() && optionalMainModel.get().equals(semanticParentRoot)) {
+ if (Iterables.contains(currentAnalysis.getModels(), semanticParentRoot)) {
List<DAnalysis> referencedAnalysis = new ArrayList<DAnalysis>(currentAnalysis.getReferencedAnalysis());
for (DAnalysis childrenAnalysis : referencedAnalysis) {
Option<EObject> optionalChildrenMainModel = new DAnalysisQuery(childrenAnalysis).getMainModel();
diff --git a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/control/SiriusUncontrolCommand.java b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/control/SiriusUncontrolCommand.java
index c075333391..905a4a1501 100644
--- a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/control/SiriusUncontrolCommand.java
+++ b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/control/SiriusUncontrolCommand.java
@@ -19,17 +19,16 @@ import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.sirius.business.api.query.DAnalysisQuery;
import org.eclipse.sirius.business.api.query.EObjectQuery;
import org.eclipse.sirius.business.api.session.Session;
import org.eclipse.sirius.business.api.session.SessionManager;
import org.eclipse.sirius.business.api.session.danalysis.DAnalysisSession;
import org.eclipse.sirius.business.internal.command.control.UncontrolCommand;
-import org.eclipse.sirius.ext.base.Option;
import org.eclipse.sirius.viewpoint.DAnalysis;
import org.eclipse.sirius.viewpoint.DRepresentation;
import org.eclipse.sirius.viewpoint.SiriusPlugin;
+import com.google.common.collect.Iterables;
import com.google.common.collect.Iterators;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
@@ -195,8 +194,7 @@ public class SiriusUncontrolCommand extends UncontrolCommand {
for (final Resource anResource : session.getAllSessionResources()) {
for (final DAnalysis analysis : getAnalyses(anResource)) {
- Option<EObject> optionalMainModel = new DAnalysisQuery(analysis).getMainModel();
- if (optionalMainModel.some() && optionalMainModel.get().equals(object)) {
+ if (Iterables.contains(analysis.getModels(), object)) {
return anResource;
}
}

Back to the top