Author: tomekr
Date: Wed Nov 28 13:39:13 2018
New Revision: 1847638

URL: http://svn.apache.org/viewvc?rev=1847638&view=rev
Log:
OAK-7923: CompositeNodeBuilder#getPath() fails when it wraps a ReadOnlyBuilder

Modified:
    
jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeBuilder.java
    
jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeState.java

Modified: 
jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeBuilder.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeBuilder.java?rev=1847638&r1=1847637&r2=1847638&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeBuilder.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeBuilder.java
 Wed Nov 28 13:39:13 2018
@@ -47,9 +47,12 @@ class CompositeNodeBuilder implements No
 
     private final NodeMap<NodeBuilder> nodeBuilders;
 
-    CompositeNodeBuilder(NodeMap<NodeBuilder> nodeBuilders, CompositionContext 
ctx) {
+    private final String path;
+
+    CompositeNodeBuilder(NodeMap<NodeBuilder> nodeBuilders, CompositionContext 
ctx, String path) {
         this.ctx = ctx;
         this.nodeBuilders = nodeBuilders;
+        this.path = path;
         ctx.getNodeBuilderMonitor().onCreateNodeObject(getPath());
     }
 
@@ -216,7 +219,7 @@ class CompositeNodeBuilder implements No
             ctx.getNodeBuilderMonitor().onSwitchNodeToNative(mns.getMount());
             return nodeBuilders.get(mns).getChildNode(name);
         }
-        return new CompositeNodeBuilder(nodeBuilders.lazyApply((mns, b) -> 
b.getChildNode(name)), ctx);
+        return new CompositeNodeBuilder(nodeBuilders.lazyApply((mns, b) -> 
b.getChildNode(name)), ctx, childPath);
     }
 
     @Override
@@ -243,7 +246,7 @@ class CompositeNodeBuilder implements No
         if (!ctx.shouldBeComposite(childPath)) {
             return childBuilder;
         }
-        return new CompositeNodeBuilder(nodeBuilders.lazyApply((mns, b) -> 
b.getChildNode(name)).replaceNode(childStore, childBuilder), ctx);
+        return new CompositeNodeBuilder(nodeBuilders.lazyApply((mns, b) -> 
b.getChildNode(name)).replaceNode(childStore, childBuilder), ctx, childPath);
     }
 
     @Override
@@ -266,7 +269,7 @@ class CompositeNodeBuilder implements No
     }
 
     String getPath() {
-        return ((MemoryNodeBuilder) getWrappedNodeBuilder()).getPath();
+        return path;
     }
 
     private boolean belongsToStore(MountedNodeStore mns, String childName) {

Modified: 
jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeState.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeState.java?rev=1847638&r1=1847637&r2=1847638&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeState.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeState.java
 Wed Nov 28 13:39:13 2018
@@ -185,7 +185,7 @@ class CompositeNodeState extends Abstrac
             } else {
                 return n.builder();
             }
-        }), ctx);
+        }), ctx, path);
     }
 
     private NodeState getWrappedNodeState() {


Reply via email to