Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur Daussy2014-06-05 09:28:29 +0000
committerLaurent Goubet2014-07-01 09:38:23 +0000
commite735ec0cbcd22d12e979027255e4bb26c3c424f1 (patch)
treefcd5cc8dda32ee82d1d9b78a3791d3e110ea248c
parent9cc9c7c75100533fa8bc0025588547581b725fc6 (diff)
downloadorg.eclipse.emf.compare-e735ec0cbcd22d12e979027255e4bb26c3c424f1.tar.gz
org.eclipse.emf.compare-e735ec0cbcd22d12e979027255e4bb26c3c424f1.tar.xz
org.eclipse.emf.compare-e735ec0cbcd22d12e979027255e4bb26c3c424f1.zip
Unit test for MDT Papyrus differences order.
Refators the UMLDifferencesOrderTest. Create a new test for MDT Papyrus differences order. Change-Id: I81e21a2da0ee7945a7ddae1a7b3c31c0d4e61c3c Signed-off-by: Arthur Daussy <arthur.daussy@obeo.fr>
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.edit/META-INF/MANIFEST.MF2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.ide.ui/META-INF/MANIFEST.MF2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/META-INF/MANIFEST.MF15
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/expectedResultWithUMLRefineElement.nodes248
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/PapyrusDifferencesOrderTest.java219
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/expectedResult_DiagRefineOff.nodes132
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/expectedResult_DiagRefineOn.nodes40
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.notation220
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.uml23
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.notation266
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.uml25
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.notation264
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.uml15
-rw-r--r--plugins/org.eclipse.emf.compare.diagram/META-INF/MANIFEST.MF3
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui/META-INF/MANIFEST.MF8
-rw-r--r--plugins/org.eclipse.emf.compare.uml2.edit/META-INF/MANIFEST.MF4
-rw-r--r--plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/META-INF/MANIFEST.MF1
-rw-r--r--plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/AbstractDifferenceOrderTest.java339
-rw-r--r--plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/NotifierScopeProvider.java28
-rw-r--r--plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/UMLDifferencesOrderTest.java317
-rw-r--r--plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/data/a1/expectedResultWithUMLRefineElementFilter.nodes25
-rw-r--r--plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/data/a1/expectedResultWithoutUMLRefineElementFilter.nodes107
-rw-r--r--plugins/org.eclipse.emf.compare.uml2.rcp.ui/META-INF/MANIFEST.MF2
-rw-r--r--plugins/org.eclipse.emf.compare.uml2/META-INF/MANIFEST.MF2
27 files changed, 2057 insertions, 256 deletions
diff --git a/plugins/org.eclipse.emf.compare.diagram.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.diagram.edit/META-INF/MANIFEST.MF
index 1e2d1be18..6ca4b68c3 100644
--- a/plugins/org.eclipse.emf.compare.diagram.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.compare.diagram.edit/META-INF/MANIFEST.MF
@@ -20,3 +20,5 @@ Require-Bundle: org.eclipse.core.runtime,
Bundle-ActivationPolicy: lazy
Import-Package: com.google.common.base;version="[11.0.0,16.0.0)",
com.google.common.collect;version="[11.0.0,16.0.0)"
+Export-Package: org.eclipse.emf.compare.diagram.internal.extensions.provider.spec;x-friends:="org.eclipse.emf.compare.diagram.papyrus.tests",
+ org.eclipse.emf.compare.diagram.internal.matchs.provider.spec;x-friends:="org.eclipse.emf.compare.diagram.papyrus.tests"
diff --git a/plugins/org.eclipse.emf.compare.diagram.ide.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.diagram.ide.ui/META-INF/MANIFEST.MF
index 4b7654880..052e4ca88 100644
--- a/plugins/org.eclipse.emf.compare.diagram.ide.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.compare.diagram.ide.ui/META-INF/MANIFEST.MF
@@ -23,7 +23,7 @@ Export-Package: org.eclipse.emf.compare.diagram.ide.ui.internal;x-internal:=true
org.eclipse.emf.compare.diagram.ide.ui.internal.accessor.factory;x-internal:=true,
org.eclipse.emf.compare.diagram.ide.ui.internal.contentmergeviewer.diagram;x-internal:=true,
org.eclipse.emf.compare.diagram.ide.ui.internal.preferences;x-internal:=true,
- org.eclipse.emf.compare.diagram.ide.ui.internal.structuremergeviewer.filters;x-internal:=true,
+ org.eclipse.emf.compare.diagram.ide.ui.internal.structuremergeviewer.filters;x-friends:="org.eclipse.emf.compare.diagram.papyrus.tests",
org.eclipse.emf.compare.diagram.ide.ui.internal.structuremergeviewer.filters.groups.extenders
Bundle-Vendor: %providerName
Import-Package: com.google.common.base;version="[11.0.0,16.0.0)",
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/META-INF/MANIFEST.MF
index d294d06bb..8230fd712 100644
--- a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/META-INF/MANIFEST.MF
@@ -13,8 +13,19 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.emf.compare.uml2;bundle-version="2.1.0",
org.eclipse.uml2.uml,
org.eclipse.uml2.uml.resources,
- org.eclipse.papyrus.infra.core
+ org.eclipse.papyrus.infra.core,
+ org.eclipse.emf.compare.diagram.ide.ui;bundle-version="3.1.0",
+ org.eclipse.emf.compare.uml2.rcp.ui;bundle-version="2.2.0",
+ org.eclipse.emf.compare.rcp.ui;bundle-version="4.0.0",
+ org.eclipse.emf.compare.uml2.rcp.ui.tests;bundle-version="2.2.0",
+ org.eclipse.jface,
+ org.eclipse.uml2.uml.edit;bundle-version="5.0.0",
+ org.eclipse.emf.compare.uml2.edit;bundle-version="2.2.0",
+ org.eclipse.emf.compare.edit;bundle-version="4.0.0",
+ org.eclipse.emf.compare.diagram.edit;bundle-version="2.3.0",
+ org.eclipse.gmf.runtime.notation.edit;bundle-version="1.7.0"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-Vendor: %providerName
Import-Package: com.google.common.base;version="[11.0.0,16.0.0)",
- com.google.common.collect;version="[11.0.0,16.0.0)"
+ com.google.common.collect;version="[11.0.0,16.0.0)",
+ com.google.common.eventbus;version="[11.0.0,16.0.0)"
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/expectedResultWithUMLRefineElement.nodes b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/expectedResultWithUMLRefineElement.nodes
new file mode 100644
index 000000000..38c95d97b
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/expectedResultWithUMLRefineElement.nodes
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:nodes="http://www.eclipse.org/emf/compare/tests/nodes">
+ <nodes:Node xmi:id="_HmnacOv3EeOJ757b_KHwtA" name="Diagram MovingNodeDiagram">
+ <containmentRef1 xmi:id="_HmxygOv3EeOJ757b_KHwtA" name="Shape 2007">
+ <containmentRef1 xmi:id="_Hmxygev3EeOJ757b_KHwtA" name="Decoration Node 5026"/>
+ <containmentRef1 xmi:id="_Hmxyguv3EeOJ757b_KHwtA" name="Decoration Node 7016">
+ <containmentRef1 xmi:id="_Hmxyg-v3EeOJ757b_KHwtA" name="Title Style false"/>
+ <containmentRef1 xmi:id="_HmxyhOv3EeOJ757b_KHwtA" name="Bounds 0"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_Hmxyhev3EeOJ757b_KHwtA" name="Bounds 28"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_Hmxyhuv3EeOJ757b_KHwtA" name="Shape 2007">
+ <containmentRef1 xmi:id="_Hmxyh-v3EeOJ757b_KHwtA" name="Decoration Node 5026"/>
+ <containmentRef1 xmi:id="_HmxyiOv3EeOJ757b_KHwtA" name="Decoration Node 7016">
+ <containmentRef1 xmi:id="_Hmxyiev3EeOJ757b_KHwtA" name="Title Style false"/>
+ <containmentRef1 xmi:id="_Hmxyiuv3EeOJ757b_KHwtA" name="Bounds 0"/>
+ <containmentRef1 xmi:id="_Hmxyi-v3EeOJ757b_KHwtA" name="Shape 3010 [children move]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HmxyjOv3EeOJ757b_KHwtA" name="Bounds 289"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_Hmxyjev3EeOJ757b_KHwtA" name="Shape 2008">
+ <containmentRef1 xmi:id="_Hmxyjuv3EeOJ757b_KHwtA" name="Decoration Node 5029"/>
+ <containmentRef1 xmi:id="_Hmxyj-v3EeOJ757b_KHwtA" name="Basic Compartment 7017">
+ <containmentRef1 xmi:id="_HmxykOv3EeOJ757b_KHwtA" name="Title Style false"/>
+ <containmentRef1 xmi:id="_Hmxykev3EeOJ757b_KHwtA" name="Sorting Style None"/>
+ <containmentRef1 xmi:id="_Hmxykuv3EeOJ757b_KHwtA" name="Filtering Style None"/>
+ <containmentRef1 xmi:id="_Hmxyk-v3EeOJ757b_KHwtA" name="Bounds 0"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HmxylOv3EeOJ757b_KHwtA" name="Basic Compartment 7018">
+ <containmentRef1 xmi:id="_Hmxylev3EeOJ757b_KHwtA" name="Title Style false"/>
+ <containmentRef1 xmi:id="_Hmxyluv3EeOJ757b_KHwtA" name="Sorting Style None"/>
+ <containmentRef1 xmi:id="_Hmxyl-v3EeOJ757b_KHwtA" name="Filtering Style None"/>
+ <containmentRef1 xmi:id="_HmxymOv3EeOJ757b_KHwtA" name="Bounds 0"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_Hmxymev3EeOJ757b_KHwtA" name="Basic Compartment 7019">
+ <containmentRef1 xmi:id="_Hmxymuv3EeOJ757b_KHwtA" name="Title Style false"/>
+ <containmentRef1 xmi:id="_Hmxym-v3EeOJ757b_KHwtA" name="Sorting Style None"/>
+ <containmentRef1 xmi:id="_HmxynOv3EeOJ757b_KHwtA" name="Filtering Style None"/>
+ <containmentRef1 xmi:id="_Hmxynev3EeOJ757b_KHwtA" name="Bounds 0"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_Hmxynuv3EeOJ757b_KHwtA" name="Bounds 537"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_Hmxyn-v3EeOJ757b_KHwtA" name="Shape 2008">
+ <containmentRef1 xmi:id="_HmxyoOv3EeOJ757b_KHwtA" name="Decoration Node 5029"/>
+ <containmentRef1 xmi:id="_Hmxyoev3EeOJ757b_KHwtA" name="Basic Compartment 7017">
+ <containmentRef1 xmi:id="_Hmxyouv3EeOJ757b_KHwtA" name="Title Style false"/>
+ <containmentRef1 xmi:id="_Hmxyo-v3EeOJ757b_KHwtA" name="Sorting Style None"/>
+ <containmentRef1 xmi:id="_HmxypOv3EeOJ757b_KHwtA" name="Filtering Style None"/>
+ <containmentRef1 xmi:id="_HmyZkOv3EeOJ757b_KHwtA" name="Bounds 0"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HmyZkev3EeOJ757b_KHwtA" name="Basic Compartment 7018">
+ <containmentRef1 xmi:id="_HmyZkuv3EeOJ757b_KHwtA" name="Title Style false"/>
+ <containmentRef1 xmi:id="_HmyZk-v3EeOJ757b_KHwtA" name="Sorting Style None"/>
+ <containmentRef1 xmi:id="_HmyZlOv3EeOJ757b_KHwtA" name="Filtering Style None"/>
+ <containmentRef1 xmi:id="_HmyZlev3EeOJ757b_KHwtA" name="Bounds 0"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HmyZluv3EeOJ757b_KHwtA" name="Basic Compartment 7019">
+ <containmentRef1 xmi:id="_HmyZl-v3EeOJ757b_KHwtA" name="Title Style false"/>
+ <containmentRef1 xmi:id="_HmyZmOv3EeOJ757b_KHwtA" name="Sorting Style None"/>
+ <containmentRef1 xmi:id="_HmyZmev3EeOJ757b_KHwtA" name="Filtering Style None"/>
+ <containmentRef1 xmi:id="_HmyZmuv3EeOJ757b_KHwtA" name="Bounds 0"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HmyZm-v3EeOJ757b_KHwtA" name="Bounds 772"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HmyZnOv3EeOJ757b_KHwtA" name="Shape 2008">
+ <containmentRef1 xmi:id="_HmyZnev3EeOJ757b_KHwtA" name="Decoration Node 5029"/>
+ <containmentRef1 xmi:id="_HmyZnuv3EeOJ757b_KHwtA" name="Basic Compartment 7017">
+ <containmentRef1 xmi:id="_HmyZn-v3EeOJ757b_KHwtA" name="Title Style false"/>
+ <containmentRef1 xmi:id="_HmyZoOv3EeOJ757b_KHwtA" name="Sorting Style None"/>
+ <containmentRef1 xmi:id="_HmyZoev3EeOJ757b_KHwtA" name="Filtering Style None"/>
+ <containmentRef1 xmi:id="_HmyZouv3EeOJ757b_KHwtA" name="Bounds 0"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HmyZo-v3EeOJ757b_KHwtA" name="Basic Compartment 7018">
+ <containmentRef1 xmi:id="_HmyZpOv3EeOJ757b_KHwtA" name="Title Style false"/>
+ <containmentRef1 xmi:id="_HmyZpev3EeOJ757b_KHwtA" name="Sorting Style None"/>
+ <containmentRef1 xmi:id="_HmyZpuv3EeOJ757b_KHwtA" name="Filtering Style None"/>
+ <containmentRef1 xmi:id="_HmyZp-v3EeOJ757b_KHwtA" name="Bounds 0"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HmyZqOv3EeOJ757b_KHwtA" name="Basic Compartment 7019">
+ <containmentRef1 xmi:id="_HmyZqev3EeOJ757b_KHwtA" name="Title Style false"/>
+ <containmentRef1 xmi:id="_HmyZquv3EeOJ757b_KHwtA" name="Sorting Style None"/>
+ <containmentRef1 xmi:id="_HmyZq-v3EeOJ757b_KHwtA" name="Filtering Style None"/>
+ <containmentRef1 xmi:id="_HmyZrOv3EeOJ757b_KHwtA" name="Bounds 0"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HmyZrev3EeOJ757b_KHwtA" name="Bounds 772"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HmyZruv3EeOJ757b_KHwtA" name="Diagram Style "/>
+ <containmentRef1 xmi:id="_HmyZr-v3EeOJ757b_KHwtA" name="Papyrus View Style"/>
+ <containmentRef1 xmi:id="_HmyZsOv3EeOJ757b_KHwtA" name="Connector 4001 [edges delete]">
+ <containmentRef1 xmi:id="_HmyZsev3EeOJ757b_KHwtA" name="Decoration Node 6001 [children delete]">
+ <containmentRef1 xmi:id="_HmyZsuv3EeOJ757b_KHwtA" name="Location 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HmyZs-v3EeOJ757b_KHwtA" name="Decoration Node 6002 [children delete]">
+ <containmentRef1 xmi:id="_HmyZtOv3EeOJ757b_KHwtA" name="Location 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HmyZtev3EeOJ757b_KHwtA" name="Decoration Node 6003 [children delete]">
+ <containmentRef1 xmi:id="_HmyZtuv3EeOJ757b_KHwtA" name="Location 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HmyZt-v3EeOJ757b_KHwtA" name="Decoration Node 6005 [children delete]">
+ <containmentRef1 xmi:id="_HmyZuOv3EeOJ757b_KHwtA" name="Location 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HmyZuev3EeOJ757b_KHwtA" name="Decoration Node 6033 [children delete]">
+ <containmentRef1 xmi:id="_HmzAoOv3EeOJ757b_KHwtA" name="Location 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HmzAoev3EeOJ757b_KHwtA" name="Decoration Node 6034 [children delete]">
+ <containmentRef1 xmi:id="_HmzAouv3EeOJ757b_KHwtA" name="Location 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HmzAo-v3EeOJ757b_KHwtA" name="Font Style Tahoma [styles delete]"/>
+ <containmentRef1 xmi:id="_HmzApOv3EeOJ757b_KHwtA" name="&lt;Association> A_associationSource_associationOl... [element unset]"/>
+ <containmentRef1 xmi:id="_HmzApev3EeOJ757b_KHwtA" name="Shape 2008 [source unset]"/>
+ <containmentRef1 xmi:id="_HmzApuv3EeOJ757b_KHwtA" name="Shape 2008 [target unset]"/>
+ <containmentRef1 xmi:id="_HmzAp-v3EeOJ757b_KHwtA" name="Relative Bendpoints [org.eclipse.gmf.runtime.no... [bendpoints delete]"/>
+ <containmentRef1 xmi:id="_HmzAqOv3EeOJ757b_KHwtA" name="Identity Anchor (0.872,0.046875) [sourceAnchor delete]"/>
+ <containmentRef1 xmi:id="_HmzAqev3EeOJ757b_KHwtA" name="Identity Anchor (0.4405594405594406,0.09) [targetAnchor delete]"/>
+ </containmentRef1>
+ </nodes:Node>
+ <nodes:Node xmi:id="_HmzAquv3EeOJ757b_KHwtA" name="Model Style Sheets"/>
+ <nodes:Node xmi:id="_Hm5HQOv3EeOJ757b_KHwtA" name="Diagram ChangingDiagram">
+ <containmentRef1 xmi:id="_Hm5HQev3EeOJ757b_KHwtA" name="Shape 2008">
+ <containmentRef1 xmi:id="_Hm5HQuv3EeOJ757b_KHwtA" name="Decoration Node 5029"/>
+ <containmentRef1 xmi:id="_Hm5HQ-v3EeOJ757b_KHwtA" name="Basic Compartment 7017">
+ <containmentRef1 xmi:id="_Hm5HROv3EeOJ757b_KHwtA" name="Title Style false"/>
+ <containmentRef1 xmi:id="_Hm5HRev3EeOJ757b_KHwtA" name="Sorting Style None"/>
+ <containmentRef1 xmi:id="_Hm5HRuv3EeOJ757b_KHwtA" name="Filtering Style None"/>
+ <containmentRef1 xmi:id="_Hm5HR-v3EeOJ757b_KHwtA" name="Bounds 0"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_Hm5HSOv3EeOJ757b_KHwtA" name="Basic Compartment 7018">
+ <containmentRef1 xmi:id="_Hm5HSev3EeOJ757b_KHwtA" name="Title Style false"/>
+ <containmentRef1 xmi:id="_Hm5HSuv3EeOJ757b_KHwtA" name="Sorting Style None"/>
+ <containmentRef1 xmi:id="_Hm5HS-v3EeOJ757b_KHwtA" name="Filtering Style None"/>
+ <containmentRef1 xmi:id="_Hm5HTOv3EeOJ757b_KHwtA" name="Bounds 0"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_Hm5HTev3EeOJ757b_KHwtA" name="Basic Compartment 7019">
+ <containmentRef1 xmi:id="_Hm5HTuv3EeOJ757b_KHwtA" name="Title Style false"/>
+ <containmentRef1 xmi:id="_Hm5HT-v3EeOJ757b_KHwtA" name="Sorting Style None"/>
+ <containmentRef1 xmi:id="_Hm5HUOv3EeOJ757b_KHwtA" name="Filtering Style None"/>
+ <containmentRef1 xmi:id="_Hm5HUev3EeOJ757b_KHwtA" name="Bounds 0"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_Hm5HUuv3EeOJ757b_KHwtA" name="Bounds 63"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_Hm5HU-v3EeOJ757b_KHwtA" name="Diagram Style "/>
+ <containmentRef1 xmi:id="_Hm5HVOv3EeOJ757b_KHwtA" name="Papyrus View Style"/>
+ </nodes:Node>
+ <nodes:Node xmi:id="_HnHJsOv3EeOJ757b_KHwtA" name="Diagram DeletingDiagram">
+ <containmentRef1 xmi:id="_HnHJsev3EeOJ757b_KHwtA" name="Diagram Style "/>
+ <containmentRef1 xmi:id="_HnHJsuv3EeOJ757b_KHwtA" name="Papyrus View Style"/>
+ <containmentRef1 xmi:id="_HnHJs-v3EeOJ757b_KHwtA" name="Shape 2008 [children delete]">
+ <containmentRef1 xmi:id="_HnHJtOv3EeOJ757b_KHwtA" name="Decoration Node 5029 [children delete]"/>
+ <containmentRef1 xmi:id="_HnHJtev3EeOJ757b_KHwtA" name="Basic Compartment 7017 [children delete]">
+ <containmentRef1 xmi:id="_HnHJtuv3EeOJ757b_KHwtA" name="Title Style false [styles delete]"/>
+ <containmentRef1 xmi:id="_HnHJt-v3EeOJ757b_KHwtA" name="Sorting Style None [styles delete]"/>
+ <containmentRef1 xmi:id="_HnHJuOv3EeOJ757b_KHwtA" name="Filtering Style None [styles delete]"/>
+ <containmentRef1 xmi:id="_HnHJuev3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HnHJuuv3EeOJ757b_KHwtA" name="Basic Compartment 7018 [children delete]">
+ <containmentRef1 xmi:id="_HnHJu-v3EeOJ757b_KHwtA" name="Title Style false [styles delete]"/>
+ <containmentRef1 xmi:id="_HnHJvOv3EeOJ757b_KHwtA" name="Sorting Style None [styles delete]"/>
+ <containmentRef1 xmi:id="_HnHJvev3EeOJ757b_KHwtA" name="Filtering Style None [styles delete]"/>
+ <containmentRef1 xmi:id="_HnHJvuv3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HnHJv-v3EeOJ757b_KHwtA" name="Basic Compartment 7019 [children delete]">
+ <containmentRef1 xmi:id="_HnHJwOv3EeOJ757b_KHwtA" name="Title Style false [styles delete]"/>
+ <containmentRef1 xmi:id="_HnHJwev3EeOJ757b_KHwtA" name="Sorting Style None [styles delete]"/>
+ <containmentRef1 xmi:id="_HnHwwOv3EeOJ757b_KHwtA" name="Filtering Style None [styles delete]"/>
+ <containmentRef1 xmi:id="_HnHwwev3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HnHwwuv3EeOJ757b_KHwtA" name="&lt;Class> NodeToDelete [element unset]"/>
+ <containmentRef1 xmi:id="_HnHww-v3EeOJ757b_KHwtA" name="Bounds 370 [layoutConstraint delete]"/>
+ </containmentRef1>
+ </nodes:Node>
+ <nodes:Node xmi:id="_HnQToOv3EeOJ757b_KHwtA" name="Diagram AddingDiagram">
+ <containmentRef1 xmi:id="_HnQToev3EeOJ757b_KHwtA" name="Diagram Style "/>
+ <containmentRef1 xmi:id="_HnQTouv3EeOJ757b_KHwtA" name="Papyrus View Style"/>
+ <containmentRef1 xmi:id="_HnQTo-v3EeOJ757b_KHwtA" name="Shape 2008 [children add]">
+ <containmentRef1 xmi:id="_HnQTpOv3EeOJ757b_KHwtA" name="Decoration Node 5029 [children add]"/>
+ <containmentRef1 xmi:id="_HnQTpev3EeOJ757b_KHwtA" name="Basic Compartment 7017 [children add]">
+ <containmentRef1 xmi:id="_HnQ6sOv3EeOJ757b_KHwtA" name="Title Style false [styles add]"/>
+ <containmentRef1 xmi:id="_HnQ6sev3EeOJ757b_KHwtA" name="Sorting Style None [styles add]"/>
+ <containmentRef1 xmi:id="_HnQ6suv3EeOJ757b_KHwtA" name="Filtering Style None [styles add]"/>
+ <containmentRef1 xmi:id="_HnQ6s-v3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint add]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HnQ6tOv3EeOJ757b_KHwtA" name="Basic Compartment 7018 [children add]">
+ <containmentRef1 xmi:id="_HnQ6tev3EeOJ757b_KHwtA" name="Title Style false [styles add]"/>
+ <containmentRef1 xmi:id="_HnQ6tuv3EeOJ757b_KHwtA" name="Sorting Style None [styles add]"/>
+ <containmentRef1 xmi:id="_HnQ6t-v3EeOJ757b_KHwtA" name="Filtering Style None [styles add]"/>
+ <containmentRef1 xmi:id="_HnQ6uOv3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint add]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HnQ6uev3EeOJ757b_KHwtA" name="Basic Compartment 7019 [children add]">
+ <containmentRef1 xmi:id="_HnQ6uuv3EeOJ757b_KHwtA" name="Title Style false [styles add]"/>
+ <containmentRef1 xmi:id="_HnQ6u-v3EeOJ757b_KHwtA" name="Sorting Style None [styles add]"/>
+ <containmentRef1 xmi:id="_HnQ6vOv3EeOJ757b_KHwtA" name="Filtering Style None [styles add]"/>
+ <containmentRef1 xmi:id="_HnQ6vev3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint add]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HnQ6vuv3EeOJ757b_KHwtA" name="&lt;Class> NewNode [element set]"/>
+ <containmentRef1 xmi:id="_HnQ6v-v3EeOJ757b_KHwtA" name="Bounds 271 [layoutConstraint add]"/>
+ </containmentRef1>
+ </nodes:Node>
+ <nodes:Node xmi:id="_Hncg4Ov3EeOJ757b_KHwtA" name="Diagram ConflictingDiagram">
+ <containmentRef1 xmi:id="_HndH8Ov3EeOJ757b_KHwtA" name="Shape 2008">
+ <containmentRef1 xmi:id="_HndH8ev3EeOJ757b_KHwtA" name="Decoration Node 5029"/>
+ <containmentRef1 xmi:id="_HndH8uv3EeOJ757b_KHwtA" name="Basic Compartment 7017">
+ <containmentRef1 xmi:id="_HndH8-v3EeOJ757b_KHwtA" name="Title Style false"/>
+ <containmentRef1 xmi:id="_HndH9Ov3EeOJ757b_KHwtA" name="Sorting Style None"/>
+ <containmentRef1 xmi:id="_HndH9ev3EeOJ757b_KHwtA" name="Filtering Style None"/>
+ <containmentRef1 xmi:id="_HndH9uv3EeOJ757b_KHwtA" name="Bounds 0"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HndH9-v3EeOJ757b_KHwtA" name="Basic Compartment 7018">
+ <containmentRef1 xmi:id="_HndH-Ov3EeOJ757b_KHwtA" name="Title Style false"/>
+ <containmentRef1 xmi:id="_HndH-ev3EeOJ757b_KHwtA" name="Sorting Style None"/>
+ <containmentRef1 xmi:id="_HndH-uv3EeOJ757b_KHwtA" name="Filtering Style None"/>
+ <containmentRef1 xmi:id="_HndH--v3EeOJ757b_KHwtA" name="Bounds 0"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HndH_Ov3EeOJ757b_KHwtA" name="Basic Compartment 7019">
+ <containmentRef1 xmi:id="_HndH_ev3EeOJ757b_KHwtA" name="Title Style false"/>
+ <containmentRef1 xmi:id="_HndH_uv3EeOJ757b_KHwtA" name="Sorting Style None"/>
+ <containmentRef1 xmi:id="_HndH_-v3EeOJ757b_KHwtA" name="Filtering Style None"/>
+ <containmentRef1 xmi:id="_HndIAOv3EeOJ757b_KHwtA" name="Bounds 0"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HndIAev3EeOJ757b_KHwtA" name="Bounds 305"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HndIAuv3EeOJ757b_KHwtA" name="Diagram Style "/>
+ <containmentRef1 xmi:id="_HndIA-v3EeOJ757b_KHwtA" name="Papyrus View Style"/>
+ <containmentRef1 xmi:id="_HndIBOv3EeOJ757b_KHwtA" name="Shape 2008 [children delete]">
+ <containmentRef1 xmi:id="_HndIBev3EeOJ757b_KHwtA" name="Decoration Node 5029 [children delete]"/>
+ <containmentRef1 xmi:id="_HndIBuv3EeOJ757b_KHwtA" name="Basic Compartment 7017 [children delete]">
+ <containmentRef1 xmi:id="_HndIB-v3EeOJ757b_KHwtA" name="Title Style false [styles delete]"/>
+ <containmentRef1 xmi:id="_HndICOv3EeOJ757b_KHwtA" name="Sorting Style None [styles delete]"/>
+ <containmentRef1 xmi:id="_HndICev3EeOJ757b_KHwtA" name="Filtering Style None [styles delete]"/>
+ <containmentRef1 xmi:id="_HndICuv3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HndIC-v3EeOJ757b_KHwtA" name="Basic Compartment 7018 [children delete]">
+ <containmentRef1 xmi:id="_HndIDOv3EeOJ757b_KHwtA" name="Title Style false [styles delete]"/>
+ <containmentRef1 xmi:id="_HndIDev3EeOJ757b_KHwtA" name="Sorting Style None [styles delete]"/>
+ <containmentRef1 xmi:id="_HndIDuv3EeOJ757b_KHwtA" name="Filtering Style None [styles delete]"/>
+ <containmentRef1 xmi:id="_HndID-v3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HndIEOv3EeOJ757b_KHwtA" name="Basic Compartment 7019 [children delete]">
+ <containmentRef1 xmi:id="_HndIEev3EeOJ757b_KHwtA" name="Title Style false [styles delete]"/>
+ <containmentRef1 xmi:id="_HndIEuv3EeOJ757b_KHwtA" name="Sorting Style None [styles delete]"/>
+ <containmentRef1 xmi:id="_HndIE-v3EeOJ757b_KHwtA" name="Filtering Style None [styles delete]"/>
+ <containmentRef1 xmi:id="_HndIFOv3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_HndIFev3EeOJ757b_KHwtA" name="&lt;Class> ConflictingNode [element unset]"/>
+ <containmentRef1 xmi:id="_HndvAOv3EeOJ757b_KHwtA" name="Bounds 68 [layoutConstraint delete]"/>
+ </containmentRef1>
+ </nodes:Node>
+ <nodes:Node xmi:id="_HngyUOv3EeOJ757b_KHwtA" name="left.notation &lt;-> right.notation (origin.notation)"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/PapyrusDifferencesOrderTest.java b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/PapyrusDifferencesOrderTest.java
new file mode 100644
index 000000000..c0acf5262
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/PapyrusDifferencesOrderTest.java
@@ -0,0 +1,219 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo.
+ * 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.emf.compare.diagram.papyrus.tests.groups;
+
+import static com.google.common.base.Predicates.alwaysTrue;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Collections;
+import java.util.List;
+import java.util.regex.Pattern;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.compare.diagram.ide.ui.internal.structuremergeviewer.filters.GMFRefinedElementsFilter;
+import org.eclipse.emf.compare.diagram.internal.CompareDiagramPostProcessor;
+import org.eclipse.emf.compare.diagram.internal.extensions.provider.spec.ExtensionsItemProviderAdapterFactorySpec;
+import org.eclipse.emf.compare.diagram.internal.matchs.provider.spec.DiagramCompareItemProviderAdapterFactorySpec;
+import org.eclipse.emf.compare.diagram.papyrus.tests.DiagramInputData;
+import org.eclipse.emf.compare.postprocessor.BasicPostProcessorDescriptorImpl;
+import org.eclipse.emf.compare.postprocessor.IPostProcessor.Descriptor.Registry;
+import org.eclipse.emf.compare.postprocessor.PostProcessorDescriptorRegistryImpl;
+import org.eclipse.emf.compare.provider.spec.CompareItemProviderAdapterFactorySpec;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl.CascadingDifferencesFilter;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl.EmptyMatchedResourcesFilter;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl.IdenticalElementsFilter;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl.PseudoConflictsFilter;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.impl.BasicDifferenceGroupImpl;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.provider.TreeItemProviderAdapterFactorySpec;
+import org.eclipse.emf.compare.rcp.ui.structuremergeviewer.groups.IDifferenceGroup;
+import org.eclipse.emf.compare.tests.framework.AbstractInputData;
+import org.eclipse.emf.compare.uml2.internal.postprocessor.UMLPostProcessor;
+import org.eclipse.emf.compare.uml2.internal.provider.custom.UMLCompareCustomItemProviderAdapterFactory;
+import org.eclipse.emf.compare.uml2.internal.provider.decorator.UMLCompareItemProviderDecoratorAdapterFactory;
+import org.eclipse.emf.compare.uml2.rcp.ui.internal.structuremergeviewer.filters.UMLRefinedElementsFilter;
+import org.eclipse.emf.compare.uml2.rcp.ui.tests.groups.AbstractDifferenceOrderTest;
+import org.eclipse.emf.compare.uml2.rcp.ui.tests.groups.NotifierScopeProvider;
+import org.eclipse.emf.ecore.EPackage;
+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.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import org.eclipse.emf.edit.tree.TreeNode;
+import org.eclipse.gmf.runtime.emf.core.resources.GMFResourceFactory;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory;
+import org.eclipse.gmf.runtime.notation.util.NotationAdapterFactory;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.edit.providers.UMLItemProviderAdapterFactory;
+import org.eclipse.uml2.uml.internal.resource.UMLResourceFactoryImpl;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.common.collect.Lists;
+
+/**
+ * Tests the order of the differences they would be displayed in the structure merge viewer for MDT Papyrus
+ * model.
+ *
+ * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a>
+ */
+public class PapyrusDifferencesOrderTest extends AbstractDifferenceOrderTest {
+
+ /**
+ * Data holding expecting result.
+ */
+ private ExpectedResultData expectedResultData;
+
+ @Before
+ @Override
+ public void before() throws IOException {
+ super.before();
+ getFilter().removeFilter(new CascadingDifferencesFilter());
+ getFilter().removeFilter(new PseudoConflictsFilter());
+ getFilter().removeFilter(new EmptyMatchedResourcesFilter());
+ // Adds this filter for clarity
+ getFilter().addFilter(new IdenticalElementsFilter());
+ getFilter().addFilter(new UMLRefinedElementsFilter());
+ expectedResultData = new ExpectedResultData();
+ }
+
+ @Override
+ protected Registry<?> getPostProcessorRegistry() {
+ PostProcessorDescriptorRegistryImpl<Object> postProcessorRegistry = new PostProcessorDescriptorRegistryImpl<Object>();
+ //Adds UML post processor
+ BasicPostProcessorDescriptorImpl descriptor = new BasicPostProcessorDescriptorImpl(
+ new UMLPostProcessor(), Pattern.compile("http://www.eclipse.org/uml2/\\d.0.0/UML"), null); //$NON-NLS-1$
+ postProcessorRegistry.put(UMLPostProcessor.class.getName(), descriptor);
+ //Adds Diagram post processor
+ BasicPostProcessorDescriptorImpl descriptor2 = new BasicPostProcessorDescriptorImpl(
+ new CompareDiagramPostProcessor(), Pattern
+ .compile("http://www.eclipse.org/gmf/runtime/\\d.\\d.\\d/notation"), null); //$NON-NLS-1$
+ postProcessorRegistry.put(CompareDiagramPostProcessor.class.getName(), descriptor2);
+ return postProcessorRegistry;
+ }
+
+ @Override
+ protected NotifierScopeProvider getInput() {
+ return new InputData();
+ }
+
+ @Override
+ protected List<AdapterFactory> getAdaptersFactory() {
+ return Lists.<AdapterFactory> newArrayList(new CompareItemProviderAdapterFactorySpec(),
+ new TreeItemProviderAdapterFactorySpec(), new UMLCompareCustomItemProviderAdapterFactory(),
+ new UMLItemProviderAdapterFactory(), new UMLCompareItemProviderDecoratorAdapterFactory(),
+ new ReflectiveItemProviderAdapterFactory(), new NotationAdapterFactory(),
+ new ExtensionsItemProviderAdapterFactorySpec(),
+ new DiagramCompareItemProviderAdapterFactorySpec(), new NotationItemProviderAdapterFactory());
+ }
+
+ @Test
+ public void testPapyrusDiffWithoutDiagRefineFilter() throws IOException {
+ GMFRefinedElementsFilter diagramFilter = new GMFRefinedElementsFilter();
+ getFilter().removeFilter(diagramFilter);
+
+ IDifferenceGroup group = new BasicDifferenceGroupImpl(getComparison(), alwaysTrue(),
+ getCrossReferenceAdapter());
+ List<? extends TreeNode> roots = group.getChildren();
+
+ // Uncomment the following lines to reserialize the expected model
+ // TestWriterHelper writerHelper = createTestHelper();
+ // writerHelper.createExpectedModel(PATH_TO_MODEL_FILE+"/expectedResult_DiagRefineOff.nodes", roots);
+
+ compareTree(expectedResultData.getExpectedReseultWithFilterOff(), roots);
+ }
+
+ @Test
+ public void testPapyrusDiffWithDiagRefineFilter() throws IOException {
+ GMFRefinedElementsFilter diagramFilter = new GMFRefinedElementsFilter();
+ getFilter().addFilter(diagramFilter);
+
+ IDifferenceGroup group = new BasicDifferenceGroupImpl(getComparison(), alwaysTrue(),
+ getCrossReferenceAdapter());
+ List<? extends TreeNode> roots = group.getChildren();
+
+ // Uncomment the following lines to reserialize the expected model
+ // TestWriterHelper writerHelper = createTestHelper();
+ // writerHelper.createExpectedModel(PATH_TO_MODEL_FILE+"/expectedResult_DiagRefineOn.nodes", roots);
+
+ compareTree(expectedResultData.getExpectedReseultWithFilterOn(), roots);
+ }
+
+ /**
+ * Expected result data.
+ *
+ * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a>
+ */
+ private static final class ExpectedResultData extends AbstractInputData {
+
+ public Resource getExpectedReseultWithFilterOn() throws IOException {
+ return loadFromClassLoader("data/a1/expectedResult_DiagRefineOn.nodes");
+ }
+
+ public Resource getExpectedReseultWithFilterOff() throws IOException {
+ return loadFromClassLoader("data/a1/expectedResult_DiagRefineOff.nodes");
+ }
+ }
+
+ /**
+ * Input data for this test.
+ *
+ * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a>
+ */
+ private static final class InputData extends DiagramInputData implements NotifierScopeProvider {
+
+ public ResourceSet getLeft() throws IOException {
+ return loadFromClassLoader("data/a1/left.notation").getResourceSet();
+ }
+
+ public ResourceSet getRight() throws IOException {
+ return loadFromClassLoader("data/a1/right.notation").getResourceSet();
+ }
+
+ public ResourceSet getOrigin() throws IOException {
+ return loadFromClassLoader("data/a1/origin.notation").getResourceSet();
+ }
+
+ @Override
+ protected Resource loadFromClassLoader(String string) throws IOException {
+ final URL fileURL = getClass().getResource(string);
+ final InputStream str = fileURL.openStream();
+ final URI uri = URI.createURI(fileURL.toString());
+
+ ResourceSet resourceSet = new ResourceSetImpl();
+ getSets().add(resourceSet);
+
+ if (!EMFPlugin.IS_RESOURCES_BUNDLE_AVAILABLE) {
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("uml",
+ new UMLResourceFactoryImpl());
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("notation",
+ new GMFResourceFactory());
+ EPackage.Registry.INSTANCE.put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
+ EPackage.Registry.INSTANCE.put(NotationPackage.eNS_URI, NotationPackage.eINSTANCE);
+ }
+
+ Resource resource = resourceSet.createResource(uri);
+
+ resource.load(str, Collections.emptyMap());
+ str.close();
+
+ EcoreUtil.resolveAll(resourceSet);
+
+ return resource;
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/expectedResult_DiagRefineOff.nodes b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/expectedResult_DiagRefineOff.nodes
new file mode 100644
index 000000000..6de28e133
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/expectedResult_DiagRefineOff.nodes
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:nodes="http://www.eclipse.org/emf/compare/tests/nodes">
+ <nodes:Node xmi:id="_1uWuQOyMEeO1JodpgTFWvw" name="Diagram MovingNodeDiagram &lt;Model> model">
+ <containmentRef1 xmi:id="_1ueDAOyMEeO1JodpgTFWvw" name="Shape &lt;Package> NewHoldingPackage">
+ <containmentRef1 xmi:id="_1ueDAeyMEeO1JodpgTFWvw" name="DecorationNode &lt;Package> NewHoldingPackage">
+ <containmentRef1 xmi:id="_1ueDAuyMEeO1JodpgTFWvw" name="Shape &lt;Class> MovingNode [children move]"/>
+ </containmentRef1>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1ueDA-yMEeO1JodpgTFWvw" name="Connector &lt;Association> A_associationSource_ass... [edges delete]">
+ <containmentRef1 xmi:id="_1ueDBOyMEeO1JodpgTFWvw" name="DecorationNode &lt;Association> A_associationSourc... [children delete]">
+ <containmentRef1 xmi:id="_1ueDBeyMEeO1JodpgTFWvw" name="Location 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1ueDBuyMEeO1JodpgTFWvw" name="DecorationNode &lt;Association> A_associationSourc... [children delete]">
+ <containmentRef1 xmi:id="_1ueDB-yMEeO1JodpgTFWvw" name="Location 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1ueDCOyMEeO1JodpgTFWvw" name="DecorationNode &lt;Association> A_associationSourc... [children delete]">
+ <containmentRef1 xmi:id="_1ueDCeyMEeO1JodpgTFWvw" name="Location 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1ueDCuyMEeO1JodpgTFWvw" name="DecorationNode &lt;Association> A_associationSourc... [children delete]">
+ <containmentRef1 xmi:id="_1ueDC-yMEeO1JodpgTFWvw" name="Location 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1ueqEOyMEeO1JodpgTFWvw" name="DecorationNode &lt;Association> A_associationSourc... [children delete]">
+ <containmentRef1 xmi:id="_1ueqEeyMEeO1JodpgTFWvw" name="Location 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1ueqEuyMEeO1JodpgTFWvw" name="DecorationNode &lt;Association> A_associationSourc... [children delete]">
+ <containmentRef1 xmi:id="_1ueqE-yMEeO1JodpgTFWvw" name="Location 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1ueqFOyMEeO1JodpgTFWvw" name="FontStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1ueqFeyMEeO1JodpgTFWvw" name="&lt;Association> A_associationSource_associationOl... [element unset]"/>
+ <containmentRef1 xmi:id="_1ueqFuyMEeO1JodpgTFWvw" name="Shape &lt;Class> AssociationSource [source unset]"/>
+ <containmentRef1 xmi:id="_1ueqF-yMEeO1JodpgTFWvw" name="Shape &lt;Class> AssociationOldTarget [target unset]"/>
+ <containmentRef1 xmi:id="_1ueqGOyMEeO1JodpgTFWvw" name="Relative Bendpoints [org.eclipse.gmf.runtime.no... [bendpoints delete]"/>
+ <containmentRef1 xmi:id="_1ueqGeyMEeO1JodpgTFWvw" name="Identity Anchor (0.872,0.046875) [sourceAnchor delete]"/>
+ <containmentRef1 xmi:id="_1ueqGuyMEeO1JodpgTFWvw" name="Identity Anchor (0.4405594405594406,0.09) [targetAnchor delete]"/>
+ </containmentRef1>
+ </nodes:Node>
+ <nodes:Node xmi:id="_1ukJoOyMEeO1JodpgTFWvw" name="Diagram DeletingDiagram &lt;Model> model">
+ <containmentRef1 xmi:id="_1ukJoeyMEeO1JodpgTFWvw" name="Shape &lt;Class> NodeToDelete [children delete]">
+ <containmentRef1 xmi:id="_1ukJouyMEeO1JodpgTFWvw" name="DecorationNode &lt;Class> NodeToDelete [children delete]"/>
+ <containmentRef1 xmi:id="_1ukJo-yMEeO1JodpgTFWvw" name="BasicCompartment &lt;Class> NodeToDelete [children delete]">
+ <containmentRef1 xmi:id="_1ukJpOyMEeO1JodpgTFWvw" name="TitleStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1ukJpeyMEeO1JodpgTFWvw" name="SortingStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1ukJpuyMEeO1JodpgTFWvw" name="FilteringStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1ukwsOyMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1ukwseyMEeO1JodpgTFWvw" name="BasicCompartment &lt;Class> NodeToDelete [children delete]">
+ <containmentRef1 xmi:id="_1ukwsuyMEeO1JodpgTFWvw" name="TitleStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1ukws-yMEeO1JodpgTFWvw" name="SortingStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1ukwtOyMEeO1JodpgTFWvw" name="FilteringStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1ukwteyMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1ukwtuyMEeO1JodpgTFWvw" name="BasicCompartment &lt;Class> NodeToDelete [children delete]">
+ <containmentRef1 xmi:id="_1ukwt-yMEeO1JodpgTFWvw" name="TitleStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1ukwuOyMEeO1JodpgTFWvw" name="SortingStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1ukwueyMEeO1JodpgTFWvw" name="FilteringStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1ukwuuyMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1ukwu-yMEeO1JodpgTFWvw" name="&lt;Class> NodeToDelete [element unset]"/>
+ <containmentRef1 xmi:id="_1ukwvOyMEeO1JodpgTFWvw" name="Bounds 370 [layoutConstraint delete]"/>
+ </containmentRef1>
+ </nodes:Node>
+ <nodes:Node xmi:id="_1uqQQOyMEeO1JodpgTFWvw" name="Diagram AddingDiagram &lt;Model> model">
+ <containmentRef1 xmi:id="_1uqQQeyMEeO1JodpgTFWvw" name="Shape &lt;Class> NewNode [children add]">
+ <containmentRef1 xmi:id="_1uqQQuyMEeO1JodpgTFWvw" name="DecorationNode &lt;Class> NewNode [children add]"/>
+ <containmentRef1 xmi:id="_1uqQQ-yMEeO1JodpgTFWvw" name="BasicCompartment &lt;Class> NewNode [children add]">
+ <containmentRef1 xmi:id="_1uqQROyMEeO1JodpgTFWvw" name="TitleStyle [styles add]"/>
+ <containmentRef1 xmi:id="_1uqQReyMEeO1JodpgTFWvw" name="SortingStyle [styles add]"/>
+ <containmentRef1 xmi:id="_1uqQRuyMEeO1JodpgTFWvw" name="FilteringStyle [styles add]"/>
+ <containmentRef1 xmi:id="_1uqQR-yMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint add]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1uqQSOyMEeO1JodpgTFWvw" name="BasicCompartment &lt;Class> NewNode [children add]">
+ <containmentRef1 xmi:id="_1uqQSeyMEeO1JodpgTFWvw" name="TitleStyle [styles add]"/>
+ <containmentRef1 xmi:id="_1uqQSuyMEeO1JodpgTFWvw" name="SortingStyle [styles add]"/>
+ <containmentRef1 xmi:id="_1uqQS-yMEeO1JodpgTFWvw" name="FilteringStyle [styles add]"/>
+ <containmentRef1 xmi:id="_1uqQTOyMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint add]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1uqQTeyMEeO1JodpgTFWvw" name="BasicCompartment &lt;Class> NewNode [children add]">
+ <containmentRef1 xmi:id="_1uqQTuyMEeO1JodpgTFWvw" name="TitleStyle [styles add]"/>
+ <containmentRef1 xmi:id="_1uqQT-yMEeO1JodpgTFWvw" name="SortingStyle [styles add]"/>
+ <containmentRef1 xmi:id="_1uqQUOyMEeO1JodpgTFWvw" name="FilteringStyle [styles add]"/>
+ <containmentRef1 xmi:id="_1uqQUeyMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint add]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1uqQUuyMEeO1JodpgTFWvw" name="&lt;Class> NewNode [element set]"/>
+ <containmentRef1 xmi:id="_1uqQU-yMEeO1JodpgTFWvw" name="Bounds 271 [layoutConstraint add]"/>
+ </containmentRef1>
+ </nodes:Node>
+ <nodes:Node xmi:id="_1uvIwOyMEeO1JodpgTFWvw" name="Diagram ConflictingDiagram &lt;Model> model">
+ <containmentRef1 xmi:id="_1uvIweyMEeO1JodpgTFWvw" name="Shape &lt;Class> ConflictingNode [children delete]">
+ <containmentRef1 xmi:id="_1uvIwuyMEeO1JodpgTFWvw" name="DecorationNode &lt;Class> ConflictingNode [children delete]"/>
+ <containmentRef1 xmi:id="_1uvIw-yMEeO1JodpgTFWvw" name="BasicCompartment &lt;Class> ConflictingNode [children delete]">
+ <containmentRef1 xmi:id="_1uvIxOyMEeO1JodpgTFWvw" name="TitleStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1uvIxeyMEeO1JodpgTFWvw" name="SortingStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1uvIxuyMEeO1JodpgTFWvw" name="FilteringStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1uvIx-yMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1uvIyOyMEeO1JodpgTFWvw" name="BasicCompartment &lt;Class> ConflictingNode [children delete]">
+ <containmentRef1 xmi:id="_1uvIyeyMEeO1JodpgTFWvw" name="TitleStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1uvIyuyMEeO1JodpgTFWvw" name="SortingStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1uvIy-yMEeO1JodpgTFWvw" name="FilteringStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1uvIzOyMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1uvIzeyMEeO1JodpgTFWvw" name="BasicCompartment &lt;Class> ConflictingNode [children delete]">
+ <containmentRef1 xmi:id="_1uvIzuyMEeO1JodpgTFWvw" name="TitleStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1uvIz-yMEeO1JodpgTFWvw" name="SortingStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1uvI0OyMEeO1JodpgTFWvw" name="FilteringStyle [styles delete]"/>
+ <containmentRef1 xmi:id="_1uvI0eyMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint delete]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1uvI0uyMEeO1JodpgTFWvw" name="&lt;Class> ConflictingNode [element unset]"/>
+ <containmentRef1 xmi:id="_1uvI0-yMEeO1JodpgTFWvw" name="Bounds 68 [layoutConstraint delete]"/>
+ </containmentRef1>
+ </nodes:Node>
+ <nodes:Node xmi:id="_1u79EOyMEeO1JodpgTFWvw" name="&lt;Model> model">
+ <containmentRef1 xmi:id="_1u79EeyMEeO1JodpgTFWvw" name="&lt;Package> NewHoldingPackage">
+ <containmentRef1 xmi:id="_1u79EuyMEeO1JodpgTFWvw" name="&lt;Class> MovingNode [packagedElement move]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1u79E-yMEeO1JodpgTFWvw" name="&lt;Class> ChangingNameNode_NewName">
+ <containmentRef1 xmi:id="_1u79FOyMEeO1JodpgTFWvw" name="ChangingNameNode_NewName [name changed]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1u8kIOyMEeO1JodpgTFWvw" name="&lt;Class> PseudoConflictingNode_NewName">
+ <containmentRef1 xmi:id="_1u8kIeyMEeO1JodpgTFWvw" name="PseudoConflictingNode [name changed]"/>
+ <containmentRef1 xmi:id="_1u8kIuyMEeO1JodpgTFWvw" name="PseudoConflictingNode [name changed]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1u8kI-yMEeO1JodpgTFWvw" name="&lt;Class> NewNode [packagedElement add]"/>
+ <containmentRef1 xmi:id="_1u8kJOyMEeO1JodpgTFWvw" name="&lt;Association> A_associationSource_associationOl... [packagedElement delete]"/>
+ <containmentRef1 xmi:id="_1u8kJeyMEeO1JodpgTFWvw" name="&lt;Class> NodeToDelete [packagedElement delete]"/>
+ <containmentRef1 xmi:id="_1u8kJuyMEeO1JodpgTFWvw" name="&lt;Class> ConflictingNode [packagedElement delete]">
+ <containmentRef1 xmi:id="_1u8kJ-yMEeO1JodpgTFWvw" name="ConflictingNode_ConflictingName [name set]"/>
+ </containmentRef1>
+ </nodes:Node>
+ <nodes:Node xmi:id="_1u_AYOyMEeO1JodpgTFWvw" name="left.notation &lt;-> right.notation (origin.notation)"/>
+ <nodes:Node xmi:id="_1u_AYeyMEeO1JodpgTFWvw" name="left.uml &lt;-> right.uml (origin.uml)"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/expectedResult_DiagRefineOn.nodes b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/expectedResult_DiagRefineOn.nodes
new file mode 100644
index 000000000..7155d2f7b
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/expectedResult_DiagRefineOn.nodes
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:nodes="http://www.eclipse.org/emf/compare/tests/nodes">
+ <nodes:Node xmi:id="_150-cOyMEeO1JodpgTFWvw" name="Diagram MovingNodeDiagram &lt;Model> model">
+ <containmentRef1 xmi:id="_150-ceyMEeO1JodpgTFWvw" name="Shape &lt;Package> NewHoldingPackage">
+ <containmentRef1 xmi:id="_150-cuyMEeO1JodpgTFWvw" name="DecorationNode &lt;Package> NewHoldingPackage">
+ <containmentRef1 xmi:id="_151lgOyMEeO1JodpgTFWvw" name="Shape &lt;Class> MovingNode [children move]"/>
+ </containmentRef1>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_151lgeyMEeO1JodpgTFWvw" name="Connector &lt;Association> A_associationSource_ass... [edges delete]"/>
+ </nodes:Node>
+ <nodes:Node xmi:id="_152zoOyMEeO1JodpgTFWvw" name="Diagram DeletingDiagram &lt;Model> model">
+ <containmentRef1 xmi:id="_152zoeyMEeO1JodpgTFWvw" name="Shape &lt;Class> NodeToDelete [children delete]"/>
+ </nodes:Node>
+ <nodes:Node xmi:id="_154o0OyMEeO1JodpgTFWvw" name="Diagram AddingDiagram &lt;Model> model">
+ <containmentRef1 xmi:id="_154o0eyMEeO1JodpgTFWvw" name="Shape &lt;Class> NewNode [children add]"/>
+ </nodes:Node>
+ <nodes:Node xmi:id="_15528OyMEeO1JodpgTFWvw" name="Diagram ConflictingDiagram &lt;Model> model">
+ <containmentRef1 xmi:id="_15528eyMEeO1JodpgTFWvw" name="Shape &lt;Class> ConflictingNode [children delete]"/>
+ </nodes:Node>
+ <nodes:Node xmi:id="_1586QOyMEeO1JodpgTFWvw" name="&lt;Model> model">
+ <containmentRef1 xmi:id="_1586QeyMEeO1JodpgTFWvw" name="&lt;Package> NewHoldingPackage">
+ <containmentRef1 xmi:id="_1586QuyMEeO1JodpgTFWvw" name="&lt;Class> MovingNode [packagedElement move]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1586Q-yMEeO1JodpgTFWvw" name="&lt;Class> ChangingNameNode_NewName">
+ <containmentRef1 xmi:id="_1586ROyMEeO1JodpgTFWvw" name="ChangingNameNode_NewName [name changed]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1586ReyMEeO1JodpgTFWvw" name="&lt;Class> PseudoConflictingNode_NewName">
+ <containmentRef1 xmi:id="_1586RuyMEeO1JodpgTFWvw" name="PseudoConflictingNode [name changed]"/>
+ <containmentRef1 xmi:id="_1586R-yMEeO1JodpgTFWvw" name="PseudoConflictingNode [name changed]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_1586SOyMEeO1JodpgTFWvw" name="&lt;Class> NewNode [packagedElement add]"/>
+ <containmentRef1 xmi:id="_1586SeyMEeO1JodpgTFWvw" name="&lt;Association> A_associationSource_associationOl... [packagedElement delete]"/>
+ <containmentRef1 xmi:id="_1586SuyMEeO1JodpgTFWvw" name="&lt;Class> NodeToDelete [packagedElement delete]"/>
+ <containmentRef1 xmi:id="_1586S-yMEeO1JodpgTFWvw" name="&lt;Class> ConflictingNode [packagedElement delete]">
+ <containmentRef1 xmi:id="_1586TOyMEeO1JodpgTFWvw" name="ConflictingNode_ConflictingName [name set]"/>
+ </containmentRef1>
+ </nodes:Node>
+ <nodes:Node xmi:id="_1586TeyMEeO1JodpgTFWvw" name="left.notation &lt;-> right.notation (origin.notation)"/>
+ <nodes:Node xmi:id="_159hUOyMEeO1JodpgTFWvw" name="left.uml &lt;-> right.uml (origin.uml)"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.di
new file mode 100644
index 000000000..bf9abab34
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.notation
new file mode 100644
index 000000000..c47d160b5
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.notation
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_EgGyQOWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="MovingNodeDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_LTZrAOWxEeOBKf64hQ5SMA" type="2007">
+ <children xmi:type="notation:DecorationNode" xmi:id="_LTkDEOWxEeOBKf64hQ5SMA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LTmfUOWxEeOBKf64hQ5SMA" type="7016">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LTmfUeWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LTmfUuWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Package" href="left.uml#_LRkfAOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LTZrAeWxEeOBKf64hQ5SMA" x="28" y="41" width="226" height="220"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_P3jLoOWxEeOBKf64hQ5SMA" type="2007">
+ <children xmi:type="notation:DecorationNode" xmi:id="_P3jysOWxEeOBKf64hQ5SMA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_P3kZwOWxEeOBKf64hQ5SMA" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_MzOfAOWxEeOBKf64hQ5SMA" type="3010">
+ <children xmi:type="notation:DecorationNode" xmi:id="_MzPtIOWxEeOBKf64hQ5SMA" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_MzUloOWxEeOBKf64hQ5SMA" type="7011">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_MzUloeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_MzUlouWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_MzUlo-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzUlpOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_MzVMsOWxEeOBKf64hQ5SMA" type="7012">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_MzVMseWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_MzVMsuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_MzVMs-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzVMtOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_MzVzwOWxEeOBKf64hQ5SMA" type="7013">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_MzVzweWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_MzVzwuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_MzVzw-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzVzxOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_MyvW0OWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzOfAeWxEeOBKf64hQ5SMA" x="20" y="58" width="142" height="101"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_P3kZweWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P3kZwuWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Package" href="left.uml#_P3e6MOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P3jLoeWxEeOBKf64hQ5SMA" x="289" y="40" width="215" height="221"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ngGKQOWxEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ngHYYOWxEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ngHYYeWxEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ngHYYuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ngHYY-WxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ngHYZOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngHYZeWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ngImgOWxEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ngImgeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ngImguWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ngImg-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngImhOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ngJNkOWxEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ngJNkeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ngJNkuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ngJNk-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngJNlOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_ngB40OWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngGKQeWxEeOBKf64hQ5SMA" x="537" y="127" width="125" height="128"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_pOFWEOWxEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_pOGkMOWxEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_pOHLQOWxEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_pOHLQeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_pOHLQuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_pOHLQ-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOHLROWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_pOHyUOWxEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_pOHyUeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_pOHyUuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_pOIZYOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOIZYeWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_pOJAcOWxEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_pOJAceWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_pOJAcuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_pOJAc-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOJAdOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_pOBrsOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOFWEeWxEeOBKf64hQ5SMA" x="772" y="44"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rJ5igOWxEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_rJ6JkOWxEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rJ6woOWxEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rJ6woeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rJ6wouWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ6wo-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ6wpOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rJ7XsOWxEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rJ7XseWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rJ7XsuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ7Xs-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ7XtOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rJ8l0OWxEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rJ8l0eWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rJ8l0uWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ8l0-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ8l1OWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_rJ1REOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ5igeWxEeOBKf64hQ5SMA" x="772" y="161" width="146" height="126"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_EgGyQeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_EgGyQuWxEeOBKf64hQ5SMA">
+ <owner xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_tJO9AOWxEeOBKf64hQ5SMA" type="4001" source="_ngGKQOWxEeOBKf64hQ5SMA" target="_pOFWEOWxEeOBKf64hQ5SMA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tJQyMOWxEeOBKf64hQ5SMA" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tJQyMeWxEeOBKf64hQ5SMA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tJSAUOWxEeOBKf64hQ5SMA" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tJSAUeWxEeOBKf64hQ5SMA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tJSnYOWxEeOBKf64hQ5SMA" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tJTOcOWxEeOBKf64hQ5SMA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tJT1gOWxEeOBKf64hQ5SMA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tJUckOWxEeOBKf64hQ5SMA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tJVDoOWxEeOBKf64hQ5SMA" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tJVqsOWxEeOBKf64hQ5SMA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tJWRwOWxEeOBKf64hQ5SMA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tJWRweWxEeOBKf64hQ5SMA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_tJO9AeWxEeOBKf64hQ5SMA"/>
+ <element xmi:type="uml:Association" href="left.uml#_tI4-wOWxEeOBKf64hQ5SMA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tJO9AuWxEeOBKf64hQ5SMA" points="[14, -6, -175, 74]$[187, -89, -2, -9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tL0W8OWxEeOBKf64hQ5SMA" id="(0.872,0.046875)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tL0-AOWxEeOBKf64hQ5SMA" id="(0.4405594405594406,0.09)"/>
+ </edges>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_JKTQgOWxEeOBKf64hQ5SMA"/>
+ <notation:Diagram xmi:id="_5on14OWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="ChangingDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_6K6qoOWxEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_6K7RsOWxEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6K74wOWxEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6K74weWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6K74wuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6K74w-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K74xOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6K8f0OWxEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6K8f0eWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6K8f0uWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6K8f0-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K8f1OWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6K8f1eWxEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6K8f1uWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6K8f1-WxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6K8f2OWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K8f2eWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_6K2ZMOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K6qoeWxEeOBKf64hQ5SMA" x="63" y="64" width="344" height="236"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_5on14eWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_5on14uWxEeOBKf64hQ5SMA">
+ <owner xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_-8jNoOWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="DeletingDiagram" measurementUnit="Pixel">
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_-8jNoeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_-8jNouWxEeOBKf64hQ5SMA">
+ <owner xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_E-ErMOWyEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="AddingDiagram" measurementUnit="Pixel">
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_E-ErMeWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_E-ErMuWyEeOBKf64hQ5SMA">
+ <owner xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_KWxOMOWyEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="ConflictingDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_NlLq8OWyEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NlMSAOWyEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NlMSAeWyEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NlMSAuWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NlMSA-WyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NlMSBOWyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlMSBeWyEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NlM5EOWyEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NlM5EeWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NlM5EuWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NlM5E-WyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlM5FOWyEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NlM5FeWyEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NlM5FuWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NlM5F-WyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NlM5GOWyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlM5GeWyEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_NlHZgOWyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlLq8eWyEeOBKf64hQ5SMA" x="305" y="92" width="162" height="180"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_KWxOMeWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_KWxOMuWyEeOBKf64hQ5SMA">
+ <owner xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.uml
new file mode 100644
index 000000000..72a57fd01
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.uml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_EbOSQOWxEeOBKf64hQ5SMA" name="model">
+ <packagedElement xmi:type="uml:Package" xmi:id="_LRkfAOWxEeOBKf64hQ5SMA" name="OldHoldingPackage"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_P3e6MOWxEeOBKf64hQ5SMA" name="NewHoldingPackage">
+ <packagedElement xmi:type="uml:Class" xmi:id="_MyvW0OWxEeOBKf64hQ5SMA" name="MovingNode"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ngB40OWxEeOBKf64hQ5SMA" name="AssociationSource">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_tI17cOWxEeOBKf64hQ5SMA" name="associationOldTarget" type="_pOBrsOWxEeOBKf64hQ5SMA" association="_tI4-wOWxEeOBKf64hQ5SMA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tI17ceWxEeOBKf64hQ5SMA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tI17cuWxEeOBKf64hQ5SMA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_pOBrsOWxEeOBKf64hQ5SMA" name="AssociationOldTarget"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rJ1REOWxEeOBKf64hQ5SMA" name="AssociationNewTarget"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_tI4-wOWxEeOBKf64hQ5SMA" name="A_associationSource_associationOldTarget_1" memberEnd="_tI4-weWxEeOBKf64hQ5SMA _tI17cOWxEeOBKf64hQ5SMA" navigableOwnedEnd="_tI4-weWxEeOBKf64hQ5SMA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_tI4-weWxEeOBKf64hQ5SMA" name="associationSource" type="_ngB40OWxEeOBKf64hQ5SMA" association="_tI4-wOWxEeOBKf64hQ5SMA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tI4-wuWxEeOBKf64hQ5SMA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tI4-w-WxEeOBKf64hQ5SMA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_6K2ZMOWxEeOBKf64hQ5SMA" name="ChangingNameNode_NewName"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_NlHZgOWyEeOBKf64hQ5SMA" name="PseudoConflictingNode_NewName"/>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.di
new file mode 100644
index 000000000..bf9abab34
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.notation
new file mode 100644
index 000000000..6f1c610c5
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.notation
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_EgGyQOWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="MovingNodeDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_LTZrAOWxEeOBKf64hQ5SMA" type="2007">
+ <children xmi:type="notation:DecorationNode" xmi:id="_LTkDEOWxEeOBKf64hQ5SMA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LTmfUOWxEeOBKf64hQ5SMA" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_MzOfAOWxEeOBKf64hQ5SMA" type="3010">
+ <children xmi:type="notation:DecorationNode" xmi:id="_MzPtIOWxEeOBKf64hQ5SMA" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_MzUloOWxEeOBKf64hQ5SMA" type="7011">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_MzUloeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_MzUlouWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_MzUlo-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzUlpOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_MzVMsOWxEeOBKf64hQ5SMA" type="7012">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_MzVMseWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_MzVMsuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_MzVMs-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzVMtOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_MzVzwOWxEeOBKf64hQ5SMA" type="7013">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_MzVzweWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_MzVzwuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_MzVzw-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzVzxOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="origin.uml#_MyvW0OWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzOfAeWxEeOBKf64hQ5SMA" x="16" y="22" width="142" height="101"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LTmfUeWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LTmfUuWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Package" href="origin.uml#_LRkfAOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LTZrAeWxEeOBKf64hQ5SMA" x="28" y="41" width="226" height="220"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_P3jLoOWxEeOBKf64hQ5SMA" type="2007">
+ <children xmi:type="notation:DecorationNode" xmi:id="_P3jysOWxEeOBKf64hQ5SMA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_P3kZwOWxEeOBKf64hQ5SMA" type="7016">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_P3kZweWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P3kZwuWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Package" href="origin.uml#_P3e6MOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P3jLoeWxEeOBKf64hQ5SMA" x="289" y="40" width="215" height="221"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ngGKQOWxEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ngHYYOWxEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ngHYYeWxEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ngHYYuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ngHYY-WxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ngHYZOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngHYZeWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ngImgOWxEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ngImgeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ngImguWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ngImg-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngImhOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ngJNkOWxEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ngJNkeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ngJNkuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ngJNk-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngJNlOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="origin.uml#_ngB40OWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngGKQeWxEeOBKf64hQ5SMA" x="537" y="127" width="125" height="128"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_pOFWEOWxEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_pOGkMOWxEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_pOHLQOWxEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_pOHLQeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_pOHLQuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_pOHLQ-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOHLROWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_pOHyUOWxEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_pOHyUeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_pOHyUuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_pOIZYOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOIZYeWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_pOJAcOWxEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_pOJAceWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_pOJAcuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_pOJAc-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOJAdOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="origin.uml#_pOBrsOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOFWEeWxEeOBKf64hQ5SMA" x="772" y="44"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rJ5igOWxEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_rJ6JkOWxEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rJ6woOWxEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rJ6woeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rJ6wouWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ6wo-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ6wpOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rJ7XsOWxEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rJ7XseWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rJ7XsuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ7Xs-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ7XtOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rJ8l0OWxEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rJ8l0eWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rJ8l0uWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ8l0-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ8l1OWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="origin.uml#_rJ1REOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ5igeWxEeOBKf64hQ5SMA" x="772" y="161" width="146" height="126"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_EgGyQeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_EgGyQuWxEeOBKf64hQ5SMA">
+ <owner xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_tJO9AOWxEeOBKf64hQ5SMA" type="4001" source="_ngGKQOWxEeOBKf64hQ5SMA" target="_pOFWEOWxEeOBKf64hQ5SMA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tJQyMOWxEeOBKf64hQ5SMA" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tJQyMeWxEeOBKf64hQ5SMA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tJSAUOWxEeOBKf64hQ5SMA" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tJSAUeWxEeOBKf64hQ5SMA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tJSnYOWxEeOBKf64hQ5SMA" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tJTOcOWxEeOBKf64hQ5SMA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tJT1gOWxEeOBKf64hQ5SMA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tJUckOWxEeOBKf64hQ5SMA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tJVDoOWxEeOBKf64hQ5SMA" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tJVqsOWxEeOBKf64hQ5SMA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tJWRwOWxEeOBKf64hQ5SMA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tJWRweWxEeOBKf64hQ5SMA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_tJO9AeWxEeOBKf64hQ5SMA"/>
+ <element xmi:type="uml:Association" href="origin.uml#_tI4-wOWxEeOBKf64hQ5SMA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tJO9AuWxEeOBKf64hQ5SMA" points="[14, -6, -175, 74]$[187, -89, -2, -9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tL0W8OWxEeOBKf64hQ5SMA" id="(0.872,0.046875)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tL0-AOWxEeOBKf64hQ5SMA" id="(0.4405594405594406,0.09)"/>
+ </edges>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_JKTQgOWxEeOBKf64hQ5SMA"/>
+ <notation:Diagram xmi:id="_5on14OWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="ChangingDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_6K6qoOWxEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_6K7RsOWxEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6K74wOWxEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6K74weWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6K74wuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6K74w-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K74xOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6K8f0OWxEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6K8f0eWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6K8f0uWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6K8f0-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K8f1OWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6K8f1eWxEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6K8f1uWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6K8f1-WxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6K8f2OWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K8f2eWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="origin.uml#_6K2ZMOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K6qoeWxEeOBKf64hQ5SMA" x="63" y="64" width="344" height="236"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_5on14eWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_5on14uWxEeOBKf64hQ5SMA">
+ <owner xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_-8jNoOWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="DeletingDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_AQhW8OWyEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_AQh-AOWyEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AQilEOWyEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AQilEeWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AQilEuWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AQilE-WyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AQilFOWyEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AQilFeWyEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AQilFuWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AQilF-WyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AQilGOWyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AQilGeWyEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AQjMIOWyEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AQjMIeWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AQjMIuWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AQjMI-WyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AQjMJOWyEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="origin.uml#_AQdFgOWyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AQhW8eWyEeOBKf64hQ5SMA" x="370" y="94" width="229" height="204"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_-8jNoeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_-8jNouWxEeOBKf64hQ5SMA">
+ <owner xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_E-ErMOWyEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="AddingDiagram" measurementUnit="Pixel">
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_E-ErMeWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_E-ErMuWyEeOBKf64hQ5SMA">
+ <owner xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_KWxOMOWyEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="ConflictingDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_K5WW0OWyEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_K5W94OWyEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_K5Xk8OWyEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_K5Xk8eWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_K5Xk8uWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_K5Xk8-WyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K5Xk9OWyEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_K5Xk9eWyEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_K5Xk9uWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_K5Xk9-WyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_K5Xk-OWyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K5Xk-eWyEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_K5YMAOWyEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_K5YMAeWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_K5YMAuWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_K5YMA-WyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K5YMBOWyEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="origin.uml#_K5SscOWyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K5WW0eWyEeOBKf64hQ5SMA" x="68" y="100" width="137" height="171"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NlLq8OWyEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NlMSAOWyEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NlMSAeWyEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NlMSAuWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NlMSA-WyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NlMSBOWyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlMSBeWyEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NlM5EOWyEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NlM5EeWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NlM5EuWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NlM5E-WyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlM5FOWyEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NlM5FeWyEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NlM5FuWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NlM5F-WyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NlM5GOWyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlM5GeWyEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="origin.uml#_NlHZgOWyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlLq8eWyEeOBKf64hQ5SMA" x="305" y="92" width="162" height="180"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_KWxOMeWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_KWxOMuWyEeOBKf64hQ5SMA">
+ <owner xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.uml
new file mode 100644
index 000000000..4a2588c25
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.uml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_EbOSQOWxEeOBKf64hQ5SMA" name="model">
+ <packagedElement xmi:type="uml:Package" xmi:id="_LRkfAOWxEeOBKf64hQ5SMA" name="OldHoldingPackage">
+ <packagedElement xmi:type="uml:Class" xmi:id="_MyvW0OWxEeOBKf64hQ5SMA" name="MovingNode"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_P3e6MOWxEeOBKf64hQ5SMA" name="NewHoldingPackage"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ngB40OWxEeOBKf64hQ5SMA" name="AssociationSource">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_tI17cOWxEeOBKf64hQ5SMA" name="associationOldTarget" type="_pOBrsOWxEeOBKf64hQ5SMA" association="_tI4-wOWxEeOBKf64hQ5SMA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tI17ceWxEeOBKf64hQ5SMA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tI17cuWxEeOBKf64hQ5SMA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_pOBrsOWxEeOBKf64hQ5SMA" name="AssociationOldTarget"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rJ1REOWxEeOBKf64hQ5SMA" name="AssociationNewTarget"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_tI4-wOWxEeOBKf64hQ5SMA" name="A_associationSource_associationOldTarget_1" memberEnd="_tI4-weWxEeOBKf64hQ5SMA _tI17cOWxEeOBKf64hQ5SMA" navigableOwnedEnd="_tI4-weWxEeOBKf64hQ5SMA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_tI4-weWxEeOBKf64hQ5SMA" name="associationSource" type="_ngB40OWxEeOBKf64hQ5SMA" association="_tI4-wOWxEeOBKf64hQ5SMA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tI4-wuWxEeOBKf64hQ5SMA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tI4-w-WxEeOBKf64hQ5SMA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_6K2ZMOWxEeOBKf64hQ5SMA" name="ChangingNameNode"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AQdFgOWyEeOBKf64hQ5SMA" name="NodeToDelete"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_K5SscOWyEeOBKf64hQ5SMA" name="ConflictingNode"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_NlHZgOWyEeOBKf64hQ5SMA" name="PseudoConflictingNode"/>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.di
new file mode 100644
index 000000000..bf9abab34
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.notation
new file mode 100644
index 000000000..19ed55d88
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.notation
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_EgGyQOWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="MovingNodeDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_LTZrAOWxEeOBKf64hQ5SMA" type="2007">
+ <children xmi:type="notation:DecorationNode" xmi:id="_LTkDEOWxEeOBKf64hQ5SMA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LTmfUOWxEeOBKf64hQ5SMA" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_MzOfAOWxEeOBKf64hQ5SMA" type="3010">
+ <children xmi:type="notation:DecorationNode" xmi:id="_MzPtIOWxEeOBKf64hQ5SMA" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_MzUloOWxEeOBKf64hQ5SMA" type="7011">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_MzUloeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_MzUlouWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_MzUlo-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzUlpOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_MzVMsOWxEeOBKf64hQ5SMA" type="7012">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_MzVMseWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_MzVMsuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_MzVMs-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzVMtOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_MzVzwOWxEeOBKf64hQ5SMA" type="7013">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_MzVzweWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_MzVzwuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_MzVzw-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzVzxOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_MyvW0OWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzOfAeWxEeOBKf64hQ5SMA" x="16" y="22" width="142" height="101"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LTmfUeWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LTmfUuWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Package" href="right.uml#_LRkfAOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LTZrAeWxEeOBKf64hQ5SMA" x="28" y="41" width="226" height="220"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_P3jLoOWxEeOBKf64hQ5SMA" type="2007">
+ <children xmi:type="notation:DecorationNode" xmi:id="_P3jysOWxEeOBKf64hQ5SMA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_P3kZwOWxEeOBKf64hQ5SMA" type="7016">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_P3kZweWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P3kZwuWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Package" href="right.uml#_P3e6MOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P3jLoeWxEeOBKf64hQ5SMA" x="289" y="40" width="215" height="221"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ngGKQOWxEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ngHYYOWxEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ngHYYeWxEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ngHYYuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ngHYY-WxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ngHYZOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngHYZeWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ngImgOWxEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ngImgeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ngImguWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ngImg-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngImhOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ngJNkOWxEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ngJNkeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ngJNkuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ngJNk-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngJNlOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_ngB40OWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngGKQeWxEeOBKf64hQ5SMA" x="537" y="127" width="125" height="128"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_pOFWEOWxEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_pOGkMOWxEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_pOHLQOWxEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_pOHLQeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_pOHLQuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_pOHLQ-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOHLROWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_pOHyUOWxEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_pOHyUeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_pOHyUuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_pOIZYOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOIZYeWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_pOJAcOWxEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_pOJAceWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_pOJAcuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_pOJAc-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOJAdOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_pOBrsOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOFWEeWxEeOBKf64hQ5SMA" x="772" y="44"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rJ5igOWxEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_rJ6JkOWxEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rJ6woOWxEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rJ6woeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rJ6wouWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ6wo-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ6wpOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rJ7XsOWxEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rJ7XseWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rJ7XsuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ7Xs-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ7XtOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rJ8l0OWxEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rJ8l0eWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rJ8l0uWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ8l0-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ8l1OWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_rJ1REOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ5igeWxEeOBKf64hQ5SMA" x="772" y="161" width="146" height="126"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_EgGyQeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_EgGyQuWxEeOBKf64hQ5SMA">
+ <owner xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_JKTQgOWxEeOBKf64hQ5SMA"/>
+ <notation:Diagram xmi:id="_5on14OWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="ChangingDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_6K6qoOWxEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_6K7RsOWxEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6K74wOWxEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6K74weWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6K74wuWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6K74w-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K74xOWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6K8f0OWxEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6K8f0eWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6K8f0uWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6K8f0-WxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K8f1OWxEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6K8f1eWxEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6K8f1uWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6K8f1-WxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6K8f2OWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K8f2eWxEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_6K2ZMOWxEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K6qoeWxEeOBKf64hQ5SMA" x="63" y="64" width="344" height="236"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_5on14eWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_5on14uWxEeOBKf64hQ5SMA">
+ <owner xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_-8jNoOWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="DeletingDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_AQhW8OWyEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_AQh-AOWyEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AQilEOWyEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AQilEeWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AQilEuWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AQilE-WyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AQilFOWyEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AQilFeWyEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AQilFuWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AQilF-WyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AQilGOWyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AQilGeWyEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AQjMIOWyEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AQjMIeWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AQjMIuWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AQjMI-WyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AQjMJOWyEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_AQdFgOWyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AQhW8eWyEeOBKf64hQ5SMA" x="370" y="94" width="229" height="204"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_-8jNoeWxEeOBKf64hQ5SMA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_-8jNouWxEeOBKf64hQ5SMA">
+ <owner xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_E-ErMOWyEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="AddingDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_fn_8oOZhEeO4t6DpSp63uw" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_foDnAOZhEeO4t6DpSp63uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_foEOEOZhEeO4t6DpSp63uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_foEOEeZhEeO4t6DpSp63uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_foEOEuZhEeO4t6DpSp63uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_foEOE-ZhEeO4t6DpSp63uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_foEOFOZhEeO4t6DpSp63uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_foE1IOZhEeO4t6DpSp63uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_foE1IeZhEeO4t6DpSp63uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_foE1IuZhEeO4t6DpSp63uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_foE1I-ZhEeO4t6DpSp63uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_foE1JOZhEeO4t6DpSp63uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_foE1JeZhEeO4t6DpSp63uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_foE1JuZhEeO4t6DpSp63uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_foE1J-ZhEeO4t6DpSp63uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_foE1KOZhEeO4t6DpSp63uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_foE1KeZhEeO4t6DpSp63uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_fmruAOZhEeO4t6DpSp63uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fn_8oeZhEeO4t6DpSp63uw" x="271" y="73"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_E-ErMeWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_E-ErMuWyEeOBKf64hQ5SMA">
+ <owner xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_KWxOMOWyEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="ConflictingDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_K5WW0OWyEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_K5W94OWyEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_K5Xk8OWyEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_K5Xk8eWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_K5Xk8uWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_K5Xk8-WyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K5Xk9OWyEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_K5Xk9eWyEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_K5Xk9uWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_K5Xk9-WyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_K5Xk-OWyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K5Xk-eWyEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_K5YMAOWyEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_K5YMAeWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_K5YMAuWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_K5YMA-WyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K5YMBOWyEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_K5SscOWyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K5WW0eWyEeOBKf64hQ5SMA" x="68" y="100" width="137" height="171"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NlLq8OWyEeOBKf64hQ5SMA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NlMSAOWyEeOBKf64hQ5SMA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NlMSAeWyEeOBKf64hQ5SMA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NlMSAuWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NlMSA-WyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NlMSBOWyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlMSBeWyEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NlM5EOWyEeOBKf64hQ5SMA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NlM5EeWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NlM5EuWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NlM5E-WyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlM5FOWyEeOBKf64hQ5SMA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NlM5FeWyEeOBKf64hQ5SMA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NlM5FuWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NlM5F-WyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NlM5GOWyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlM5GeWyEeOBKf64hQ5SMA"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_NlHZgOWyEeOBKf64hQ5SMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlLq8eWyEeOBKf64hQ5SMA" x="305" y="92" width="162" height="180"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_KWxOMeWyEeOBKf64hQ5SMA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_KWxOMuWyEeOBKf64hQ5SMA">
+ <owner xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.uml
new file mode 100644
index 000000000..e6d41de58
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.uml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_EbOSQOWxEeOBKf64hQ5SMA" name="model">
+ <packagedElement xmi:type="uml:Package" xmi:id="_LRkfAOWxEeOBKf64hQ5SMA" name="OldHoldingPackage">
+ <packagedElement xmi:type="uml:Class" xmi:id="_MyvW0OWxEeOBKf64hQ5SMA" name="MovingNode"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_P3e6MOWxEeOBKf64hQ5SMA" name="NewHoldingPackage"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ngB40OWxEeOBKf64hQ5SMA" name="AssociationSource"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_pOBrsOWxEeOBKf64hQ5SMA" name="AssociationOldTarget"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rJ1REOWxEeOBKf64hQ5SMA" name="AssociationNewTarget"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_6K2ZMOWxEeOBKf64hQ5SMA" name="ChangingNameNode"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AQdFgOWyEeOBKf64hQ5SMA" name="NodeToDelete"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_K5SscOWyEeOBKf64hQ5SMA" name="ConflictingNode_ConflictingName"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_NlHZgOWyEeOBKf64hQ5SMA" name="PseudoConflictingNode_NewName"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_fmruAOZhEeO4t6DpSp63uw" name="NewNode"/>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.diagram/META-INF/MANIFEST.MF
index 5fc250c5f..4c547294a 100644
--- a/plugins/org.eclipse.emf.compare.diagram/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.compare.diagram/META-INF/MANIFEST.MF
@@ -22,7 +22,8 @@ Export-Package: org.eclipse.emf.compare.diagram.internal;
org.eclipse.emf.compare.diagram.ide.ecoretools.tests,
org.eclipse.emf.compare.diagram.ide.ui,
org.eclipse.emf.compare.diagram.ide.ui.ecoretools,
- org.eclipse.emf.compare.diagram.ide.ui.papyrus",
+ org.eclipse.emf.compare.diagram.ide.ui.papyrus,
+ org.eclipse.emf.compare.diagram.papyrus.tests",
org.eclipse.emf.compare.diagram.internal.extensions;
x-friends:="org.eclipse.emf.compare.diagram.ecoretools.tests,
org.eclipse.emf.compare.diagram.edit,
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.rcp.ui/META-INF/MANIFEST.MF
index bdb6d0d77..4c2f150ac 100644
--- a/plugins/org.eclipse.emf.compare.rcp.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.compare.rcp.ui/META-INF/MANIFEST.MF
@@ -35,12 +35,12 @@ Export-Package: org.eclipse.emf.compare.rcp.ui,
org.eclipse.emf.compare.rcp.ui.internal.mergeviewer.impl;x-friends:="org.eclipse.emf.compare.ide.ui",
org.eclipse.emf.compare.rcp.ui.internal.mergeviewer.item.impl;x-friends:="org.eclipse.emf.compare.ide.ui",
org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.actions;x-friends:="org.eclipse.emf.compare.ide.ui",
- org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters;x-friends:="org.eclipse.emf.compare.ide.ui",
- org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl;x-friends:="org.eclipse.emf.compare.ide.ui",
+ org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters;x-friends:="org.eclipse.emf.compare.ide.ui,org.eclipse.emf.compare.diagram.papyrus.tests,org.eclipse.emf.compare.uml2.rcp.ui.tests",
+ org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl;x-friends:="org.eclipse.emf.compare.ide.ui,org.eclipse.emf.compare.diagram.papyrus.tests",
org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups;x-friends:="org.eclipse.emf.compare.ide.ui",
org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.extender;x-friends:="org.eclipse.emf.compare.ide.ui",
- org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.impl;x-friends:="org.eclipse.emf.compare.ide.ui",
- org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.provider;x-friends:="org.eclipse.emf.compare.ide.ui",
+ org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.impl;x-friends:="org.eclipse.emf.compare.ide.ui,org.eclipse.emf.compare.diagram.papyrus.tests",
+ org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.provider;x-friends:="org.eclipse.emf.compare.ide.ui,org.eclipse.emf.compare.diagram.papyrus.tests",
org.eclipse.emf.compare.rcp.ui.internal.util;x-friends:="org.eclipse.emf.compare.ide.ui",
org.eclipse.emf.compare.rcp.ui.mergeviewer,
org.eclipse.emf.compare.rcp.ui.mergeviewer.item,
diff --git a/plugins/org.eclipse.emf.compare.uml2.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.uml2.edit/META-INF/MANIFEST.MF
index f52bfcff7..f93851ec0 100644
--- a/plugins/org.eclipse.emf.compare.uml2.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.compare.uml2.edit/META-INF/MANIFEST.MF
@@ -21,5 +21,5 @@ Bundle-ActivationPolicy: lazy
Import-Package: com.google.common.base;version="[11.0.0,16.0.0)",
org.eclipse.emf.compare.provider
Export-Package: org.eclipse.emf.compare.uml2.internal.provider;x-internal:=true,
- org.eclipse.emf.compare.uml2.internal.provider.custom;x-internal:=true,
- org.eclipse.emf.compare.uml2.internal.provider.decorator;x-internal:=true
+ org.eclipse.emf.compare.uml2.internal.provider.custom;x-friends:="org.eclipse.emf.compare.diagram.papyrus.tests",
+ org.eclipse.emf.compare.uml2.internal.provider.decorator;x-friends:="org.eclipse.emf.compare.diagram.papyrus.tests"
diff --git a/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/META-INF/MANIFEST.MF
index afa34ac33..59aeb761c 100644
--- a/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/META-INF/MANIFEST.MF
@@ -20,3 +20,4 @@ Bundle-Localization: plugin
Import-Package: com.google.common.base;version="[11.0.0,16.0.0)",
com.google.common.collect;version="[11.0.0,16.0.0)",
com.google.common.eventbus;version="[11.0.0,16.0.0)"
+Export-Package: org.eclipse.emf.compare.uml2.rcp.ui.tests.groups
diff --git a/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/AbstractDifferenceOrderTest.java b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/AbstractDifferenceOrderTest.java
new file mode 100644
index 000000000..41f0d0d0d
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/AbstractDifferenceOrderTest.java
@@ -0,0 +1,339 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo.
+ * 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.emf.compare.uml2.rcp.ui.tests.groups;
+
+import com.google.common.base.Joiner;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Collections2;
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Lists;
+import com.google.common.eventbus.EventBus;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.compare.Comparison;
+import org.eclipse.emf.compare.EMFCompare;
+import org.eclipse.emf.compare.EMFCompare.Builder;
+import org.eclipse.emf.compare.postprocessor.IPostProcessor;
+import org.eclipse.emf.compare.postprocessor.IPostProcessor.Descriptor.Registry;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.StructureMergeViewerFilter;
+import org.eclipse.emf.compare.scope.DefaultComparisonScope;
+import org.eclipse.emf.compare.scope.IComparisonScope;
+import org.eclipse.emf.compare.tests.nodes.Node;
+import org.eclipse.emf.compare.tests.nodes.NodesFactory;
+import org.eclipse.emf.compare.tests.nodes.util.NodesResourceFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.ECrossReferenceAdapter;
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.tree.TreeNode;
+import org.eclipse.emf.edit.tree.TreePackage;
+import org.junit.Assert;
+import org.junit.Before;
+
+/**
+ * Abstract class used to test differences order the way they would be displayed in the structure merge
+ * viewer.
+ *
+ * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a>
+ */
+public abstract class AbstractDifferenceOrderTest {
+
+ /**
+ * Resulting comparison.
+ */
+ private Comparison comparison;
+
+ private ECrossReferenceAdapter crossReferenceAdapter;
+
+ private AdapterFactoryItemDelegator itemDelegator;
+
+ /**
+ * Predicate mocking the {@link StructureMergeViewerFilter} behavior.
+ */
+ private Predicate<EObject> viewerFilterPredicate;
+
+ /**
+ * {@link StructureMergeViewerFilter} use to filters elements from a {@link TreeNode}.
+ */
+ private StructureMergeViewerFilter filter;
+
+ @Before
+ public void before() throws IOException {
+
+ final Collection<AdapterFactory> factories = Lists.newArrayList();
+ /*
+ * Adds all AdapterFactories to display the tree the same way it's being displayed in the structure
+ * merge viewer.
+ */
+ factories.addAll(getAdaptersFactory());
+
+ final AdapterFactory composedAdapterFactory = new ComposedAdapterFactory(factories);
+ itemDelegator = new AdapterFactoryItemDelegator(composedAdapterFactory);
+
+ comparison = getComparison(getInput());
+ crossReferenceAdapter = new ECrossReferenceAdapter() {
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.ecore.util.ECrossReferenceAdapter#isIncluded(org.eclipse.emf.ecore.EReference)
+ */
+ @Override
+ protected boolean isIncluded(EReference eReference) {
+ return eReference == TreePackage.Literals.TREE_NODE__DATA;
+ }
+ };
+ filter = new StructureMergeViewerFilter(new EventBus());
+ viewerFilterPredicate = new Predicate<EObject>() {
+ public boolean apply(EObject input) {
+ AdapterImpl adapter = new AdapterImpl();
+ adapter.setTarget(input);
+ return filter.select(null, null, adapter);
+ }
+ };
+
+ }
+
+ /**
+ * Compares the expected result with the list of roots.
+ *
+ * @param expectedResult
+ * Resource holding a Nodes models. This "nodes" model represent the expected.
+ * @param actualTrees
+ * Actual trees that the viewer would display (without any filter being applied).
+ */
+ protected void compareTree(Resource expectedResult, List<? extends TreeNode> actualTrees) {
+ List<? extends TreeNode> nonFilteredActualRoot = Lists.newArrayList(Collections2.filter(actualTrees,
+ viewerFilterPredicate));
+ EList<EObject> expectedContent = expectedResult.getContents();
+ Assert.assertEquals(expectedContent.size(), nonFilteredActualRoot.size());
+
+ for (int i = 0; i < expectedContent.size(); i++) {
+ Node expectedRootNode = (Node)expectedContent.get(i);
+ TreeNode actualRoot = nonFilteredActualRoot.get(i);
+ TreeIterator<EObject> expectedIterator = expectedRootNode.eAllContents();
+ // Filters elements the way the structure merge viewer would with this filter.
+ final Iterator<EObject> realIterator = Iterators.filter(actualRoot.eAllContents(),
+ viewerFilterPredicate);
+ // Compares
+ compareTree(expectedIterator, realIterator);
+ }
+
+ }
+
+ private void compareTree(TreeIterator<EObject> expectedIterator, final Iterator<EObject> realIterator) {
+ while (expectedIterator.hasNext()) {
+ Node expectedElement = (Node)expectedIterator.next();
+ Assert.assertTrue("No match for element " + expectedElement.getName(), realIterator.hasNext()); //$NON-NLS-1$
+ EObject actualElem = realIterator.next();
+
+ // Checks same name.
+ Assert.assertEquals(getErrorMessage(actualElem), expectedElement.getName(), itemDelegator
+ .getText(actualElem));
+ if (expectedElement.eContainer() != null) {
+ final Collection<Node> expectedChildren = expectedElement.getContainmentRef1();
+ // Checks same number of children.
+ Assert.assertEquals("Incorrect children for " + getFullPath(actualElem), //$NON-NLS-1$
+ expectedChildren.size(), Collections2.filter(((TreeNode)actualElem).getChildren(),
+ viewerFilterPredicate).size());
+ }
+ }
+ }
+
+ /**
+ * @return List of AdapterFactory used to fill the {@link AdapterFactoryItemDelegator}
+ */
+ protected abstract List<AdapterFactory> getAdaptersFactory();
+
+ /**
+ * @return Input data for the comparison.
+ */
+ protected abstract NotifierScopeProvider getInput();
+
+ protected Comparison getComparison() {
+ return comparison;
+ }
+
+ /**
+ * Returns the resulting comparison.
+ *
+ * @param scopeProvider
+ * Input of the comparison.
+ * @return {@link Comparison}
+ * @throws IOException
+ */
+ private Comparison getComparison(NotifierScopeProvider scopeProvider) throws IOException {
+ final IComparisonScope scope = new DefaultComparisonScope(scopeProvider.getLeft(), scopeProvider
+ .getRight(), scopeProvider.getOrigin());
+ Builder builder = EMFCompare.builder();
+ Registry<?> postProcessorRegistry = getPostProcessorRegistry();
+ if (postProcessorRegistry != null) {
+ builder.setPostProcessorRegistry(postProcessorRegistry);
+ }
+ return builder.build().compare(scope);
+ }
+
+ protected ECrossReferenceAdapter getCrossReferenceAdapter() {
+ return crossReferenceAdapter;
+ }
+
+ /**
+ * Creates a understandable error message.
+ *
+ * @param actual
+ * @return
+ */
+ private String getErrorMessage(EObject actual) {
+ StringBuilder message = new StringBuilder();
+ message.append("Content error on \"").append(getFullPath(actual)).append("\""); //$NON-NLS-1$ //$NON-NLS-2$
+ return message.toString();
+ }
+
+ protected StructureMergeViewerFilter getFilter() {
+ return filter;
+ }
+
+ /**
+ * Creates a String representing the full path of the element.
+ *
+ * @param eObject
+ * @return
+ */
+ private String getFullPath(EObject eObject) {
+ final String result;
+ if (eObject != null) {
+ List<String> ancestors = new ArrayList<String>();
+ ancestors.add(itemDelegator.getText(eObject));
+ EObject eContainer = eObject.eContainer();
+ while (eContainer != null) {
+ ancestors.add(itemDelegator.getText(eContainer));
+ eContainer = eContainer.eContainer();
+ }
+ result = Joiner.on("::").join(Lists.reverse(ancestors)); //$NON-NLS-1$
+
+ } else {
+ result = null;
+ }
+ return result;
+ }
+
+ /**
+ * Gets the {@link IPostProcessor.Descriptor.Registry} to use for the comparison or null if the default
+ * registry has to be used.
+ *
+ * @return
+ */
+ protected IPostProcessor.Descriptor.Registry<?> getPostProcessorRegistry() {
+ return null;
+ }
+
+ // Used with TestWriterHelper for writing the expected model into a file.
+ protected AdapterFactoryItemDelegator getItemDelegator() {
+ return itemDelegator;
+ }
+
+ /**
+ * Creates a {@link TestWriterHelper} for this test.
+ *
+ * @return
+ */
+ protected final TestWriterHelper createTestHelper() {
+ return new TestWriterHelper();
+ }
+
+ /**
+ * This class aims to help the writer of the test.
+ * <p>
+ * Once the tree in the {@link StructureMergeViewerFilter} has been MANUALLY checked, this class helps to
+ * serialize it in a resource. This resources holds a "Nodes" model. It represents the tree as it is
+ * displayed in the structure merge viewer.
+ * </p>
+ * model
+ *
+ * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a>
+ */
+ protected final class TestWriterHelper {
+
+ private TestWriterHelper() {
+ }
+
+ /**
+ * Creates the expected model from a list of TreeNode.
+ * <p>
+ * This method translates a list of {@link TreeNode} into a Nodes model. This model represents the
+ * tree as it is display in the StructureMergeViewer.
+ * </p>
+ *
+ * @param fileLocation
+ * Location of newly created file will be serialized.
+ * @param roots
+ * Lists of roots to serialize in the model.
+ */
+ public void createExpectedModel(String fileLocation, List<? extends TreeNode> roots) {
+ URI fileURI = URI.createFileURI(fileLocation);
+ Resource.Factory resourceFactory = new NodesResourceFactoryImpl();
+ // resourceFactory cannot be null
+ Resource res = resourceFactory.createResource(fileURI);
+ fillTree(res, roots);
+ try {
+ res.save(Collections.EMPTY_MAP);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ /**
+ * Translates each {@link TreeNode} into a {@link Node}.
+ * <p>
+ * The label of each {@link TreeNode} displayed in the viewer is set as label of the node
+ * </p>
+ *
+ * @param n
+ * @return
+ */
+ private Node createNode(TreeNode n) {
+ Node newNode = null;
+ if (viewerFilterPredicate.apply(n)) {
+ newNode = NodesFactory.eINSTANCE.createNode();
+ newNode.setName(itemDelegator.getText(n));
+ for (TreeNode child : n.getChildren()) {
+ Node createNode = createNode(child);
+ if (createNode != null) {
+ newNode.getContainmentRef1().add(createNode);
+ }
+ }
+ }
+ return newNode;
+ }
+
+ private void fillTree(Resource resource, List<? extends TreeNode> roots) {
+ for (TreeNode n : roots) {
+ Node createNode = createNode(n);
+ if (createNode != null) {
+ resource.getContents().add(createNode);
+ }
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/NotifierScopeProvider.java b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/NotifierScopeProvider.java
new file mode 100644
index 000000000..c124577f3
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/NotifierScopeProvider.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo.
+ * 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.emf.compare.uml2.rcp.ui.tests.groups;
+
+import java.io.IOException;
+
+import org.eclipse.emf.common.notify.Notifier;
+
+/**
+ * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a>
+ */
+public interface NotifierScopeProvider {
+
+ Notifier getLeft() throws IOException;
+
+ Notifier getRight() throws IOException;
+
+ Notifier getOrigin() throws IOException;
+
+}
diff --git a/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/UMLDifferencesOrderTest.java b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/UMLDifferencesOrderTest.java
index 6571b7abb..4e408dc58 100644
--- a/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/UMLDifferencesOrderTest.java
+++ b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/UMLDifferencesOrderTest.java
@@ -11,30 +11,18 @@
package org.eclipse.emf.compare.uml2.rcp.ui.tests.groups;
import static com.google.common.base.Predicates.alwaysTrue;
-import static org.junit.Assert.assertEquals;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Collections2;
-import com.google.common.collect.Iterators;
import com.google.common.collect.Lists;
-import com.google.common.eventbus.EventBus;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
import java.util.List;
import java.util.regex.Pattern;
import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.impl.AdapterImpl;
-import org.eclipse.emf.compare.Comparison;
-import org.eclipse.emf.compare.EMFCompare;
-import org.eclipse.emf.compare.EMFCompare.Builder;
import org.eclipse.emf.compare.postprocessor.BasicPostProcessorDescriptorImpl;
+import org.eclipse.emf.compare.postprocessor.IPostProcessor.Descriptor.Registry;
import org.eclipse.emf.compare.postprocessor.PostProcessorDescriptorRegistryImpl;
import org.eclipse.emf.compare.provider.spec.CompareItemProviderAdapterFactorySpec;
-import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.StructureMergeViewerFilter;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl.CascadingDifferencesFilter;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl.EmptyMatchedResourcesFilter;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl.IdenticalElementsFilter;
@@ -42,278 +30,103 @@ import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.impl.BasicDifferenceGroupImpl;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.provider.TreeItemProviderAdapterFactorySpec;
import org.eclipse.emf.compare.rcp.ui.structuremergeviewer.groups.IDifferenceGroup;
-import org.eclipse.emf.compare.scope.DefaultComparisonScope;
-import org.eclipse.emf.compare.scope.IComparisonScope;
-import org.eclipse.emf.compare.tests.edit.data.ResourceScopeProvider;
import org.eclipse.emf.compare.tests.framework.AbstractInputData;
-import org.eclipse.emf.compare.tests.nodes.Node;
-import org.eclipse.emf.compare.tests.nodes.NodeSingleValueAttribute;
-import org.eclipse.emf.compare.tests.nodes.NodesFactory;
import org.eclipse.emf.compare.uml2.internal.postprocessor.UMLPostProcessor;
import org.eclipse.emf.compare.uml2.internal.provider.custom.UMLCompareCustomItemProviderAdapterFactory;
import org.eclipse.emf.compare.uml2.internal.provider.decorator.UMLCompareItemProviderDecoratorAdapterFactory;
import org.eclipse.emf.compare.uml2.rcp.ui.internal.structuremergeviewer.filters.UMLRefinedElementsFilter;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.util.ECrossReferenceAdapter;
-import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
-import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
import org.eclipse.emf.edit.tree.TreeNode;
-import org.eclipse.emf.edit.tree.TreePackage;
import org.eclipse.uml2.uml.edit.providers.UMLItemProviderAdapterFactory;
-import org.junit.Assert;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
/**
- * Tests the order of the differences in the StructuredMergeView for UML differences.
+ * Tests the order of the differences the way they would be displayed in the structure merge viewer for UML
+ * differences.
*
* @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a>
*/
@SuppressWarnings("restriction")
-public class UMLDifferencesOrderTest {
- /**
- * Holds the expected result.
- */
- private static final List<Node> expectedRoot = new ArrayList<Node>(2);
-
- /**
- * Predicate to compute the expected result when the {@link UMLRefinedElementsFilter} is activated.
- */
- private static final Predicate<EObject> FILTER_ELEMENT_PREDICATE = new Predicate<EObject>() {
+public class UMLDifferencesOrderTest extends AbstractDifferenceOrderTest {
- public boolean apply(EObject input) {
- return !Boolean.valueOf(((NodeSingleValueAttribute)input).getSingleValuedAttribute())
- .booleanValue();
- }
- };
-
- @SuppressWarnings("nls")
- @BeforeClass
- public static void beforeClass() {
- // @formatter:off
- //Creates a structure holding the expected result
- Node rootDiff = newNode("<Model> model",null);
- expectedRoot.add(rootDiff);
- newNode("<Package> OldHoldingPackage",rootDiff);
- Node l1 = newNode("<Package> NewHoldingPackage",rootDiff);
- newNode("<Class> MovingNode [packagedElement move]",l1);
- l1 = newNode("<Class> AssociationSource",rootDiff,true);
- Node l2 = newNode("<Property> associationOldTarget : AssociationOl... [ownedAttribute delete]",l1,true);
- newNode("<Class> AssociationOldTarget [type unset]",l2,true);
- newNode("<Literal Integer> 1 [lowerValue delete]",l2,true);
- newNode("<Literal Unlimited Natural> 1 [upperValue delete]",l2,true);
- newNode("<Association> A_associationSource_associationOl... [association unset]",l2,true);
- newNode("<Class> AssociationOldTarget",rootDiff);
- newNode("<Class> AssociationNewTarget",rootDiff);
- l1 = newNode("<Class> ChangingNameNode_NewName",rootDiff);
- newNode("ChangingNameNode_NewName [name changed]",l1);
- l1 = newNode("<Class> PseudoConflictingNode_NewName",rootDiff);
- newNode("PseudoConflictingNode [name changed]",l1);
- newNode("PseudoConflictingNode [name changed]",l1);
- newNode("<Class> NewNode [packagedElement add]",rootDiff);
- l1 = newNode("<Association> A_associationSource_associationOl... [packagedElement delete]",rootDiff);
- newNode("<Property> associationSource : AssociationSource [memberEnd delete]",l1,true);
- newNode("<Property> associationOldTarget : AssociationOl... [memberEnd delete]",l1,true);
- l2 = newNode("<Property> associationSource : AssociationSource [ownedEnd delete]",l1,true);
- newNode("<Class> AssociationSource [type unset]",l2,true);
- newNode("<Literal Integer> 1 [lowerValue delete]",l2,true);
- newNode("<Literal Unlimited Natural> 1 [upperValue delete]",l2,true);
- newNode("<Association> A_associationSource_associationOl... [association unset]",l2,true);
- newNode("<Property> associationSource : AssociationSource [navigableOwnedEnd delete]",l1,true);
- newNode("<Class> NodeToDelete [packagedElement delete]",rootDiff);
- l1 = newNode("<Class> ConflictingNode [packagedElement delete]",rootDiff);
- newNode("ConflictingNode_ConflictingName [name set]",l1);
- expectedRoot.add(newNode( "left.uml <-> right.uml (origin.uml)",null));
- // @formatter:on
-
- }
-
- /**
- * Resulting comparison.
- */
- private Comparison comparison;
-
- private ECrossReferenceAdapter crossReferenceAdapter;
-
- private AdapterFactoryItemDelegator itemDelegator;
-
- private StructureMergeViewerFilter filter;
+ private ExpectedResultData expectedResult;
@Before
+ @Override
public void before() throws IOException {
-
- final Collection<AdapterFactory> factories = Lists.newArrayList();
- factories.add(new CompareItemProviderAdapterFactorySpec());
- factories.add(new TreeItemProviderAdapterFactorySpec());
- factories.add(new UMLCompareCustomItemProviderAdapterFactory());
- factories.add(new UMLItemProviderAdapterFactory());
- factories.add(new UMLCompareItemProviderDecoratorAdapterFactory());
- factories.add(new ReflectiveItemProviderAdapterFactory());
-
- final AdapterFactory composedAdapterFactory = new ComposedAdapterFactory(factories);
- itemDelegator = new AdapterFactoryItemDelegator(composedAdapterFactory);
-
- comparison = getComparison(new DataInput());
- crossReferenceAdapter = new ECrossReferenceAdapter() {
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.emf.ecore.util.ECrossReferenceAdapter#isIncluded(org.eclipse.emf.ecore.EReference)
- */
- @Override
- protected boolean isIncluded(EReference eReference) {
- return eReference == TreePackage.Literals.TREE_NODE__DATA;
- }
- };
- // Sets the basic setting for the filter
- filter = new StructureMergeViewerFilter(new EventBus());
- IdenticalElementsFilter identicalFilter = new IdenticalElementsFilter();
- EmptyMatchedResourcesFilter emptyResourceFilter = new EmptyMatchedResourcesFilter();
- PseudoConflictsFilter pseudoConflictFilter = new PseudoConflictsFilter();
- CascadingDifferencesFilter cascadingFilter = new CascadingDifferencesFilter();
- filter.removeFilter(cascadingFilter);
- filter.removeFilter(pseudoConflictFilter);
- filter.removeFilter(emptyResourceFilter);
- filter.removeFilter(identicalFilter);
+ super.before();
+ getFilter().removeFilter(new CascadingDifferencesFilter());
+ getFilter().removeFilter(new PseudoConflictsFilter());
+ getFilter().removeFilter(new EmptyMatchedResourcesFilter());
+ getFilter().removeFilter(new IdenticalElementsFilter());
+ expectedResult = new ExpectedResultData();
}
- /**
- * Test the representation structured of UML differences without the UML refine filter activated.
- */
- @Test
- public void testDiffOrder() {
- IDifferenceGroup group = new BasicDifferenceGroupImpl(comparison, alwaysTrue(), crossReferenceAdapter);
- List<? extends TreeNode> roots = group.getChildren();
- assertEquals(2, roots.size());
-
- UMLRefinedElementsFilter umlRefineFilter = new UMLRefinedElementsFilter();
- filter.removeFilter(umlRefineFilter);
-
- for (int i = 0; i < expectedRoot.size(); i++) {
- compareTree(expectedRoot.get(i), false, roots.get(i));
- }
-
+ @Override
+ protected NotifierScopeProvider getInput() {
+ return new DataInput();
}
- /**
- * Test the representation structured of UML differences with the UML refine filter activated.
- */
- @Test
- public void testDiffOrderWithUMLRefineFilter() {
- IDifferenceGroup group = new BasicDifferenceGroupImpl(comparison, alwaysTrue(), crossReferenceAdapter);
- List<? extends TreeNode> roots = group.getChildren();
- assertEquals(2, roots.size());
-
- UMLRefinedElementsFilter umlRefineFilter = new UMLRefinedElementsFilter();
- filter.addFilter(umlRefineFilter);
-
- for (int i = 0; i < expectedRoot.size(); i++) {
- compareTree(expectedRoot.get(i), true, roots.get(i));
- }
-
+ @Override
+ protected List<AdapterFactory> getAdaptersFactory() {
+ return Lists.<AdapterFactory> newArrayList(new CompareItemProviderAdapterFactorySpec(),
+ new TreeItemProviderAdapterFactorySpec(), new UMLCompareCustomItemProviderAdapterFactory(),
+ new UMLItemProviderAdapterFactory(), new UMLCompareItemProviderDecoratorAdapterFactory(),
+ new ReflectiveItemProviderAdapterFactory());
}
- /**
- * Get the comparison using the {@link UMLPostProcessor}.
- */
- protected static Comparison getComparison(ResourceScopeProvider scopeProvider) throws IOException {
- final IComparisonScope scope = new DefaultComparisonScope(scopeProvider.getLeft(), scopeProvider
- .getRight(), scopeProvider.getOrigin());
- Builder builder = EMFCompare.builder();
+ @Override
+ protected Registry<?> getPostProcessorRegistry() {
PostProcessorDescriptorRegistryImpl<Object> postProcessorRegistry = new PostProcessorDescriptorRegistryImpl<Object>();
BasicPostProcessorDescriptorImpl descriptor = new BasicPostProcessorDescriptorImpl(
new UMLPostProcessor(), Pattern.compile("http://www.eclipse.org/uml2/\\d.0.0/UML"), null); //$NON-NLS-1$
postProcessorRegistry.put(UMLPostProcessor.class.getName(), descriptor);
- builder.setPostProcessorRegistry(postProcessorRegistry);
- return builder.build().compare(scope);
+ return postProcessorRegistry;
}
/**
- * Add a new node to a tree. This node is not expected to be filtered by UML Refine filter.
+ * Tests the structured representation of UML differences without the UML refine filter activated.
*
- * @param name
- * Name of the node.
- * @param parent
- * Parent node (or null).
- * @return The newly created node.
+ * @throws IOException
*/
- private static Node newNode(String name, Node parent) {
- return newNode(name, parent, false);
- }
+ @Test
+ public void testDiffOrder() throws IOException {
+ UMLRefinedElementsFilter umlRefineFilter = new UMLRefinedElementsFilter();
+ getFilter().removeFilter(umlRefineFilter);
+
+ IDifferenceGroup group = new BasicDifferenceGroupImpl(getComparison(), alwaysTrue(),
+ getCrossReferenceAdapter());
+ List<? extends TreeNode> roots = group.getChildren();
+ // Uncomment the following lines to reserialize the expected model
+ // TestWriterHelper writerHelper = createTestHelper();
+ // writerHelper.createExpectedModel("PATH_TO_MODEL_FILE/expectedResult.nodes", roots);
+
+ compareTree(expectedResult.getExpectedResultWithoutFilter(), roots);
- /**
- * Add a new node to a tree.
- *
- * @param name
- * Name of the node.
- * @param parent
- * Parent node (or null).
- * @param isFiltered
- * set to <code>true</code> if this node is expected to be filtered by the UML Refine filter.
- * @return The newly created node.
- */
- private static Node newNode(String name, Node parent, boolean isFiltered) {
- NodeSingleValueAttribute result = NodesFactory.eINSTANCE.createNodeSingleValueAttribute();
- result.setSingleValuedAttribute(Boolean.toString(isFiltered));
- result.setName(name);
- if (parent != null) {
- parent.getContainmentRef1().add(result);
- }
- return result;
}
/**
- * Compare the expected difference tree with the real difference tree.
+ * Tests the structured representation of UML differences with the UML refine filter activated.
*
- * @param expectedTree
- * Expected tree.
- * @param activatedfilter
- * Set to true if the expected difference tree should emulated UML Refine filter.
- * @param realTree
- * Real tree.
+ * @throws IOException
*/
- private void compareTree(Node expectedTree, boolean activatedfilter, TreeNode realTree) {
- // Filters elements to mock the behavior of the viewer filter.
- final Iterator<EObject> realIterator = Iterators.filter(realTree.eAllContents(),
- new Predicate<EObject>() {
- public boolean apply(EObject input) {
- AdapterImpl adapter = new AdapterImpl();
- adapter.setTarget(input);
- return filter.select(null, null, adapter);
- }
- });
- // Computes the expected result
- final Iterator<EObject> expectedIterator;
- if (activatedfilter) {
- expectedIterator = Iterators.filter(expectedTree.eAllContents(), FILTER_ELEMENT_PREDICATE);
- } else {
- expectedIterator = expectedTree.eAllContents();
- }
- // Compares
- while (expectedIterator.hasNext()) {
- Node expectedElement = (Node)expectedIterator.next();
- Assert.assertTrue("No match for element " + expectedElement.getName(), realIterator.hasNext()); //$NON-NLS-1$
- EObject realElem = realIterator.next();
- // Checks same name.
- Assert.assertEquals(expectedElement.getName(), itemDelegator.getText(realElem));
- if (expectedElement.eContainer() != null) {
- final Collection<Node> expectedChildren;
- // Computes expected children
- if (activatedfilter) {
- expectedChildren = Collections2.filter(expectedElement.getContainmentRef1(),
- FILTER_ELEMENT_PREDICATE);
- } else {
- expectedChildren = expectedElement.getContainmentRef1();
- }
- // Checks same number of children.
- Assert.assertEquals("Incorrect children for " + itemDelegator.getText(realElem), //$NON-NLS-1$
- expectedChildren.size(), ((TreeNode)realElem).getChildren().size());
- }
- }
+ @Test
+ public void testDiffOrderWithUMLRefineFilter() throws IOException {
+ UMLRefinedElementsFilter umlRefineFilter = new UMLRefinedElementsFilter();
+ getFilter().addFilter(umlRefineFilter);
+
+ IDifferenceGroup group = new BasicDifferenceGroupImpl(getComparison(), alwaysTrue(),
+ getCrossReferenceAdapter());
+ List<? extends TreeNode> roots = group.getChildren();
+ // Uncomment the following lines to reserialize the expected model
+ // TestWriterHelper writerHelper = createTestHelper();
+ // writerHelper.createExpectedModel("PATH_TO_MODEL_FILE/expectedResultWithUMLRefineElement.nodes",
+ // roots);
+
+ compareTree(expectedResult.getExpectedResultWithFilter(), roots);
+
}
/**
@@ -321,7 +134,7 @@ public class UMLDifferencesOrderTest {
*
* @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a>
*/
- public static class DataInput extends AbstractInputData implements ResourceScopeProvider {
+ private static class DataInput extends AbstractInputData implements NotifierScopeProvider {
public Resource getLeft() throws IOException {
return loadFromClassLoader("data/a1/left.uml");//$NON-NLS-1$
@@ -336,4 +149,20 @@ public class UMLDifferencesOrderTest {
}
}
+ /**
+ * Expected result data.
+ *
+ * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a>
+ */
+ private static class ExpectedResultData extends AbstractInputData {
+
+ public Resource getExpectedResultWithoutFilter() throws IOException {
+ return loadFromClassLoader("data/a1/expectedResultWithoutUMLRefineElementFilter.nodes"); //$NON-NLS-1$
+ }
+
+ public Resource getExpectedResultWithFilter() throws IOException {
+ return loadFromClassLoader("data/a1/expectedResultWithUMLRefineElementFilter.nodes"); //$NON-NLS-1$
+ }
+ }
+
}
diff --git a/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/data/a1/expectedResultWithUMLRefineElementFilter.nodes b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/data/a1/expectedResultWithUMLRefineElementFilter.nodes
new file mode 100644
index 000000000..9b5296ff5
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/data/a1/expectedResultWithUMLRefineElementFilter.nodes
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:nodes="http://www.eclipse.org/emf/compare/tests/nodes">
+ <nodes:Node xmi:id="_CgJ7IOvwEeOe_vfK-oM2bA" name="&lt;Model> model">
+ <containmentRef1 xmi:id="_CgR28OvwEeOe_vfK-oM2bA" name="&lt;Package> OldHoldingPackage"/>
+ <containmentRef1 xmi:id="_CgR28evwEeOe_vfK-oM2bA" name="&lt;Package> NewHoldingPackage">
+ <containmentRef1 xmi:id="_CgR28uvwEeOe_vfK-oM2bA" name="&lt;Class> MovingNode [packagedElement move]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_CgR28-vwEeOe_vfK-oM2bA" name="&lt;Class> AssociationOldTarget"/>
+ <containmentRef1 xmi:id="_CgR29OvwEeOe_vfK-oM2bA" name="&lt;Class> AssociationNewTarget"/>
+ <containmentRef1 xmi:id="_CgR29evwEeOe_vfK-oM2bA" name="&lt;Class> ChangingNameNode_NewName">
+ <containmentRef1 xmi:id="_CgR29uvwEeOe_vfK-oM2bA" name="ChangingNameNode_NewName [name changed]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_CgR29-vwEeOe_vfK-oM2bA" name="&lt;Class> PseudoConflictingNode_NewName">
+ <containmentRef1 xmi:id="_CgR2-OvwEeOe_vfK-oM2bA" name="PseudoConflictingNode [name changed]"/>
+ <containmentRef1 xmi:id="_CgR2-evwEeOe_vfK-oM2bA" name="PseudoConflictingNode [name changed]"/>
+ </containmentRef1>
+ <containmentRef1 xmi:id="_CgR2-uvwEeOe_vfK-oM2bA" name="&lt;Class> NewNode [packagedElement add]"/>
+ <containmentRef1 xmi:id="_CgR2--vwEeOe_vfK-oM2bA" name="&lt;Association> A_associationSource_associationOl... [packagedElement delete]"/>
+ <containmentRef1 xmi:id="_CgR2_OvwEeOe_vfK-oM2bA" name="&lt;Class> NodeToDelete [packagedElement delete]"/>
+ <containmentRef1 xmi:id="_CgR2_evwEeOe_vfK-oM2bA" name="&lt;Class> ConflictingNode [packagedElement delete]">
+ <containmentRef1 xmi:id="_CgR2_uvwEeOe_vfK-oM2bA" name="ConflictingNode_ConflictingName [name set]"/>
+ </containmentRef1>
+ </nodes:Node>
+ <nodes:Node xmi:id="_CgU6QOvwEeOe_vfK-oM2bA" name="left.uml &lt;-> right.uml (origin.uml)"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/data/a1/expectedResultWithoutUMLRefineElementFilter.nodes b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/data/a1/expectedResultWithoutUMLRefineElementFilter.nodes
new file mode 100644
index 000000000..eb170b378
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/data/a1/expectedResultWithoutUMLRefineElementFilter.nodes
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:nodes="http://www.eclipse.org/emf/compare/tests/nodes">
+ <nodes:Node
+ xmi:id="_CiZ94OvwEeOe_vfK-oM2bA"
+ name="&lt;Model> model">
+ <containmentRef1
+ xmi:id="_CiZ94evwEeOe_vfK-oM2bA"
+ name="&lt;Package> OldHoldingPackage"/>
+ <containmentRef1
+ xmi:id="_CiZ94uvwEeOe_vfK-oM2bA"
+ name="&lt;Package> NewHoldingPackage">
+ <containmentRef1
+ xmi:id="_CiZ94-vwEeOe_vfK-oM2bA"
+ name="&lt;Class> MovingNode [packagedElement move]"/>
+ </containmentRef1>
+ <containmentRef1
+ xmi:id="_CiZ95OvwEeOe_vfK-oM2bA"
+ name="&lt;Class> AssociationSource">
+ <containmentRef1
+ xmi:id="_CiZ95evwEeOe_vfK-oM2bA"
+ name="&lt;Property> associationOldTarget : AssociationOl... [ownedAttribute delete]">
+ <containmentRef1
+ xmi:id="_CiZ95uvwEeOe_vfK-oM2bA"
+ name="&lt;Class> AssociationOldTarget [type unset]"/>
+ <containmentRef1
+ xmi:id="_CiZ95-vwEeOe_vfK-oM2bA"
+ name="&lt;Literal Integer> 1 [lowerValue delete]"/>
+ <containmentRef1
+ xmi:id="_CiZ96OvwEeOe_vfK-oM2bA"
+ name="&lt;Literal Unlimited Natural> 1 [upperValue delete]"/>
+ <containmentRef1
+ xmi:id="_CiZ96evwEeOe_vfK-oM2bA"
+ name="&lt;Association> A_associationSource_associationOl... [association unset]"/>
+ </containmentRef1>
+ </containmentRef1>
+ <containmentRef1
+ xmi:id="_CiZ96uvwEeOe_vfK-oM2bA"
+ name="&lt;Class> AssociationOldTarget"/>
+ <containmentRef1
+ xmi:id="_Ciak8OvwEeOe_vfK-oM2bA"
+ name="&lt;Class> AssociationNewTarget"/>
+ <containmentRef1
+ xmi:id="_Ciak8evwEeOe_vfK-oM2bA"
+ name="&lt;Class> ChangingNameNode_NewName">
+ <containmentRef1
+ xmi:id="_Ciak8uvwEeOe_vfK-oM2bA"
+ name="ChangingNameNode_NewName [name changed]"/>
+ </containmentRef1>
+ <containmentRef1
+ xmi:id="_Ciak8-vwEeOe_vfK-oM2bA"
+ name="&lt;Class> PseudoConflictingNode_NewName">
+ <containmentRef1
+ xmi:id="_Ciak9OvwEeOe_vfK-oM2bA"
+ name="PseudoConflictingNode [name changed]"/>
+ <containmentRef1
+ xmi:id="_Ciak9evwEeOe_vfK-oM2bA"
+ name="PseudoConflictingNode [name changed]"/>
+ </containmentRef1>
+ <containmentRef1
+ xmi:id="_Ciak9uvwEeOe_vfK-oM2bA"
+ name="&lt;Class> NewNode [packagedElement add]"/>
+ <containmentRef1
+ xmi:id="_Ciak9-vwEeOe_vfK-oM2bA"
+ name="&lt;Association> A_associationSource_associationOl... [packagedElement delete]">
+ <containmentRef1
+ xmi:id="_Ciak-OvwEeOe_vfK-oM2bA"
+ name="&lt;Property> associationSource : AssociationSource [memberEnd delete]"/>
+ <containmentRef1
+ xmi:id="_Ciak-evwEeOe_vfK-oM2bA"
+ name="&lt;Property> associationOldTarget : AssociationOl... [memberEnd delete]"/>
+ <containmentRef1
+ xmi:id="_Ciak-uvwEeOe_vfK-oM2bA"
+ name="&lt;Property> associationSource : AssociationSource [ownedEnd delete]">
+ <containmentRef1
+ xmi:id="_Ciak--vwEeOe_vfK-oM2bA"
+ name="&lt;Class> AssociationSource [type unset]"/>
+ <containmentRef1
+ xmi:id="_Ciak_OvwEeOe_vfK-oM2bA"
+ name="&lt;Literal Integer> 1 [lowerValue delete]"/>
+ <containmentRef1
+ xmi:id="_Ciak_evwEeOe_vfK-oM2bA"
+ name="&lt;Literal Unlimited Natural> 1 [upperValue delete]"/>
+ <containmentRef1
+ xmi:id="_Ciak_uvwEeOe_vfK-oM2bA"
+ name="&lt;Association> A_associationSource_associationOl... [association unset]"/>
+ </containmentRef1>
+ <containmentRef1
+ xmi:id="_Ciak_-vwEeOe_vfK-oM2bA"
+ name="&lt;Property> associationSource : AssociationSource [navigableOwnedEnd delete]"/>
+ </containmentRef1>
+ <containmentRef1
+ xmi:id="_CialAOvwEeOe_vfK-oM2bA"
+ name="&lt;Class> NodeToDelete [packagedElement delete]"/>
+ <containmentRef1
+ xmi:id="_CialAevwEeOe_vfK-oM2bA"
+ name="&lt;Class> ConflictingNode [packagedElement delete]">
+ <containmentRef1
+ xmi:id="_CialAuvwEeOe_vfK-oM2bA"
+ name="ConflictingNode_ConflictingName [name set]"/>
+ </containmentRef1>
+ </nodes:Node>
+ <nodes:Node
+ xmi:id="_CialA-vwEeOe_vfK-oM2bA"
+ name="left.uml &lt;-> right.uml (origin.uml)"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.uml2.rcp.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.uml2.rcp.ui/META-INF/MANIFEST.MF
index d684d3516..0c7f20cbe 100644
--- a/plugins/org.eclipse.emf.compare.uml2.rcp.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.compare.uml2.rcp.ui/META-INF/MANIFEST.MF
@@ -18,4 +18,4 @@ Bundle-ActivationPolicy: lazy
Bundle-Localization: plugin
Export-Package: org.eclipse.emf.compare.uml2.rcp.ui.internal.accessor;x-internal:=true,
org.eclipse.emf.compare.uml2.rcp.ui.internal.accessor.factory;x-internal:=true,
- org.eclipse.emf.compare.uml2.rcp.ui.internal.structuremergeviewer.filters;x-internal:=true
+ org.eclipse.emf.compare.uml2.rcp.ui.internal.structuremergeviewer.filters;x-friends:="org.eclipse.emf.compare.diagram.papyrus.tests"
diff --git a/plugins/org.eclipse.emf.compare.uml2/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.uml2/META-INF/MANIFEST.MF
index 09b99cd2e..eb8472d0e 100644
--- a/plugins/org.eclipse.emf.compare.uml2/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.compare.uml2/META-INF/MANIFEST.MF
@@ -27,7 +27,7 @@ Export-Package: org.eclipse.emf.compare.uml2.internal;
org.eclipse.emf.compare.uml2.rcp.ui,
org.eclipse.emf.compare.uml2.tests",
org.eclipse.emf.compare.uml2.internal.merge;x-internal:=true,
- org.eclipse.emf.compare.uml2.internal.postprocessor;x-internal:=true,
+ org.eclipse.emf.compare.uml2.internal.postprocessor;x-friends:="org.eclipse.emf.compare.diagram.papyrus.tests",
org.eclipse.emf.compare.uml2.internal.postprocessor.extension;x-internal:=true,
org.eclipse.emf.compare.uml2.internal.postprocessor.extension.clazz;x-internal:=true,
org.eclipse.emf.compare.uml2.internal.postprocessor.extension.profile;x-internal:=true,

Back to the top