You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2017/10/30 09:17:51 UTC

svn commit: r1813739 - in /jackrabbit/oak/trunk: oak-it/src/test/java/org/apache/jackrabbit/oak/spi/state/NodeBuilderTest.java oak-store-spi/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MutableNodeState.java

Author: mduerig
Date: Mon Oct 30 09:17:51 2017
New Revision: 1813739

URL: http://svn.apache.org/viewvc?rev=1813739&view=rev
Log:
OAK-6877: NodeBuilder#isReplaced behaves incorrectly for SegmentNodeStore
Don't use reference equality to determine whether the base state of a MutableNodeState has been changed.

Modified:
    jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/spi/state/NodeBuilderTest.java
    jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MutableNodeState.java

Modified: jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/spi/state/NodeBuilderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/spi/state/NodeBuilderTest.java?rev=1813739&r1=1813738&r2=1813739&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/spi/state/NodeBuilderTest.java (original)
+++ jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/spi/state/NodeBuilderTest.java Mon Oct 30 09:17:51 2017
@@ -91,6 +91,18 @@ public class NodeBuilderTest extends Oak
         assertEquals(store.getRoot(), root.getBaseState());
     }
 
+    @Test
+    public void isReplacedBehaviour() throws Exception{
+        NodeBuilder nb = store.getRoot().builder();
+        nb.child("a").setProperty("foo", "bar");
+
+        store.merge(nb, EmptyHook.INSTANCE, CommitInfo.EMPTY);
+
+        nb = store.getRoot().builder();
+        nb.child("a").child("b");
+        assertFalse(nb.getChildNode("a").isReplaced("foo"));
+    }
+
     private static void modify(NodeStore store) throws CommitFailedException {
         NodeBuilder root = store.getRoot().builder();
         root.setChildNode("added");

Modified: jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MutableNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MutableNodeState.java?rev=1813739&r1=1813738&r2=1813739&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MutableNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MutableNodeState.java Mon Oct 30 09:17:51 2017
@@ -164,7 +164,7 @@ class MutableNodeState extends AbstractN
 
     boolean isReplaced(NodeState before, String name) {
         return before.hasProperty(name)
-                && (base != before || properties.containsKey(name));
+                && (!base.equals(before) || properties.containsKey(name));
     }
 
     /**