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/04/24 15:20:03 UTC
svn commit: r1329706 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/kernel/KernelRoot.java
test/java/org/apache/jackrabbit/oak/kernel/KernelRootTest.java
Author: mduerig
Date: Tue Apr 24 13:20:02 2012
New Revision: 1329706
URL: http://svn.apache.org/viewvc?rev=1329706&view=rev
Log:
OAK-18: Define Oak API
- cleanup test cases to use only public api
- inline package private methods previously used by test cases
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRoot.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelRootTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRoot.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRoot.java?rev=1329706&r1=1329705&r2=1329706&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRoot.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRoot.java Tue Apr 24 13:20:02 2012
@@ -108,7 +108,9 @@ public class KernelRoot implements Root
public void commit() throws CommitFailedException {
MicroKernel kernel = ((KernelNodeStore) store).kernel; // FIXME don't cast to implementation
try {
- mergeInto(kernel, base);
+ String targetPath = base.getPath();
+ String targetRevision = base.getRevision();
+ kernel.commit(targetPath, changeLog.toJsop(), targetRevision, null);
changeLog = new ChangeLog();
refresh();
} catch (MicroKernelException e) {
@@ -127,20 +129,6 @@ public class KernelRoot implements Root
}
/**
- * Atomically merges the changes from this tree back into the {@code target}.
- *
- * @param microkernel Microkernel instance for applying the changes
- * @param target target of the merge operation
- * @return node state resulting from merging
- */
- KernelNodeState mergeInto(MicroKernel microkernel, KernelNodeState target) { // TODO refactor into commit
- String targetPath = target.getPath();
- String targetRevision = target.getRevision();
- String rev = microkernel.commit(targetPath, changeLog.toJsop(), targetRevision, null);
- return new KernelNodeState(microkernel, targetPath, rev);
- }
-
- /**
* Get a transient node state for the node identified by
* {@code path}
* @param path the path to the node state
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelRootTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelRootTest.java?rev=1329706&r1=1329705&r2=1329706&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelRootTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelRootTest.java Tue Apr 24 13:20:02 2012
@@ -44,38 +44,35 @@ public class KernelRootTest {
private final MicroKernel microkernel = new SimpleKernelImpl("mem:");
private final KernelNodeStore store = new KernelNodeStore(microkernel);
- private KernelNodeState state;
-
@Before
public void setUp() {
String jsop =
"+\"test\":{\"a\":1,\"b\":2,\"c\":3,"
+ "\"x\":{},\"y\":{},\"z\":{}}";
- String revision = microkernel.commit(
- "/", jsop, microkernel.getHeadRevision(), "test data");
- state = new KernelNodeState(microkernel, "/test", revision);
+ microkernel.commit("/", jsop, microkernel.getHeadRevision(), "test data");
}
@Test
public void getChild() {
- KernelRoot branch = new KernelRoot(store, "test");
- Tree root = branch.getTree("/");
+ KernelRoot root = new KernelRoot(store, "test");
+ Tree tree = root.getTree("/");
- Tree child = root.getChild("any");
+ Tree child = tree.getChild("any");
assertNull(child);
- child = root.getChild("x");
+ child = tree.getChild("x");
assertNotNull(child);
}
@Test
public void getProperty() {
- KernelRoot branch = new KernelRoot(store, "test");
- Tree root = branch.getTree("/");
- PropertyState propertyState = root.getProperty("any");
+ KernelRoot root = new KernelRoot(store, "test");
+ Tree tree = root.getTree("/");
+
+ PropertyState propertyState = tree.getProperty("any");
assertNull(propertyState);
- propertyState = root.getProperty("a");
+ propertyState = tree.getProperty("a");
assertNotNull(propertyState);
assertFalse(propertyState.isArray());
assertEquals(Scalar.Type.LONG, propertyState.getScalar().getType());
@@ -84,9 +81,10 @@ public class KernelRootTest {
@Test
public void getChildren() {
- KernelRoot branch = new KernelRoot(store, "test");
- Tree root = branch.getTree("/");
- Iterable<Tree> children = root.getChildren();
+ KernelRoot root = new KernelRoot(store, "test");
+ Tree tree = root.getTree("/");
+
+ Iterable<Tree> children = tree.getChildren();
Set<String> expectedPaths = new HashSet<String>();
Collections.addAll(expectedPaths, "x", "y", "z");
@@ -96,20 +94,20 @@ public class KernelRootTest {
}
assertTrue(expectedPaths.isEmpty());
- assertEquals(3, root.getChildrenCount());
+ assertEquals(3, tree.getChildrenCount());
}
@Test
public void getProperties() {
- KernelRoot branch = new KernelRoot(store, "test");
- Tree root = branch.getTree("/");
+ KernelRoot root = new KernelRoot(store, "test");
+ Tree tree = root.getTree("/");
Map<String, Scalar> expectedProperties = new HashMap<String, Scalar>();
expectedProperties.put("a", ScalarImpl.longScalar(1));
expectedProperties.put("b", ScalarImpl.longScalar(2));
expectedProperties.put("c", ScalarImpl.longScalar(3));
- Iterable<PropertyState> properties = root.getProperties();
+ Iterable<PropertyState> properties = tree.getProperties();
for (PropertyState property : properties) {
Scalar value = expectedProperties.remove(property.getName());
assertNotNull(value);
@@ -119,58 +117,60 @@ public class KernelRootTest {
assertTrue(expectedProperties.isEmpty());
- assertEquals(3, root.getPropertyCount());
+ assertEquals(3, tree.getPropertyCount());
}
@Test
public void addChild() throws CommitFailedException {
- KernelRoot branch = new KernelRoot(store, "test");
- Tree root = branch.getTree("/");
+ KernelRoot root = new KernelRoot(store, "test");
+ Tree tree = root.getTree("/");
- assertFalse(root.hasChild("new"));
- Tree added = root.addChild("new");
+ assertFalse(tree.hasChild("new"));
+ Tree added = tree.addChild("new");
assertNotNull(added);
assertEquals("new", added.getName());
- assertTrue(root.hasChild("new"));
+ assertTrue(tree.hasChild("new"));
- branch.commit();
+ root.commit();
+ tree = root.getTree("/");
- root = branch.getTree("/");
- assertTrue(root.hasChild("new"));
+ assertTrue(tree.hasChild("new"));
}
@Test
- public void addExistingChild() {
- KernelRoot branch = new KernelRoot(store, "test");
- Tree root = branch.getTree("/");
+ public void addExistingChild() throws CommitFailedException {
+ KernelRoot root = new KernelRoot(store, "test");
+ Tree tree = root.getTree("/");
+
+ assertFalse(tree.hasChild("new"));
+ tree.addChild("new");
- assertFalse(root.hasChild("new"));
- root.addChild("new");
- branch.mergeInto(microkernel, state);
+ root.commit();
+ tree = root.getTree("/");
- branch = new KernelRoot(store, "test");
- root = branch.getTree("/");
- assertTrue(root.hasChild("new"));
- Tree added = root.addChild("new");
+ assertTrue(tree.hasChild("new"));
+ Tree added = tree.addChild("new");
assertNotNull(added);
assertEquals("new", added.getName());
}
@Test
- public void removeChild() {
- KernelRoot branch = new KernelRoot(store, "test");
- Tree root = branch.getTree("/");
+ public void removeChild() throws CommitFailedException {
+ KernelRoot root = new KernelRoot(store, "test");
+ Tree tree = root.getTree("/");
- assertTrue(root.hasChild("x"));
- root.removeChild("x");
- assertFalse(root.hasChild("x"));
+ assertTrue(tree.hasChild("x"));
+ tree.removeChild("x");
+ assertFalse(tree.hasChild("x"));
- NodeState newState = branch.mergeInto(microkernel, state);
- assertNull(newState.getChildNode("x"));
+ root.commit();
+ tree = root.getTree("/");
+
+ assertFalse(tree.hasChild("x"));
}
@Test
- public void setProperty() {
+ public void setProperty() throws CommitFailedException {
KernelRoot root = new KernelRoot(store, "test");
Tree tree = root.getTree("/");
@@ -182,15 +182,17 @@ public class KernelRootTest {
assertEquals("new", property.getName());
assertEquals(value, property.getScalar());
- NodeState newState = root.mergeInto(microkernel, state);
- property = newState.getProperty("new");
+ root.commit();
+ tree = root.getTree("/");
+
+ property = tree.getProperty("new");
assertNotNull(property);
assertEquals("new", property.getName());
assertEquals(value, property.getScalar());
}
@Test
- public void removeProperty() {
+ public void removeProperty() throws CommitFailedException {
KernelRoot root = new KernelRoot(store, "test");
Tree tree = root.getTree("/");
@@ -198,29 +200,34 @@ public class KernelRootTest {
tree.removeProperty("a");
assertFalse(tree.hasProperty("a"));
- NodeState newState = root.mergeInto(microkernel, state);
- assertNull(newState.getProperty("a"));
+ root.commit();
+ tree = root.getTree("/");
+
+ assertFalse(tree.hasProperty("a"));
}
@Test
- public void move() {
+ public void move() throws CommitFailedException {
KernelRoot root = new KernelRoot(store, "test");
Tree tree = root.getTree("/");
+
Tree y = tree.getChild("y");
assertTrue(tree.hasChild("x"));
root.move("x", "y/xx");
assertFalse(tree.hasChild("x"));
assertTrue(y.hasChild("xx"));
+
+ root.commit();
+ tree = root.getTree("/");
- NodeState newState = root.mergeInto(microkernel, state);
- assertNull(newState.getChildNode("x"));
- assertNotNull(newState.getChildNode("y"));
- assertNotNull(newState.getChildNode("y").getChildNode("xx"));
+ assertFalse(tree.hasChild("x"));
+ assertTrue(tree.hasChild("y"));
+ assertTrue(tree.getChild("y").hasChild("xx"));
}
@Test
- public void rename() {
+ public void rename() throws CommitFailedException {
KernelRoot root = new KernelRoot(store, "test");
Tree tree = root.getTree("/");
@@ -228,33 +235,39 @@ public class KernelRootTest {
root.move("x", "xx");
assertFalse(tree.hasChild("x"));
assertTrue(tree.hasChild("xx"));
+
+ root.commit();
+ tree = root.getTree("/");
- NodeState newState = root.mergeInto(microkernel, state);
- assertNull(newState.getChildNode("x"));
- assertNotNull(newState.getChildNode("xx"));
+ assertFalse(tree.hasChild("x"));
+ assertTrue(tree.hasChild("xx"));
}
@Test
- public void copy() {
+ public void copy() throws CommitFailedException {
KernelRoot root = new KernelRoot(store, "test");
Tree tree = root.getTree("/");
+
Tree y = tree.getChild("y");
assertTrue(tree.hasChild("x"));
root.copy("x", "y/xx");
assertTrue(tree.hasChild("x"));
assertTrue(y.hasChild("xx"));
+
+ root.commit();
+ tree = root.getTree("/");
- NodeState newState = root.mergeInto(microkernel, state);
- assertNotNull(newState.getChildNode("x"));
- assertNotNull(newState.getChildNode("y"));
- assertNotNull(newState.getChildNode("y").getChildNode("xx"));
+ assertTrue(tree.hasChild("x"));
+ assertTrue(tree.hasChild("y"));
+ assertTrue(tree.getChild("y").hasChild("xx"));
}
@Test
- public void deepCopy() {
+ public void deepCopy() throws CommitFailedException {
KernelRoot root = new KernelRoot(store, "test");
Tree tree = root.getTree("/");
+
Tree y = tree.getChild("y");
root.getTree("x").addChild("x1");
@@ -262,21 +275,24 @@ public class KernelRootTest {
assertTrue(y.hasChild("xx"));
assertTrue(y.getChild("xx").hasChild("x1"));
- NodeState newState = root.mergeInto(microkernel, state);
- assertNotNull(newState.getChildNode("x"));
- assertNotNull(newState.getChildNode("y"));
- assertNotNull(newState.getChildNode("y").getChildNode("xx"));
- assertNotNull(newState.getChildNode("y").getChildNode("xx").getChildNode("x1"));
-
- NodeState x = newState.getChildNode("x");
- NodeState xx = newState.getChildNode("y").getChildNode("xx");
- assertEquals(x, xx);
+ root.commit();
+ tree = root.getTree("/");
+
+ assertTrue(tree.hasChild("x"));
+ assertTrue(tree.hasChild("y"));
+ assertTrue(tree.getChild("y").hasChild("xx"));
+ assertTrue(tree.getChild("y").getChild("xx").hasChild("x1"));
+
+ Tree x = tree.getChild("x");
+ Tree xx = tree.getChild("y").getChild("xx");
+ checkEqual(x, xx);
}
@Test
public void getChildrenCount() {
KernelRoot root = new KernelRoot(store, "test");
Tree tree = root.getTree("/");
+
assertEquals(3, tree.getChildrenCount());
tree.removeChild("x");
@@ -293,6 +309,7 @@ public class KernelRootTest {
public void getPropertyCount() {
KernelRoot root = new KernelRoot(store, "test");
Tree tree = root.getTree("/");
+
assertEquals(3, tree.getPropertyCount());
Scalar value = ScalarImpl.stringScalar("foo");
@@ -310,7 +327,7 @@ public class KernelRootTest {
}
@Test
- public void largeChildList() {
+ public void largeChildList() throws CommitFailedException {
KernelRoot root = new KernelRoot(store, "test");
Tree tree = root.getTree("/");
@@ -320,8 +337,7 @@ public class KernelRootTest {
tree.addChild("n" + c);
}
- root.mergeInto(microkernel, state);
- root = new KernelRoot(store, "test");
+ root.commit();
tree = root.getTree("/");
tree = tree.getChild("large");
@@ -329,7 +345,20 @@ public class KernelRootTest {
for (Tree q : tree.getChildren()) {
assertEquals("n" + c++, q.getName());
}
+ }
+
+ private static void checkEqual(Tree tree1, Tree tree2) {
+ assertEquals(tree1.getChildrenCount(), tree2.getChildrenCount());
+ assertEquals(tree1.getPropertyCount(), tree2.getPropertyCount());
+
+ for (PropertyState property1 : tree1.getProperties()) {
+ assertEquals(property1, tree2.getProperty(property1.getName()));
+ }
+ for (Tree child1 : tree1.getChildren()) {
+ checkEqual(child1, tree2.getChild(child1.getName()));
+ }
}
+
}