Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2019-10-30 16:20:46 +0000
committerEike Stepper2019-10-30 16:20:46 +0000
commitc9c07f7e1cf23236d5dd73ae631d28aeee33d510 (patch)
tree1bcc4d7f2f318c5d9f5ba487e3795c444152de97 /plugins/org.eclipse.emf.cdo.tests/src/org/eclipse
parente064154d851a765006f3bbc54901f68a70f4c2c8 (diff)
downloadcdo-c9c07f7e1cf23236d5dd73ae631d28aeee33d510.tar.gz
cdo-c9c07f7e1cf23236d5dd73ae631d28aeee33d510.tar.xz
cdo-c9c07f7e1cf23236d5dd73ae631d28aeee33d510.zip
[540266] "Duplicate path" exception when moving an existing CDOResourceNode to a different folder
https://bugs.eclipse.org/bugs/show_bug.cgi?id=540266
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.tests/src/org/eclipse')
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ResourceTest.java46
1 files changed, 46 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ResourceTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ResourceTest.java
index 5f2468a3b6..163fe22f71 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ResourceTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ResourceTest.java
@@ -678,6 +678,52 @@ public class ResourceTest extends AbstractCDOTest
assertEquals(true, CDOIDUtil.isNull(data.getResourceID()));
}
+ public void testNoUneededResourcesLoadOnMove() throws Exception
+ {
+ CDOSession session = openSession();
+ CDOTransaction transaction = session.openTransaction();
+
+ // Fill folder1
+ transaction.createResource(getResourcePath("folder1/res1"));
+ transaction.createResource(getResourcePath("folder1/res2"));
+
+ // Fill folder2
+ transaction.createResource(getResourcePath("folder2/res3"));
+ transaction.createResource(getResourcePath("folder2/res4"));
+
+ transaction.commit();
+ session.close();
+ session = openSession();
+ transaction = session.openTransaction();
+ assertTrue(transaction.getResourceSet().getResources().isEmpty());
+
+ CDOResourceFolder folder1 = transaction.getResourceFolder(getResourcePath("folder1"));
+ CDOResourceFolder folder2 = transaction.getResourceFolder(getResourcePath("folder2"));
+ assertEquals(0, transaction.getResourceSet().getResources().size());
+
+ // The "no duplicates" validation should not trigger the load of other resources
+ folder1.addResource("res5");
+ assertEquals(1, transaction.getResourceSet().getResources().size());
+
+ // The "commit" operation should not trigger the load of other resources
+ transaction.commit();
+ assertEquals(1, transaction.getResourceSet().getResources().size());
+
+ CDOResource resource1 = transaction.getResource(getResourcePath("folder1/res1"));
+ assertEquals(2, transaction.getResourceSet().getResources().size());
+
+ // The "no duplicates" validation should not trigger the load of other resources
+ resource1.setFolder(folder2);
+ assertEquals(2, transaction.getResourceSet().getResources().size());
+
+ transaction.commit();
+ assertEquals(2, transaction.getResourceSet().getResources().size());
+
+ // The load of sibling resources is expected with an explicit call to getNodes().
+ folder1.getNodes().add(resource1);
+ assertEquals(3, transaction.getResourceSet().getResources().size());
+ }
+
public void testDuplicatePathAfterDetach() throws Exception
{
CDOSession session = openSession();

Back to the top