diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/core/SecureNodeBuilder.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/core/SecureNodeBuilder.java index eaee2cf..401ea86 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/core/SecureNodeBuilder.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/core/SecureNodeBuilder.java @@ -322,10 +322,19 @@ class SecureNodeBuilder implements NodeBuilder { return new SecureNodeBuilder(this, name); } + private SecureNodeBuilder lastChildNode; + @Nonnull @Override public NodeBuilder getChildNode(@Nonnull String name) { - return new SecureNodeBuilder(this, name); + SecureNodeBuilder lastChildNodeRefCopy = this.lastChildNode; + if (lastChildNodeRefCopy != null && lastChildNodeRefCopy.name.equals(name)) { + return lastChildNodeRefCopy; + } else { + SecureNodeBuilder childNode = new SecureNodeBuilder(this, name); + this.lastChildNode = childNode; + return childNode; + } } @Override