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