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/06 18:50:36 UTC
svn commit: r1453455 - 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: Wed Mar 6 17:50:36 2013
New Revision: 1453455
URL: http://svn.apache.org/r1453455
Log:
OAK-679: Allow read access to disconnected node builders
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=1453455&r1=1453454&r2=1453455&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 Wed Mar 6 17:50:36 2013
@@ -225,13 +225,13 @@ public class MemoryNodeBuilder implement
return false;
}
- return writeState != null || baseState != null;
+ assert classInvariants();
+ return true;
}
@Nonnull
private NodeState read() {
- checkState(updateReadState(), "This node has been removed or is disconnected");
- assert classInvariants();
+ updateReadState();
return writeState != null ? writeState : baseState;
}
@@ -473,6 +473,8 @@ 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=1453455&r1=1453454&r2=1453455&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 Wed Mar 6 17:50:36 2013
@@ -106,14 +106,15 @@ 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.getChildNodeCount();
+ child.setProperty("p", "v");
fail();
- } catch (IllegalStateException e) {
- // expected
- }
+ } catch (IllegalStateException expected) {}
root.child(name);
assertEquals(0, child.getChildNodeCount()); // reconnect!
@@ -182,14 +183,4 @@ 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");
- }
-
}