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