Author: tripod
Date: Tue Dec  3 15:13:13 2013
New Revision: 1547424

URL: http://svn.apache.org/r1547424
Log:
OAK-1257 Adding a new reference to an existing MV property deletes the back 
references of the old ones

- adding test case

Modified:
    jackrabbit/oak/trunk/oak-jcr/pom.xml
    
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferencesTest.java

Modified: jackrabbit/oak/trunk/oak-jcr/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/pom.xml?rev=1547424&r1=1547423&r2=1547424&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-jcr/pom.xml Tue Dec  3 15:13:13 2013
@@ -51,6 +51,7 @@
       org.apache.jackrabbit.test.api.WorkspaceMoveTest#testMoveNodesLocked     
                        <!-- OAK-118 -->
 
       org.apache.jackrabbit.oak.jcr.ReferencesTest#testWeakReferencesAddLater 
<!-- OAK-1242 -->
+      org.apache.jackrabbit.oak.jcr.ReferencesTest#testMVReferencesAltering 
<!-- OAK-1257 -->
 
       <!-- Locking : not fully implemented -->
       org.apache.jackrabbit.test.api.lock.LockTest#testNodeLocked

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferencesTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferencesTest.java?rev=1547424&r1=1547423&r2=1547424&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferencesTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferencesTest.java
 Tue Dec  3 15:13:13 2013
@@ -245,6 +245,45 @@ public class ReferencesTest extends Abst
         checkReferences("refs", ref1.getReferences(), n.getPath() + "/myref");
     }
 
+    // OAK-1257
+    public void testMVReferencesAltering() throws RepositoryException {
+        Node ref0 = testRootNode.addNode(nodeName2, testNodeType);
+        ref0.addMixin(mixReferenceable);
+        Node ref1 = testRootNode.addNode(nodeName3, testNodeType);
+        ref1.addMixin(mixReferenceable);
+        Node ref2 = testRootNode.addNode(nodeName4, testNodeType);
+        ref2.addMixin(mixReferenceable);
+        superuser.save();
+
+        Node n = testRootNode.addNode(nodeName1, testNodeType);
+        Value[] vs = new Value[]{
+                superuser.getValueFactory().createValue(ref0),
+                superuser.getValueFactory().createValue(ref1)
+        };
+        n.setProperty("myref", vs);
+        superuser.save();
+
+        assertEquals("ref0", ref0.getIdentifier(), 
n.getProperty("myref").getValues()[0].getString());
+        assertEquals("ref1", ref1.getIdentifier(), 
n.getProperty("myref").getValues()[1].getString());
+        checkReferences("refs", ref0.getReferences(), n.getPath() + "/myref");
+        checkReferences("refs", ref1.getReferences(), n.getPath() + "/myref");
+
+        vs = new Value[]{
+                superuser.getValueFactory().createValue(ref0),
+                superuser.getValueFactory().createValue(ref1),
+                superuser.getValueFactory().createValue(ref2)
+        };
+        n.setProperty("myref", vs);
+        superuser.save();
+
+        assertEquals("ref0", ref0.getIdentifier(), 
n.getProperty("myref").getValues()[0].getString());
+        assertEquals("ref1", ref1.getIdentifier(), 
n.getProperty("myref").getValues()[1].getString());
+        assertEquals("ref2", ref2.getIdentifier(), 
n.getProperty("myref").getValues()[2].getString());
+        checkReferences("refs", ref0.getReferences(), n.getPath() + "/myref");
+        checkReferences("refs", ref1.getReferences(), n.getPath() + "/myref");
+        checkReferences("refs", ref2.getReferences(), n.getPath() + "/myref");
+    }
+
     public void testVersionReferencesVH() throws RepositoryException {
         Node n = testRootNode.addNode(nodeName1, testNodeType);
         n.addMixin(mixVersionable);


Reply via email to