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/04 18:33:01 UTC
svn commit: r1309484 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/kernel/TransientNodeState.java
test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditorTest.java
Author: mduerig
Date: Wed Apr 4 16:33:00 2012
New Revision: 1309484
URL: http://svn.apache.org/viewvc?rev=1309484&view=rev
Log:
OAK-9: Internal tree builder
fix copy constructor
add deep copy test
add tests for child node count and property count
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/TransientNodeState.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditorTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/TransientNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/TransientNodeState.java?rev=1309484&r1=1309483&r2=1309484&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/TransientNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/TransientNodeState.java Wed Apr 4 16:33:00 2012
@@ -132,14 +132,14 @@ public class TransientNodeState {
this.name = name;
// recursively copy all existing node states
- for (Entry<String, TransientNodeState> existing : existingChildNodes.entrySet()) {
+ for (Entry<String, TransientNodeState> existing : state.existingChildNodes.entrySet()) {
String existingName = existing.getKey();
this.existingChildNodes.put(existingName,
new TransientNodeState(existing.getValue(), this, existingName));
}
// recursively copy all added node states
- for (Entry<String, TransientNodeState> added : addedNodes.entrySet()) {
+ for (Entry<String, TransientNodeState> added : state.addedNodes.entrySet()) {
String addedName = added.getKey();
this.addedNodes.put(addedName,
new TransientNodeState(added.getValue(), this, addedName));
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditorTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditorTest.java?rev=1309484&r1=1309483&r2=1309484&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditorTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditorTest.java Wed Apr 4 16:33:00 2012
@@ -93,6 +93,8 @@ public class KernelNodeStateEditorTest {
assertTrue(expectedPaths.remove(node.getPath()));
}
assertTrue(expectedPaths.isEmpty());
+
+ assertEquals(3, transientState.getChildNodeCount());
}
@Test
@@ -114,6 +116,8 @@ public class KernelNodeStateEditorTest {
}
assertTrue(expectedProperties.isEmpty());
+
+ assertEquals(3, transientState.getPropertyCount());
}
@Test
@@ -209,4 +213,22 @@ public class KernelNodeStateEditorTest {
assertNotNull(newState.getChildNode("y").getChildNode("xx"));
}
+ @Test
+ public void deepCopy() {
+ KernelNodeStateEditor editor = new KernelNodeStateEditor(state);
+ TransientNodeState transientState = editor.getTransientState();
+ TransientNodeState y = transientState.getChildNode("y");
+
+ editor.edit("x").addNode("x1");
+ editor.copy("x", "y/xx");
+ assertTrue(y.hasNode("xx"));
+ assertTrue(y.getChildNode("xx").hasNode("x1"));
+
+ NodeState newState = editor.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"));
+ }
+
}