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/05 11:06:15 UTC
svn commit: r1309705 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/kernel/
test/java/org/apache/jackrabbit/oak/kernel/
Author: mduerig
Date: Thu Apr 5 09:06:15 2012
New Revision: 1309705
URL: http://svn.apache.org/viewvc?rev=1309705&view=rev
Log:
OAK-9: Internal tree builder
property and node count tests
fix: wrong property count if setting an existing property
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditor.java
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/KernelNodeStateEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditor.java?rev=1309705&r1=1309704&r2=1309705&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditor.java Thu Apr 5 09:06:15 2012
@@ -163,7 +163,7 @@ public class KernelNodeStateEditor imple
* @param target target of the merge operation
* @return node state resulting from merging
*/
- NodeState mergeInto(MicroKernel microkernel, KernelNodeState target) {
+ KernelNodeState mergeInto(MicroKernel microkernel, KernelNodeState target) {
String targetPath = target.getPath();
String targetRevision = target.getRevision();
String rev = microkernel.commit(targetPath, jsop.toString(), targetRevision, null);
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=1309705&r1=1309704&r2=1309705&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 Thu Apr 5 09:06:15 2012
@@ -346,6 +346,13 @@ public class TransientNodeState {
}
/**
+ * @return the name of this transient node state
+ */
+ String getName() {
+ return name;
+ }
+
+ /**
* @return relative path of this transient node state
*/
String getPath() {
@@ -388,6 +395,9 @@ public class TransientNodeState {
* @param state a property state
*/
void setProperty(PropertyState state) {
+ if (hasExistingProperty(state.getName())) {
+ removedProperties.add(state.getName());
+ }
addedProperties.put(state.getName(), state);
}
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=1309705&r1=1309704&r2=1309705&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 Thu Apr 5 09:06:15 2012
@@ -24,6 +24,7 @@ import org.apache.jackrabbit.mk.model.Sc
import org.apache.jackrabbit.mk.model.Scalar.Type;
import org.apache.jackrabbit.mk.model.ScalarImpl;
import org.apache.jackrabbit.mk.simple.SimpleKernelImpl;
+import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -54,6 +55,11 @@ public class KernelNodeStateEditorTest {
"/", jsop, microkernel.getHeadRevision(), "test data");
state = new KernelNodeState(microkernel, "/test", revision);
}
+
+ @After
+ public void tearDown() {
+ microkernel.dispose();
+ }
@Test
public void getNode() {
@@ -249,5 +255,41 @@ public class KernelNodeStateEditorTest {
NodeState xx = newState.getChildNode("y").getChildNode("xx");
assertEquals(x, xx);
}
+
+ @Test
+ public void getChildNodeCount() {
+ KernelNodeStateEditor editor = new KernelNodeStateEditor(state);
+ TransientNodeState transientState = editor.getTransientState();
+ assertEquals(3, transientState.getChildNodeCount());
+
+ transientState.removeNode("x");
+ assertEquals(2, transientState.getChildNodeCount());
+
+ transientState.addNode("a");
+ assertEquals(3, transientState.getChildNodeCount());
+
+ transientState.addNode("x");
+ assertEquals(4, transientState.getChildNodeCount());
+ }
+
+ @Test
+ public void getPropertyCount() {
+ KernelNodeStateEditor editor = new KernelNodeStateEditor(state);
+ TransientNodeState transientState = editor.getTransientState();
+ assertEquals(3, transientState.getPropertyCount());
+
+ Scalar value = ScalarImpl.stringScalar("foo");
+ transientState.setProperty(new KernelPropertyState("a", value));
+ assertEquals(3, transientState.getPropertyCount());
+
+ transientState.removeProperty("a");
+ assertEquals(2, transientState.getPropertyCount());
+
+ transientState.setProperty(new KernelPropertyState("x", value));
+ assertEquals(3, transientState.getPropertyCount());
+
+ transientState.setProperty(new KernelPropertyState("a", value));
+ assertEquals(4, transientState.getPropertyCount());
+ }
}