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 ju...@apache.org on 2013/05/29 10:09:30 UTC

svn commit: r1487393 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/memory/ModifiedNodeState.java test/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilderTest.java

Author: jukka
Date: Wed May 29 08:09:29 2013
New Revision: 1487393

URL: http://svn.apache.org/r1487393
Log:
OAK-781: Clarify / fix effects of MISSING_NODE as base state of NodeBuilder

Add a way to "squeeze" ModifiedNodeState instances into equivalent MemoryNodeStates

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/ModifiedNodeState.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/ModifiedNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/ModifiedNodeState.java?rev=1487393&r1=1487392&r2=1487393&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/ModifiedNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/ModifiedNodeState.java Wed May 29 08:09:29 2013
@@ -94,6 +94,27 @@ public class ModifiedNodeState extends A
         }
     }
 
+    /**
+     * "Squeezes" {@link ModifiedNodeState} instances into equivalent
+     * {@link MemoryNodeState}s. Other kinds of states are returned as-is.
+     */
+    public static NodeState squeeze(NodeState state) {
+        if (state instanceof ModifiedNodeState) {
+            Map<String, PropertyState> properties = newHashMap();
+            for (PropertyState property : state.getProperties()) {
+                properties.put(property.getName(), property);
+            }
+
+            Map<String, NodeState> nodes = newHashMap();
+            for (ChildNodeEntry child : state.getChildNodeEntries()) {
+                nodes.put(child.getName(), squeeze(child.getNodeState()));
+            }
+
+            state = new MemoryNodeState(properties, nodes);
+        }
+        return state;
+    }
+
 
     static long getPropertyCount(
             NodeState base, Map<String, PropertyState> properties) {

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=1487393&r1=1487392&r2=1487393&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 May 29 08:09:29 2013
@@ -47,7 +47,7 @@ public class MemoryNodeBuilderTest {
         builder.child("x").child("q");
         builder.child("y");
         builder.child("z");
-        base = builder.getNodeState();
+        base = ModifiedNodeState.squeeze(builder.getNodeState());
     }
 
     @Test