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));
         }