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 11:52:13 UTC

svn commit: r1309307 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/TransientNodeState.java

Author: mduerig
Date: Wed Apr  4 09:52:12 2012
New Revision: 1309307

URL: http://svn.apache.org/viewvc?rev=1309307&view=rev
Log:
OAK-9: Internal tree builder
only mark items as removed which have an underlying (existing) item

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/TransientNodeState.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=1309307&r1=1309306&r2=1309307&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 09:52:12 2012
@@ -228,7 +228,9 @@ public class TransientNodeState {
 
     void removeNode(String name) {
         addedNodes.remove(name);
-        removedNodes.add(name);
+        if (hasExistingNode(name)) {
+            removedNodes.add(name);
+        }
     }
 
     void setProperty(PropertyState state) {
@@ -237,7 +239,9 @@ public class TransientNodeState {
 
     void removeProperty(String name) {
         addedProperties.remove(name);
-        removedProperties.add(name);
+        if (hasExistingProperty(name)) {
+            removedProperties.add(name);
+        }
     }
 
     void move(String name, TransientNodeState destParent, String destName) {
@@ -267,5 +271,13 @@ public class TransientNodeState {
         }
         return transientState;
     }
+    
+    private boolean hasExistingNode(String name) {
+        return persistentState != null && persistentState.getChildNode(name) != null;
+    }
+
+    private boolean hasExistingProperty(String name) {
+        return persistentState != null && persistentState.getProperty(name) != null;
+    }
 
 }