Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAxel Richard2016-11-30 10:14:25 +0000
committerLaurent Delaigue2017-02-13 15:16:54 +0000
commit77a56b658d12cf1ac145c152a21b22d70c55a028 (patch)
treec01141fa05e2bbe8d713a5446816fe1c47d759c3
parentc4bcdde85294dc19ef83d06bced17bc4b19f8230 (diff)
downloadorg.eclipse.emf.compare-77a56b658d12cf1ac145c152a21b22d70c55a028.tar.gz
org.eclipse.emf.compare-77a56b658d12cf1ac145c152a21b22d70c55a028.tar.xz
org.eclipse.emf.compare-77a56b658d12cf1ac145c152a21b22d70c55a028.zip
[508294] ResourceAttachmentChange is displayed twice
With the new way to display differences and matches in the structure merge viewer, the ResourceAttachmentChanges were displayed twice in each GroupProvider (ThreeWayGroupProvider, DefaultGroupProvider, ResourceGroupProvider, KindGroupProvider). Change-Id: I0c659b832fb32aa2f29f9722e61601c46a7c77d2 Signed-off-by: Axel Richard <axel.richard@obeo.fr>
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/ResourceAttachmentChangeInGroupsTest.java222
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/ResourceAttachmentChangeInGroupsInputData.java47
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/left/left.nodes4
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/origin/fragment.nodes2
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/origin/origin.nodes4
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/right/fragment.nodes2
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/right/right.nodes4
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/provider/AbstractTestTreeNodeItemProviderAdapter.java36
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/suite/AllTests.java3
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/BasicDifferenceGroupImpl.java8
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ByResourceGroupProvider.java4
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ThreeWayComparisonGroupProvider.java17
12 files changed, 346 insertions, 7 deletions
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/ResourceAttachmentChangeInGroupsTest.java b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/ResourceAttachmentChangeInGroupsTest.java
new file mode 100644
index 000000000..deda1a299
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/ResourceAttachmentChangeInGroupsTest.java
@@ -0,0 +1,222 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.rcp.ui.tests.structuremergeviewer.groups;
+
+import static com.google.common.collect.Iterables.filter;
+import static com.google.common.collect.Iterables.size;
+import static com.google.common.collect.Iterables.transform;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.compare.Comparison;
+import org.eclipse.emf.compare.ResourceAttachmentChange;
+import org.eclipse.emf.compare.rcp.ui.internal.EMFCompareRCPUIMessages;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.impl.ByResourceGroupProvider;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.impl.DefaultGroupProvider;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.impl.KindGroupProvider;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.impl.ThreeWayComparisonGroupProvider;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.nodes.DiffNode;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.nodes.MatchResourceNode;
+import org.eclipse.emf.compare.rcp.ui.structuremergeviewer.groups.IDifferenceGroup;
+import org.eclipse.emf.compare.rcp.ui.tests.structuremergeviewer.groups.data.nodes.resourceattachmentchange.ResourceAttachmentChangeInGroupsInputData;
+import org.eclipse.emf.compare.rcp.ui.tests.structuremergeviewer.groups.provider.AbstractTestTreeNodeItemProviderAdapter;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.tree.TreeNode;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.common.collect.Iterables;
+
+@SuppressWarnings("restriction")
+public class ResourceAttachmentChangeInGroupsTest extends AbstractTestTreeNodeItemProviderAdapter {
+
+ private Comparison comp;
+
+ @Before
+ public void setUp() throws Exception {
+ comp = getComparison(new ResourceAttachmentChangeInGroupsInputData());
+ }
+
+ /**
+ * Test that a {@link ResourceAttachmentChange} is only display once in
+ * {@link ThreeWayComparisonGroupProvider}. This test is related to <a
+ * href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=508294"</a>
+ */
+ @Test
+ public void testResourceAttachmentChangeInThreeWayComparisonGroupProvider() {
+ ThreeWayComparisonGroupProvider threeWayComparisonGroup = new ThreeWayComparisonGroupProvider();
+ Collection<? extends IDifferenceGroup> groups = threeWayComparisonGroup.getGroups(comp);
+ assertNotNull(groups);
+ assertEquals(3, groups.size());
+ IDifferenceGroup[] groupsArray = groups.toArray(new IDifferenceGroup[3]);
+
+ // Conflicts group
+ IDifferenceGroup conflictsGroup = groupsArray[0];
+ assertEquals(EMFCompareRCPUIMessages.getString("ThreeWayComparisonGroupProvider.conflicts.label"), //$NON-NLS-1$
+ conflictsGroup.getName());
+ List<? extends TreeNode> children = conflictsGroup.getChildren();
+ assertEquals(0, children.size());
+
+ // Left group
+ IDifferenceGroup leftGroup = groupsArray[1];
+ assertEquals(EMFCompareRCPUIMessages.getString("ThreeWayComparisonGroupProvider.left.label"), //$NON-NLS-1$
+ leftGroup.getName());
+ children = leftGroup.getChildren();
+ assertEquals(2, children.size());
+ assertEquals(2, size(filter(children, MatchResourceNode.class)));
+ TreeNode fragmentMatchResourceNode = children.get(0);
+ EList<TreeNode> fragmentMatchResourceNodeChildren = fragmentMatchResourceNode.getChildren();
+ assertEquals(1, fragmentMatchResourceNodeChildren.size());
+ assertEquals(1, size(filter(fragmentMatchResourceNodeChildren, DiffNode.class)));
+ Iterable<EObject> fragmentMatchResourceNodeData = transform(fragmentMatchResourceNodeChildren,
+ TREE_NODE_DATA);
+ assertEquals(1, Iterables.size(fragmentMatchResourceNodeData));
+ assertEquals(1, size(filter(fragmentMatchResourceNodeData, ResourceAttachmentChange.class)));
+ TreeNode rootMatchResourceNode = children.get(1);
+ assertEquals(0, rootMatchResourceNode.getChildren().size());
+
+ // Right group
+ IDifferenceGroup rightGroup = groupsArray[2];
+ assertEquals(EMFCompareRCPUIMessages.getString("ThreeWayComparisonGroupProvider.right.label"), //$NON-NLS-1$
+ rightGroup.getName());
+ children = rightGroup.getChildren();
+ assertEquals(2, children.size());
+ assertEquals(2, size(filter(children, MatchResourceNode.class)));
+ for (TreeNode treeNode : children) {
+ children = treeNode.getChildren();
+ assertEquals(0, children.size());
+ }
+ }
+
+ /**
+ * Test that a {@link ResourceAttachmentChange} is only display once in {@link DefaultGroupProvider}. This
+ * test is related to <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=508294"</a>
+ */
+ @Test
+ public void testResourceAttachmentChangeInDefaultComparisonGroupProvider() {
+ DefaultGroupProvider defaultComparisonGroup = new DefaultGroupProvider();
+ Collection<? extends IDifferenceGroup> groups = defaultComparisonGroup.getGroups(comp);
+ assertNotNull(groups);
+ assertEquals(1, groups.size());
+ IDifferenceGroup defaultGroup = groups.iterator().next();
+ List<? extends TreeNode> children = defaultGroup.getChildren();
+ assertEquals(2, children.size());
+ assertEquals(2, size(filter(children, MatchResourceNode.class)));
+ TreeNode fragmentMatchResourceNode = children.get(0);
+ EList<TreeNode> fragmentMatchResourceNodeChildren = fragmentMatchResourceNode.getChildren();
+ assertEquals(1, fragmentMatchResourceNodeChildren.size());
+ assertEquals(1, size(filter(fragmentMatchResourceNodeChildren, DiffNode.class)));
+ Iterable<EObject> fragmentMatchResourceNodeData = transform(fragmentMatchResourceNodeChildren,
+ TREE_NODE_DATA);
+ assertEquals(1, Iterables.size(fragmentMatchResourceNodeData));
+ assertEquals(1, size(filter(fragmentMatchResourceNodeData, ResourceAttachmentChange.class)));
+ TreeNode rootMatchResourceNode = children.get(1);
+ assertEquals(0, rootMatchResourceNode.getChildren().size());
+ }
+
+ /**
+ * Test that a {@link ResourceAttachmentChange} is only display once in {@link KindGroupProvider}. This
+ * test is related to <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=508294"</a>
+ */
+ @Test
+ public void testResourceAttachmentChangeInByKindComparisonGroupProvider() {
+ KindGroupProvider kindComparisonGroup = new KindGroupProvider();
+ Collection<? extends IDifferenceGroup> groups = kindComparisonGroup.getGroups(comp);
+ assertNotNull(groups);
+ assertEquals(4, groups.size());
+ IDifferenceGroup[] groupsArray = groups.toArray(new IDifferenceGroup[4]);
+
+ // Addition group
+ IDifferenceGroup additionGroup = groupsArray[0];
+ assertEquals(EMFCompareRCPUIMessages.getString("KindGroupProvider.addition.label"), //$NON-NLS-1$
+ additionGroup.getName());
+ List<? extends TreeNode> children = additionGroup.getChildren();
+ assertEquals(2, children.size());
+ assertEquals(2, size(filter(children, MatchResourceNode.class)));
+ for (TreeNode treeNode : children) {
+ children = treeNode.getChildren();
+ assertEquals(0, children.size());
+ }
+
+ // Deletion group
+ IDifferenceGroup deletionGroup = groupsArray[1];
+ assertEquals(EMFCompareRCPUIMessages.getString("KindGroupProvider.deletion.label"), //$NON-NLS-1$
+ deletionGroup.getName());
+ children = deletionGroup.getChildren();
+ assertEquals(2, children.size());
+ assertEquals(2, size(filter(children, MatchResourceNode.class)));
+ TreeNode fragmentMatchResourceNode = children.get(0);
+ EList<TreeNode> fragmentMatchResourceNodeChildren = fragmentMatchResourceNode.getChildren();
+ assertEquals(1, fragmentMatchResourceNodeChildren.size());
+ assertEquals(1, size(filter(fragmentMatchResourceNodeChildren, DiffNode.class)));
+ Iterable<EObject> fragmentMatchResourceNodeData = transform(fragmentMatchResourceNodeChildren,
+ TREE_NODE_DATA);
+ assertEquals(1, Iterables.size(fragmentMatchResourceNodeData));
+ assertEquals(1, size(filter(fragmentMatchResourceNodeData, ResourceAttachmentChange.class)));
+ TreeNode rootMatchResourceNode = children.get(1);
+ assertEquals(0, rootMatchResourceNode.getChildren().size());
+
+ // Change group
+ IDifferenceGroup changeGroup = groupsArray[2];
+ assertEquals(EMFCompareRCPUIMessages.getString("KindGroupProvider.change.label"), //$NON-NLS-1$
+ changeGroup.getName());
+ children = changeGroup.getChildren();
+ assertEquals(2, children.size());
+ assertEquals(2, size(filter(children, MatchResourceNode.class)));
+ for (TreeNode treeNode : children) {
+ children = treeNode.getChildren();
+ assertEquals(0, children.size());
+ }
+
+ // Move group
+ IDifferenceGroup moveGroup = groupsArray[3];
+ assertEquals(EMFCompareRCPUIMessages.getString("KindGroupProvider.move.label"), //$NON-NLS-1$
+ moveGroup.getName());
+ children = moveGroup.getChildren();
+ assertEquals(2, children.size());
+ assertEquals(2, size(filter(children, MatchResourceNode.class)));
+ for (TreeNode treeNode : children) {
+ children = treeNode.getChildren();
+ assertEquals(0, children.size());
+ }
+ }
+
+ /**
+ * Test that a {@link ResourceAttachmentChange} is only display once in {@link ByResourceGroupProvider}.
+ * This test is related to <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=508294"</a>
+ */
+ @Test
+ public void testResourceAttachmentChangeInByResourceComparisonGroupProvider() {
+ ByResourceGroupProvider resourceComparisonGroup = new ByResourceGroupProvider();
+ Collection<? extends IDifferenceGroup> groups = resourceComparisonGroup.getGroups(comp);
+ assertNotNull(groups);
+ assertEquals(1, groups.size());
+ IDifferenceGroup byResourceGroup = groups.iterator().next();
+ List<? extends TreeNode> children = byResourceGroup.getChildren();
+ assertEquals(2, children.size());
+ assertEquals(2, size(filter(children, MatchResourceNode.class)));
+ TreeNode fragmentMatchResourceNode = children.get(0);
+ EList<TreeNode> fragmentMatchResourceNodeChildren = fragmentMatchResourceNode.getChildren();
+ assertEquals(1, fragmentMatchResourceNodeChildren.size());
+ assertEquals(1, size(filter(fragmentMatchResourceNodeChildren, DiffNode.class)));
+ Iterable<EObject> fragmentMatchResourceNodeData = transform(fragmentMatchResourceNodeChildren,
+ TREE_NODE_DATA);
+ assertEquals(1, Iterables.size(fragmentMatchResourceNodeData));
+ assertEquals(1, size(filter(fragmentMatchResourceNodeData, ResourceAttachmentChange.class)));
+ TreeNode rootMatchResourceNode = children.get(1);
+ assertEquals(0, rootMatchResourceNode.getChildren().size());
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/ResourceAttachmentChangeInGroupsInputData.java b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/ResourceAttachmentChangeInGroupsInputData.java
new file mode 100644
index 000000000..5ba333431
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/ResourceAttachmentChangeInGroupsInputData.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2016 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.rcp.ui.tests.structuremergeviewer.groups.data.nodes.resourceattachmentchange;
+
+import java.io.IOException;
+
+import org.eclipse.emf.compare.tests.edit.data.ResourceScopeProvider;
+import org.eclipse.emf.compare.tests.framework.AbstractInputData;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+public class ResourceAttachmentChangeInGroupsInputData extends AbstractInputData implements ResourceScopeProvider {
+
+ public Resource getLeft() throws IOException {
+ ResourceSet rSet = new ResourceSetImpl();
+ Resource resource = loadFromClassLoader("left/left.nodes");
+ rSet.getResources().add(resource);
+ return resource;
+ }
+
+ public Resource getRight() throws IOException {
+ ResourceSet rSet = new ResourceSetImpl();
+ Resource resource = loadFromClassLoader("right/right.nodes");
+ rSet.getResources().add(resource);
+ Resource fragment = loadFromClassLoader("right/fragment.nodes");
+ rSet.getResources().add(fragment);
+ return resource;
+ }
+
+ public Resource getOrigin() throws IOException {
+ ResourceSet rSet = new ResourceSetImpl();
+ Resource resource = loadFromClassLoader("origin/origin.nodes");
+ rSet.getResources().add(resource);
+ Resource fragment = loadFromClassLoader("origin/fragment.nodes");
+ rSet.getResources().add(fragment);
+ return resource;
+ }
+}
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/left/left.nodes b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/left/left.nodes
new file mode 100644
index 000000000..3a9424aa9
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/left/left.nodes
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<nodes:Node xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:nodes="http://www.eclipse.org/emf/compare/tests/nodes" xmi:id="_ORexoLlNEeGmS9ESxeCLvg" name="root">
+ <containmentRef1 xmi:id="_QE6YYAcQEeKTxJtDIb3mMw" name="fragmented"/>
+</nodes:Node>
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/origin/fragment.nodes b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/origin/fragment.nodes
new file mode 100644
index 000000000..27bbfc1a5
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/origin/fragment.nodes
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<nodes:Node xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:nodes="http://www.eclipse.org/emf/compare/tests/nodes" xmi:id="_QE6YYAcQEeKTxJtDIb3mMw" name="fragmented"/> \ No newline at end of file
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/origin/origin.nodes b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/origin/origin.nodes
new file mode 100644
index 000000000..b75ab1666
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/origin/origin.nodes
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<nodes:Node xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:nodes="http://www.eclipse.org/emf/compare/tests/nodes" xmi:id="_ORexoLlNEeGmS9ESxeCLvg" name="root">
+ <containmentRef1 href="fragment.nodes#_QE6YYAcQEeKTxJtDIb3mMw"/>
+</nodes:Node>
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/right/fragment.nodes b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/right/fragment.nodes
new file mode 100644
index 000000000..27bbfc1a5
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/right/fragment.nodes
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<nodes:Node xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:nodes="http://www.eclipse.org/emf/compare/tests/nodes" xmi:id="_QE6YYAcQEeKTxJtDIb3mMw" name="fragmented"/> \ No newline at end of file
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/right/right.nodes b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/right/right.nodes
new file mode 100644
index 000000000..b75ab1666
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/data/nodes/resourceattachmentchange/right/right.nodes
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<nodes:Node xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:nodes="http://www.eclipse.org/emf/compare/tests/nodes" xmi:id="_ORexoLlNEeGmS9ESxeCLvg" name="root">
+ <containmentRef1 href="fragment.nodes#_QE6YYAcQEeKTxJtDIb3mMw"/>
+</nodes:Node>
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/provider/AbstractTestTreeNodeItemProviderAdapter.java b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/provider/AbstractTestTreeNodeItemProviderAdapter.java
index b204c8e0e..b7967c0c5 100644
--- a/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/provider/AbstractTestTreeNodeItemProviderAdapter.java
+++ b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/structuremergeviewer/groups/provider/AbstractTestTreeNodeItemProviderAdapter.java
@@ -31,6 +31,9 @@ import org.eclipse.emf.compare.scope.IComparisonScope;
import org.eclipse.emf.compare.tests.edit.data.ResourceScopeProvider;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.emf.edit.tree.TreeNode;
import org.junit.Before;
@@ -62,8 +65,37 @@ public class AbstractTestTreeNodeItemProviderAdapter {
* @throws IOException
*/
public static Comparison getComparison(ResourceScopeProvider scopeProvider) throws IOException {
- final IComparisonScope scope = new DefaultComparisonScope(scopeProvider.getLeft(),
- scopeProvider.getRight(), scopeProvider.getOrigin());
+ Resource left = scopeProvider.getLeft();
+ ResourceSet leftResourceSet = null;
+ if (left != null) {
+ leftResourceSet = left.getResourceSet();
+ if (leftResourceSet != null) {
+ EcoreUtil.resolveAll(leftResourceSet);
+ }
+ }
+ Resource right = scopeProvider.getRight();
+ ResourceSet rightResourceSet = null;
+ if (right != null) {
+ rightResourceSet = right.getResourceSet();
+ if (rightResourceSet != null) {
+ EcoreUtil.resolveAll(rightResourceSet);
+ }
+ }
+ Resource origin = scopeProvider.getOrigin();
+ ResourceSet originResourceSet = null;
+ if (origin != null) {
+ originResourceSet = origin.getResourceSet();
+ if (originResourceSet != null) {
+ EcoreUtil.resolveAll(originResourceSet);
+ }
+ }
+
+ final IComparisonScope scope;
+ if (leftResourceSet != null && rightResourceSet != null) {
+ scope = new DefaultComparisonScope(leftResourceSet, rightResourceSet, originResourceSet);
+ } else {
+ scope = new DefaultComparisonScope(left, right, origin);
+ }
final Builder builder = EMFCompare.builder();
EMFCompareBuilderConfigurator.createDefault().configure(builder);
return builder.build().compare(scope);
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/suite/AllTests.java b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/suite/AllTests.java
index 65a6da209..e8f865081 100644
--- a/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/suite/AllTests.java
+++ b/plugins/org.eclipse.emf.compare.rcp.ui.tests/src/org/eclipse/emf/compare/rcp/ui/tests/suite/AllTests.java
@@ -21,6 +21,7 @@ import org.eclipse.emf.compare.rcp.ui.tests.mergeviewer.item.MergeViewerItemTest
import org.eclipse.emf.compare.rcp.ui.tests.structuremergeviewer.filters.TechnicalitiesFilterTests;
import org.eclipse.emf.compare.rcp.ui.tests.structuremergeviewer.filters.TestFeatureMapDifferencesFilter;
import org.eclipse.emf.compare.rcp.ui.tests.structuremergeviewer.groups.ConflictsGroupTest;
+import org.eclipse.emf.compare.rcp.ui.tests.structuremergeviewer.groups.ResourceAttachmentChangeInGroupsTest;
import org.eclipse.emf.compare.rcp.ui.tests.structuremergeviewer.groups.TestBasicDifferenceGroupImpl;
import org.eclipse.emf.compare.rcp.ui.tests.structuremergeviewer.groups.provider.TestComparisonTreeNodeItemProviderSpec;
import org.eclipse.emf.compare.rcp.ui.tests.structuremergeviewer.groups.provider.TestMatchTreeNodeItemProviderSpec;
@@ -47,7 +48,7 @@ import junit.textui.TestRunner;
TestBasicDifferenceGroupImpl.class, BugsTestSuite.class, TestFeatureMapDifferencesFilter.class,
RCPMatchEngineFactoryRegistryTest.class, ThreeWayComparisonGroupProviderTest.class,
ConflictsGroupTest.class, MatchAccessorTest.class, TechnicalitiesFilterTests.class,
- MatchOfContainmentReferenceChangeAdapterTest.class })
+ MatchOfContainmentReferenceChangeAdapterTest.class, ResourceAttachmentChangeInGroupsTest.class })
public class AllTests {
/**
* Launches the test with the given arguments.
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/BasicDifferenceGroupImpl.java b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/BasicDifferenceGroupImpl.java
index ff5af1fdc..12a0c9c4b 100644
--- a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/BasicDifferenceGroupImpl.java
+++ b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/BasicDifferenceGroupImpl.java
@@ -477,9 +477,11 @@ public class BasicDifferenceGroupImpl extends AdapterImpl implements IDifference
* The diff to add
*/
protected void addDiffNode(MatchNode matchNode, Diff diff) {
- DiffNode diffNode = createDiffNode(diff);
- handleRefiningDiffs(diffNode);
- matchNode.addDiffNode(diffNode);
+ if (!(diff instanceof ResourceAttachmentChange)) {
+ DiffNode diffNode = createDiffNode(diff);
+ handleRefiningDiffs(diffNode);
+ matchNode.addDiffNode(diffNode);
+ }
}
/**
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ByResourceGroupProvider.java b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ByResourceGroupProvider.java
index a08a901d8..f26ed2fde 100644
--- a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ByResourceGroupProvider.java
+++ b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ByResourceGroupProvider.java
@@ -128,7 +128,9 @@ public class ByResourceGroupProvider extends AbstractDifferenceGroupProvider {
|| isUnderResourceWithURI(match.getOrigin(), matchResource.getOriginURI())) {
MatchNode matchNode = createMatchNode(match);
populateMatchNode(matchNode);
- matchResourceNode.addMatchNode(matchNode);
+ if (!matchNode.getChildren().isEmpty()) {
+ matchResourceNode.addMatchNode(matchNode);
+ }
}
}
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ThreeWayComparisonGroupProvider.java b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ThreeWayComparisonGroupProvider.java
index 60664fa94..1e3fc07d2 100644
--- a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ThreeWayComparisonGroupProvider.java
+++ b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ThreeWayComparisonGroupProvider.java
@@ -65,6 +65,8 @@ import org.eclipse.emf.compare.provider.utils.IStyledString.Style;
import org.eclipse.emf.compare.rcp.ui.internal.EMFCompareRCPUIMessages;
import org.eclipse.emf.compare.rcp.ui.internal.configuration.SideLabelProvider;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.nodes.ConflictNode;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.nodes.DiffNode;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.nodes.MatchNode;
import org.eclipse.emf.compare.rcp.ui.structuremergeviewer.groups.AbstractDifferenceGroupProvider;
import org.eclipse.emf.compare.rcp.ui.structuremergeviewer.groups.IDifferenceGroup;
import org.eclipse.emf.compare.scope.IComparisonScope;
@@ -277,6 +279,21 @@ public class ThreeWayComparisonGroupProvider extends AbstractDifferenceGroupProv
ret.append(getName());
return ret;
}
+
+ /**
+ * In the conflicts group, we want to be able to see the ResourceAttachmentChanges.
+ *
+ * @param matchNode
+ * The given match node
+ * @param diff
+ * The diff to add
+ */
+ @Override
+ protected void addDiffNode(MatchNode matchNode, Diff diff) {
+ DiffNode diffNode = createDiffNode(diff);
+ handleRefiningDiffs(diffNode);
+ matchNode.addDiffNode(diffNode);
+ }
}
/**

Back to the top