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 2012/05/14 18:23:13 UTC
svn commit: r1338273 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java
test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreTest.java
Author: mduerig
Date: Mon May 14 16:23:13 2012
New Revision: 1338273
URL: http://svn.apache.org/viewvc?rev=1338273&view=rev
Log:
OAK-100: Proper CommitHook handling in NodeStore
- make NodeStore.getBuilder() work for NodeDecorator instances
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java?rev=1338273&r1=1338272&r2=1338273&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java Mon May 14 16:23:13 2012
@@ -97,12 +97,21 @@ public class KernelNodeStore extends Abs
@Override
public NodeStateBuilder getBuilder(NodeState base) {
- if (!(base instanceof KernelNodeState)) {
- throw new IllegalArgumentException("Alien node state " + base.getClass() + ": " + root);
+ if (base instanceof KernelNodeState) {
+ NodeStateBuilderContext context = new NodeStateBuilderContext((KernelNodeState) base);
+ return KernelNodeStateBuilder.create(context);
}
+ else if (base instanceof NodeStateBuilderContext.NodeDecorator) {
+ NodeState root = ((NodeStateBuilderContext.NodeDecorator) base).getRoot();
+ if (root != base) {
+ throw new IllegalArgumentException("Not root:" + base);
+ }
- NodeStateBuilderContext context = new NodeStateBuilderContext((KernelNodeState) base);
- return KernelNodeStateBuilder.create(context);
+ return KernelNodeStateBuilder.create(((NodeStateBuilderContext.NodeDecorator) base).getContext());
+ }
+ else {
+ throw new IllegalArgumentException("Alien node state " + base.getClass() + ": " + root);
+ }
}
@Override
@@ -505,9 +514,17 @@ public class KernelNodeStore extends Abs
return applyPendingChanges();
}
- NodeState getBase() {
+ KernelNodeState getBase() {
return base;
}
+
+ NodeStateBuilderContext getContext() {
+ return NodeStateBuilderContext.this;
+ }
+
+ NodeState getRoot() {
+ return root;
+ }
}
private class RootNodeDecorator extends NodeDecorator {
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreTest.java?rev=1338273&r1=1338272&r2=1338273&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreTest.java Mon May 14 16:23:13 2012
@@ -27,7 +27,6 @@ import org.apache.jackrabbit.oak.spi.com
import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.spi.state.NodeStateBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
-import org.junit.Ignore;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
@@ -111,7 +110,6 @@ public class KernelNodeStoreTest extends
}
@Test
- @Ignore ("WIP") // TODO OAK-100: NodeStore.getBuilder() only works for KernelNodeState type arguments
public void beforeCommitHook() throws CommitFailedException {
NodeState test = store.getRoot().getChildNode("test");
NodeStateBuilder testBuilder = store.getBuilder(test);
@@ -120,7 +118,6 @@ public class KernelNodeStoreTest extends
testBuilder.removeNode("a");
final CoreValue fortyTwo = store.getValueFactory().createValue(42);
newNodeBuilder.setProperty("n", fortyTwo);
- final NodeState testState = testBuilder.getNodeState();
commitWithHook(testBuilder.getNodeState(), new EmptyCommitHook() {
@Override
@@ -131,11 +128,12 @@ public class KernelNodeStoreTest extends
}
});
- assertNotNull(testState.getChildNode("newNode"));
- assertNotNull(testState.getChildNode("fromHook"));
- assertNull(testState.getChildNode("a"));
- assertEquals(fortyTwo, testState.getChildNode("newNode").getProperty("n").getValue());
- assertEquals(testState, store.getRoot().getChildNode("test"));
+ test = store.getRoot().getChildNode("test");
+ assertNotNull(test.getChildNode("newNode"));
+ assertNotNull(test.getChildNode("fromHook"));
+ assertNull(test.getChildNode("a"));
+ assertEquals(fortyTwo, test.getChildNode("newNode").getProperty("n").getValue());
+ assertEquals(test, store.getRoot().getChildNode("test"));
}