diff options
author | Eike Stepper | 2019-10-30 16:20:46 +0000 |
---|---|---|
committer | Eike Stepper | 2019-10-30 16:20:46 +0000 |
commit | c9c07f7e1cf23236d5dd73ae631d28aeee33d510 (patch) | |
tree | 1bcc4d7f2f318c5d9f5ba487e3795c444152de97 /plugins/org.eclipse.emf.cdo.tests/src/org/eclipse | |
parent | e064154d851a765006f3bbc54901f68a70f4c2c8 (diff) | |
download | cdo-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.java | 46 |
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(); |