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 2014/01/16 16:39:52 UTC
svn commit: r1558838 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java
Author: mduerig
Date: Thu Jan 16 15:39:51 2014
New Revision: 1558838
URL: http://svn.apache.org/r1558838
Log:
OAK-659: Move purge logic for transient changes below the NodeBuilder interface
clarify usages of base instead of base()
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java?rev=1558838&r1=1558837&r2=1558838&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java Thu Jan 16 15:39:51 2014
@@ -127,7 +127,7 @@ public class MemoryNodeBuilder implement
this.rootBuilder = parent.rootBuilder;
this.base = parent.base().getChildNode(name);
this.baseRevision = parent.baseRevision;
- this.head = new UnconnectedHead();
+ this.head = new UnconnectedHead(baseRevision, base);
}
/**
@@ -611,8 +611,13 @@ public class MemoryNodeBuilder implement
}
private class UnconnectedHead extends Head {
- private long revision = baseRevision;
- private NodeState state = base;
+ private long revision;
+ private NodeState state;
+
+ UnconnectedHead(long revision, NodeState state) {
+ this.revision = revision;
+ this.state = state;
+ }
@Override
public Head update() {
@@ -687,7 +692,9 @@ public class MemoryNodeBuilder implement
if (revision != rootBuilder.baseRevision) {
// the root builder's base state has been reset: transition back
// to unconnected and connect again if necessary.
- return new UnconnectedHead().update();
+ // No need to pass base() instead of base as the subsequent
+ // call to update will take care of updating to the latest state.
+ return new UnconnectedHead(baseRevision, base).update();
} else {
return this;
}
@@ -734,6 +741,7 @@ public class MemoryNodeBuilder implement
private class RootHead extends ConnectedHead {
public RootHead() {
+ // Base of root is always up to date. No need to call base()
super(new MutableNodeState(base));
}