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 2013/03/07 13:49:14 UTC

svn commit: r1453827 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java test/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilderTest.java

Author: mduerig
Date: Thu Mar  7 12:49:14 2013
New Revision: 1453827

URL: http://svn.apache.org/r1453827
Log:
OAK-679: Allow read access to disconnected node builders
reverting changes as discussed for OAK-101

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilderTest.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=1453827&r1=1453826&r2=1453827&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 Mar  7 12:49:14 2013
@@ -225,13 +225,13 @@ public class MemoryNodeBuilder implement
 
             return false;
         }
-        assert classInvariants();
-        return true;
+        return writeState != null || baseState != null;
     }
 
     @Nonnull
     private NodeState read() {
-        updateReadState();
+        checkState(updateReadState(), "This node has been removed or is disconnected");
+        assert classInvariants();
         return writeState != null ? writeState : baseState;
     }
 
@@ -473,8 +473,6 @@ public class MemoryNodeBuilder implement
         boolean modified = writeState != null && (writeState.base != baseState || writeState.nodes.containsKey(name));
         if (!hasBaseState(name) || modified) {
             builder.write(root.revision + 1, true);
-        } else {
-            builder.read();
         }
         return builder;
     }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilderTest.java?rev=1453827&r1=1453826&r2=1453827&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilderTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilderTest.java Thu Mar  7 12:49:14 2013
@@ -106,15 +106,14 @@ public class MemoryNodeBuilderTest {
         for (String name : new String[] {"x", "new"}) {
             NodeBuilder root = new MemoryNodeBuilder(BASE);
             NodeBuilder child = root.child(name);
-            child.child("q");
 
             root.removeNode(name);
-            assertEquals(1, child.getChildNodeCount());
-
             try {
-                child.setProperty("p", "v");
+                child.getChildNodeCount();
                 fail();
-            } catch (IllegalStateException expected) {}
+            } catch (IllegalStateException e) {
+                // expected
+            }
 
             root.child(name);
             assertEquals(0, child.getChildNodeCount()); // reconnect!
@@ -183,4 +182,14 @@ public class MemoryNodeBuilderTest {
         assertEquals(x.getBaseState(), x.getNodeState());
     }
 
+    @Test(expected = IllegalStateException.class)
+    public void testReadOnRemovedNode() {
+        NodeBuilder root = new MemoryNodeBuilder(BASE);
+        NodeBuilder m = root.child("m");
+        NodeBuilder n = m.child("n");
+
+        root.removeNode("m");
+        n.hasChildNode("any");
+    }
+
 }