Author: mreutegg
Date: Wed Nov 23 16:04:20 2016
New Revision: 1770995

URL: http://svn.apache.org/viewvc?rev=1770995&view=rev
Log:
OAK-5149: Set root revision for child nodes in DocumentNodeStore.getChildNodes()

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java?rev=1770995&r1=1770994&r2=1770995&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java
 Wed Nov 23 16:04:20 2016
@@ -512,7 +512,7 @@ public class DocumentNodeState extends A
                     @Nonnull
                     @Override
                     public NodeState getNodeState() {
-                        return input.withRootRevision(rootRevision, 
fromExternalChange);
+                        return input;
                     }
                 };
             }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java?rev=1770995&r1=1770994&r2=1770995&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
 Wed Nov 23 16:04:20 2016
@@ -1126,7 +1126,8 @@ public final class DocumentNodeStore
                             readRevision, p, cachedDocStr, uncachedDocStr);
                     throw new DocumentStoreException(exceptionMsg);
                 }
-                return result;
+                return result.withRootRevision(parent.getRootRevision(),
+                        parent.isFromExternalChange());
             }
         });
     }

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java?rev=1770995&r1=1770994&r2=1770995&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
 Wed Nov 23 16:04:20 2016
@@ -2839,6 +2839,35 @@ public class DocumentNodeStoreTest {
         assertFalse(finds.contains(Utils.getIdFromPath("/node-1/bar")));
     }
 
+    // OAK-5149
+    @Test
+    public void getChildNodesWithRootRevision() throws Exception {
+        DocumentNodeStore ns = builderProvider.newBuilder().getNodeStore();
+        NodeBuilder builder = ns.getRoot().builder();
+        builder.child("foo");
+        merge(ns, builder);
+
+        builder = ns.getRoot().builder();
+        builder.child("foo").child("bar");
+        merge(ns, builder);
+
+        builder = ns.getRoot().builder();
+        builder.child("foo").child("baz");
+        merge(ns, builder);
+
+        builder = ns.getRoot().builder();
+        builder.child("qux");
+        merge(ns, builder);
+
+        RevisionVector headRev = ns.getHeadRevision();
+        Iterable<DocumentNodeState> nodes = ns.getChildNodes(
+                asDocumentNodeState(ns.getRoot().getChildNode("foo")), null, 
10);
+        assertEquals(2, Iterables.size(nodes));
+        for (DocumentNodeState c : nodes) {
+            assertEquals(headRev, c.getRootRevision());
+        }
+    }
+
     private static class TestException extends RuntimeException {
 
     }


Reply via email to