Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxime Porhel2016-04-14 13:40:11 +0000
committerMaxime Porhel2016-04-18 08:50:23 +0000
commit58aaa6979c470740ef8f0bbd4e483afab6d7735c (patch)
tree7ea52c20236f98382f65ed21c688bd42798b095b
parentfcfde6e2cc714fb3d2f3d749f375b872367107be (diff)
downloadorg.eclipse.sirius-58aaa6979c470740ef8f0bbd4e483afab6d7735c.tar.gz
org.eclipse.sirius-58aaa6979c470740ef8f0bbd4e483afab6d7735c.tar.xz
org.eclipse.sirius-58aaa6979c470740ef8f0bbd4e483afab6d7735c.zip
[491604] DRepresentation merge into DView migration
Bug: 491604 Change-Id: I313340cfa8a4e4fd13dd721005735f8bcd6ad588 Signed-off-by: Maxime Porhel <maxime.porhel@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.aird57
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.ecore9
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.odesign32
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/common/AllCommonPluginTests.java2
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/migration/DRepresentationContainerRemovalMigrationTest.java158
-rw-r--r--plugins/org.eclipse.sirius/plugin.xml4
-rw-r--r--plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/migration/DRepresentationContainerToDViewMigrationParticipant.java48
7 files changed, 310 insertions, 0 deletions
diff --git a/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.aird b/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.aird
new file mode 100644
index 0000000000..91ca52a257
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.aird
@@ -0,0 +1,57 @@
+<?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="_qabOcALgEeabsea8lH150Q" selectedViews="_D-oBcALhEeabsea8lH150Q" version="10.1.0.201509162000">
+ <semanticResources>dRepresentationContainerRemoval.ecore</semanticResources>
+ <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_D-oBcALhEeabsea8lH150Q">
+ <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_GGSRgALhEeabsea8lH150Q" name="DRepresentationContainerRemoval">
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_GGSRgQLhEeabsea8lH150Q" source="DANNOTATION_CUSTOMIZATION_KEY">
+ <data xmi:type="diagram:ComputedStyleDescriptionRegistry" xmi:id="_GGSRggLhEeabsea8lH150Q"/>
+ </ownedAnnotationEntries>
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_GG-1EALhEeabsea8lH150Q" source="GMF_DIAGRAMS">
+ <data xmi:type="notation:Diagram" xmi:id="_GG-1EQLhEeabsea8lH150Q" type="Sirius" element="_GGSRgALhEeabsea8lH150Q" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_GHWogALhEeabsea8lH150Q" type="2002" element="_GGSRgwLhEeabsea8lH150Q">
+ <children xmi:type="notation:Node" xmi:id="_GIYjQALhEeabsea8lH150Q" type="5006"/>
+ <children xmi:type="notation:Node" xmi:id="_GIbmkALhEeabsea8lH150Q" type="7001">
+ <children xmi:type="notation:Node" xmi:id="_GIuhgALhEeabsea8lH150Q" type="3007" element="_GGSRhQLhEeabsea8lH150Q">
+ <children xmi:type="notation:Node" xmi:id="_GIvIkALhEeabsea8lH150Q" type="5003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GIvIkQLhEeabsea8lH150Q" x="31"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_GJG8AALhEeabsea8lH150Q" type="3003" element="_GGSRhgLhEeabsea8lH150Q">
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_GJG8AQLhEeabsea8lH150Q" fontName=".SF NS Text"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GJG8AgLhEeabsea8lH150Q"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_GIuhgQLhEeabsea8lH150Q" fontName=".SF NS Text" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GIuhggLhEeabsea8lH150Q" x="31" y="30" width="30" height="30"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GIbmkQLhEeabsea8lH150Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GIbmkgLhEeabsea8lH150Q"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_GHWogQLhEeabsea8lH150Q" fontName=".SF NS Text" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GHWoggLhEeabsea8lH150Q"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_GG-1EgLhEeabsea8lH150Q"/>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_GGSRgwLhEeabsea8lH150Q" name="P1">
+ <target xmi:type="ecore:EPackage" href="dRepresentationContainerRemoval.ecore#//P1"/>
+ <semanticElements xmi:type="ecore:EPackage" href="dRepresentationContainerRemoval.ecore#//P1"/>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_GGSRhALhEeabsea8lH150Q" borderSize="1" borderSizeComputationExpression="1" backgroundColor="233,185,110" foregroundColor="253,206,137">
+ <description xmi:type="style:FlatContainerStyleDescription" href="dRepresentationContainerRemoval.odesign#//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']/@defaultLayer/@containerMappings[name='EPackage']/@style"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="dRepresentationContainerRemoval.odesign#//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']/@defaultLayer/@containerMappings[name='EPackage']"/>
+ <ownedDiagramElements xmi:type="diagram:DNode" xmi:id="_GGSRhQLhEeabsea8lH150Q" name="C1" width="3" height="3">
+ <target xmi:type="ecore:EClass" href="dRepresentationContainerRemoval.ecore#//P1/C1"/>
+ <semanticElements xmi:type="ecore:EClass" href="dRepresentationContainerRemoval.ecore#//P1/C1"/>
+ <ownedStyle xmi:type="diagram:Square" xmi:id="_GGSRhgLhEeabsea8lH150Q" color="173,127,168">
+ <description xmi:type="style:SquareDescription" href="dRepresentationContainerRemoval.odesign#//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']/@defaultLayer/@containerMappings[name='EPackage']/@subNodeMappings[name='EClass']/@style"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="dRepresentationContainerRemoval.odesign#//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']/@defaultLayer/@containerMappings[name='EPackage']/@subNodeMappings[name='EClass']"/>
+ </ownedDiagramElements>
+ </ownedDiagramElements>
+ <description xmi:type="description_1:DiagramDescription" href="dRepresentationContainerRemoval.odesign#//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']"/>
+ <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_GGSRhwLhEeabsea8lH150Q"/>
+ <activatedLayers xmi:type="description_1:Layer" href="dRepresentationContainerRemoval.odesign#//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']/@defaultLayer"/>
+ <target xmi:type="ecore:EPackage" href="dRepresentationContainerRemoval.ecore#/"/>
+ </ownedRepresentations>
+ <viewpoint xmi:type="description:Viewpoint" href="dRepresentationContainerRemoval.odesign#//@ownedViewpoints[name='DRepresentationContainerRemoval']"/>
+ </ownedViews>
+</viewpoint:DAnalysis>
diff --git a/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.ecore b/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.ecore
new file mode 100644
index 0000000000..fd8ad08e63
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.ecore
@@ -0,0 +1,9 @@
+<?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">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="toC1" eType="#//P1/C1"/>
+ </eClassifiers>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.odesign b/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.odesign
new file mode 100644
index 0000000000..a3ba0ecbc2
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.odesign
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="ASCII"?>
+<description:Group 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:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" name="DRepresentationContainerRemoval" version="10.1.3.201511131800">
+ <ownedViewpoints name="DRepresentationContainerRemoval" modelFileExtension="*.ecore">
+ <ownedRepresentations xsi:type="description_1:DiagramDescription" name="DRepresentationContainerRemoval" domainClass="EPackage">
+ <defaultLayer name="Default">
+ <edgeMappings name="EReference" semanticCandidatesExpression="aql:self.eAllContents(ecore::EReference)->select(e | not e.eOpposite)" sourceMapping="//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']/@defaultLayer/@containerMappings[name='EPackage']/@subNodeMappings[name='EClass']" targetMapping="//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']/@defaultLayer/@containerMappings[name='EPackage']/@subNodeMappings[name='EClass']" targetFinderExpression="aql:self.eType" sourceFinderExpression="aql:self.eContainer()" domainClass="EReference" useDomainElement="true">
+ <style>
+ <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
+ <centerLabelStyleDescription showIcon="false" labelExpression="aql:self.name">
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ </style>
+ </edgeMappings>
+ <containerMappings name="EPackage" semanticCandidatesExpression="aql:self.eContents()->filter(ecore::EPackage)" domainClass="EPackage" reusedContainerMappings="//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']/@defaultLayer/@containerMappings[name='EPackage']">
+ <subNodeMappings name="EClass" semanticCandidatesExpression="aql:self.eContents()->filter(ecore::EClass)" domainClass="EClass">
+ <style xsi:type="style:SquareDescription">
+ <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='purple']"/>
+ </style>
+ </subNodeMappings>
+ <style xsi:type="style:FlatContainerStyleDescription" arcWidth="1" arcHeight="1" borderSizeComputationExpression="1">
+ <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='chocolate']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_orange']"/>
+ </style>
+ </containerMappings>
+ </defaultLayer>
+ </ownedRepresentations>
+ </ownedViewpoints>
+</description:Group>
diff --git a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/common/AllCommonPluginTests.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/common/AllCommonPluginTests.java
index 64041bc18f..a79d4b50ce 100644
--- a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/common/AllCommonPluginTests.java
+++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/common/AllCommonPluginTests.java
@@ -111,6 +111,7 @@ import org.eclipse.sirius.tests.unit.diagram.migration.BorderSizeMigrationTest;
import org.eclipse.sirius.tests.unit.diagram.migration.ComputedStyleDescriptionCachePackingFileMigrationParticipantTests;
import org.eclipse.sirius.tests.unit.diagram.migration.CorruptedViewsMigrationTests;
import org.eclipse.sirius.tests.unit.diagram.migration.DDiagramSetRemovalMigrationTest;
+import org.eclipse.sirius.tests.unit.diagram.migration.DRepresentationContainerRemovalMigrationTest;
import org.eclipse.sirius.tests.unit.diagram.migration.DiagramSplitMigrationTest;
import org.eclipse.sirius.tests.unit.diagram.migration.FontFormatMigrationTest;
import org.eclipse.sirius.tests.unit.diagram.migration.FontStyleForDNodeListElementMigrationTest;
@@ -214,6 +215,7 @@ public class AllCommonPluginTests extends TestCase {
suite.addTestSuite(FontFormatMigrationTest.class);
suite.addTestSuite(BorderSizeMigrationTest.class);
suite.addTestSuite(VariableMigrationTest.class);
+ suite.addTestSuite(DRepresentationContainerRemovalMigrationTest.class);
suite.addTest(new JUnit4TestAdapter(CommonPreferencesTest.class));
suite.addTest(new JUnit4TestAdapter(GroupingContentProviderTest.class));
diff --git a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/migration/DRepresentationContainerRemovalMigrationTest.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/migration/DRepresentationContainerRemovalMigrationTest.java
new file mode 100644
index 0000000000..07f706f238
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/migration/DRepresentationContainerRemovalMigrationTest.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * Copyright (c) 2016 THALES GLOBAL SERVICES.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.tests.unit.diagram.migration;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Collections;
+
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ExtensibleURIConverterImpl;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.sirius.business.internal.migration.DRepresentationContainerToDViewMigrationParticipant;
+import org.eclipse.sirius.business.internal.migration.RepresentationsFileMigrationService;
+import org.eclipse.sirius.ecore.extender.tool.api.ModelUtils;
+import org.eclipse.sirius.tests.SiriusTestsPlugin;
+import org.eclipse.sirius.tests.support.api.SiriusTestCase;
+import org.eclipse.sirius.tools.api.command.ICommandFactory;
+import org.eclipse.sirius.viewpoint.DAnalysis;
+import org.eclipse.sirius.viewpoint.ViewpointPackage;
+import org.osgi.framework.Version;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * Test class to test the load of aird serialized with DRepresentationContainer.
+ *
+ * @author mporhel
+ */
+public class DRepresentationContainerRemovalMigrationTest extends SiriusTestCase {
+
+ private static final String DREPRESENTATION_CONTAINER_FOUND = "DRepresentationContainer found.";
+
+ private static final String PATH = "/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/";
+
+ private static final String SESSION_RESOURCE_NAME = "dRepresentationContainerRemoval.aird";
+
+ private static final String SEMANTIC_MODEL_FILENAME = "dRepresentationContainerRemoval.ecore";
+
+ private static final String VSM_RESOURCE_NAME = "dRepresentationContainerRemoval.odesign";
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ genericSetUp();
+ copyFilesToTestProject(SiriusTestsPlugin.PLUGIN_ID, PATH, SEMANTIC_MODEL_FILENAME, SESSION_RESOURCE_NAME, VSM_RESOURCE_NAME);
+ }
+
+ /**
+ * Test that the data were not migrated on the repo. It allows to check the
+ * effect of the migration in the other test.
+ */
+ public void testMigrationIsNeededOnData() {
+ Version dRepresentationContainerRemovalVersion = DRepresentationContainerToDViewMigrationParticipant.MIGRATION_VERSION;
+
+ // Check that the representation file migration is needed.
+ URI uri = URI.createPlatformPluginURI(SiriusTestsPlugin.PLUGIN_ID + PATH + SESSION_RESOURCE_NAME, true);
+ Version loadedVersion = checkRepresentationFileMigrationStatus(uri, true);
+ assertTrue("The DRepresentationContainer removal migration must be required on test data.", dRepresentationContainerRemovalVersion.compareTo(loadedVersion) > 0);
+
+ // check the file contains DRepresentationContainer
+ checkFileContainsDRepresentationContainer(uri, true, "Test data should contain a DRepresentationContainer.");
+ }
+
+ private void checkFileContainsDRepresentationContainer(URI uri, boolean expectedDRepresentationContainer, String errorMessage) {
+ boolean containsDDiagramSet = false;
+ ExtensibleURIConverterImpl uriConverterImpl = new ExtensibleURIConverterImpl();
+ InputStream inputStream = null;
+ try {
+ inputStream = uriConverterImpl.createInputStream(uri);
+ SAXParserFactory factory = SAXParserFactory.newInstance();
+ SAXParser saxParser = factory.newSAXParser();
+ saxParser.parse(inputStream, new DefaultHandler() {
+
+ @Override
+ public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
+ if (qName.equals("ownedViews") && attributes.getValue("xmi:type").equals(ViewpointPackage.eINSTANCE.getNsPrefix() + ":" + "DRepresentationContainer")) {
+ throw new SAXException(DREPRESENTATION_CONTAINER_FOUND);
+ }
+ }
+ });
+ } catch (SAXException e) {
+ if (e.getMessage().contains(DREPRESENTATION_CONTAINER_FOUND)) {
+ containsDDiagramSet = true;
+ }
+ } catch (Exception e) {
+ failCheckData();
+ } finally {
+ if (inputStream != null) {
+ try {
+ inputStream.close();
+ } catch (final IOException e) {
+ failCheckData();
+ }
+ }
+ }
+ assertEquals(errorMessage, expectedDRepresentationContainer, containsDDiagramSet);
+ }
+
+ private void failCheckData() {
+ fail("Check the test data, we should not fail here.");
+ }
+
+ /**
+ * Check the migration is done and does not produce errors during VSM load.
+ */
+ public void testDRepresentationContainerRemovalMigrationDone() {
+ ResourceSet set = new ResourceSetImpl();
+ DAnalysis analysis = null;
+ try {
+ analysis = (DAnalysis) ModelUtils.load(URI.createPlatformResourceURI(TEMPORARY_PROJECT_NAME + "/" + SESSION_RESOURCE_NAME, true), set);
+ } catch (IOException e) {
+ failCheckData();
+ }
+
+ // Check that the migration was done.
+ assertNotNull("Check the representation file test data.", analysis);
+
+ // Check there are no more any types
+ assertTrue("Check the migration logic.", ((XMLResource) analysis.eResource()).getEObjectToExtensionMap().isEmpty());
+
+ // The version will change on save, so migration service will still
+ // indicates that the migration is needed.
+ String version = analysis.getVersion();
+ assertTrue("Before save, the migration framework will return true even if the migration has been done during load.",
+ RepresentationsFileMigrationService.getInstance().isMigrationNeeded(Version.parseVersion(version)));
+
+ try {
+ analysis.eResource().save(Collections.emptyMap());
+ } catch (IOException e) {
+ failCheckData();
+ }
+ // save should update the version.
+ version = analysis.getVersion();
+ assertFalse("The version tag should now be set telling that the migration was done.", RepresentationsFileMigrationService.getInstance().isMigrationNeeded(Version.parseVersion(version)));
+ checkFileContainsDRepresentationContainer(analysis.eResource().getURI(), false, "After migration, the resource should not contains any DRepresentationContainer.");
+ assertFalse(getErrorLoggersMessage(), doesAnErrorOccurs());
+ }
+
+ @Override
+ protected ICommandFactory getCommandFactory() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}
diff --git a/plugins/org.eclipse.sirius/plugin.xml b/plugins/org.eclipse.sirius/plugin.xml
index 26ac9a06d8..2cb3fe8f5b 100644
--- a/plugins/org.eclipse.sirius/plugin.xml
+++ b/plugins/org.eclipse.sirius/plugin.xml
@@ -378,6 +378,10 @@
class="org.eclipse.sirius.business.internal.migration.ReplaceModelsBySemanticResources"
kind="RepresentationsFile">
</participant>
+ <participant
+ class="org.eclipse.sirius.business.internal.migration.DRepresentationContainerToDViewMigrationParticipant"
+ kind="RepresentationsFile">
+ </participant>
</extension>
<extension point="org.eclipse.emf.ecore.generated_package">
<!-- @generated contribution -->
diff --git a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/migration/DRepresentationContainerToDViewMigrationParticipant.java b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/migration/DRepresentationContainerToDViewMigrationParticipant.java
new file mode 100644
index 0000000000..3331428e91
--- /dev/null
+++ b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/migration/DRepresentationContainerToDViewMigrationParticipant.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2016 THALES GLOBAL SERVICES.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.business.internal.migration;
+
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.sirius.business.api.migration.AbstractRepresentationsFileMigrationParticipant;
+import org.eclipse.sirius.viewpoint.ViewpointPackage;
+import org.osgi.framework.Version;
+
+/**
+ * Migration to handle the merge of DRepresentationContainer into DView.
+ *
+ * @author mporhel
+ */
+public class DRepresentationContainerToDViewMigrationParticipant extends AbstractRepresentationsFileMigrationParticipant {
+ /**
+ * The VP version for which this migration is added.
+ */
+ /**
+ * The version for which this migration is added.
+ */
+ public static final Version MIGRATION_VERSION = new Version("11.0.0.201604141600"); //$NON-NLS-1$
+
+ @Override
+ public Version getMigrationVersion() {
+ return MIGRATION_VERSION;
+ }
+
+ @Override
+ public EClassifier getType(EPackage ePackage, String name, String loadedVersion) {
+ EClassifier eClass = null;
+ if (Version.parseVersion(loadedVersion).compareTo(MIGRATION_VERSION) < 0) {
+ if (ViewpointPackage.eINSTANCE.equals(ePackage) && "DRepresentationContainer".equals(name)) { //$NON-NLS-1$
+ eClass = ViewpointPackage.eINSTANCE.getDView();
+ }
+ }
+ return eClass;
+ }
+}

Back to the top