Index: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeBuilder.java =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeBuilder.java (revision 1633285) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeBuilder.java (working copy) @@ -16,6 +16,10 @@ */ package org.apache.jackrabbit.oak.plugins.segment; +import java.io.IOException; +import java.io.InputStream; + +import org.apache.jackrabbit.oak.api.Blob; import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeBuilder; import org.apache.jackrabbit.oak.spi.state.NodeState; @@ -47,6 +51,12 @@ this.writer = writer; } + SegmentNodeBuilder(SegmentNodeBuilder parent, String name, + SegmentWriter writer) { + super(parent, name); + this.writer = writer; + } + //-------------------------------------------------< MemoryNodeBuilder >-- @Override @@ -59,11 +69,11 @@ //-------------------------------------------------------< NodeBuilder >-- - @Override - public SegmentNodeState getBaseState() { - // guaranteed to be a SegmentNodeState - return (SegmentNodeState) super.getBaseState(); - } +// @Override +// public SegmentNodeState getBaseState() { +// // guaranteed to be a SegmentNodeState +// return (SegmentNodeState) super.getBaseState(); +// } @Override public SegmentNodeState getNodeState() { @@ -76,4 +86,15 @@ return sstate; } + @Override + protected MemoryNodeBuilder createChildBuilder(String name) { + return new SegmentNodeBuilder(this, name, writer); + } + + @Override + public Blob createBlob(InputStream stream) throws IOException { + SegmentNodeState sns = getNodeState(); + return sns.getTracker().getWriter().writeStream(stream); + } + } Index: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java (revision 1633285) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java (working copy) @@ -162,7 +162,7 @@ SegmentNodeBuilder snb = (SegmentNodeBuilder) builder; NodeState root = getRoot(); - SegmentNodeState before = snb.getBaseState(); + NodeState before = snb.getBaseState(); if (!fastEquals(before, root)) { SegmentNodeState after = snb.getNodeState(); snb.reset(root); @@ -307,7 +307,7 @@ private final Random random = new Random(); - private SegmentNodeState before; + private NodeState before; private SegmentNodeState after; @@ -326,7 +326,7 @@ } private boolean setHead(SegmentNodeBuilder builder) { - SegmentNodeState before = builder.getBaseState(); + SegmentNodeState before = (SegmentNodeState) builder.getBaseState(); SegmentNodeState after = builder.getNodeState(); refreshHead();