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 mr...@apache.org on 2012/10/11 16:21:44 UTC

svn commit: r1397070 - in /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak: core/ plugins/commit/ spi/commit/

Author: mreutegg
Date: Thu Oct 11 14:21:44 2012
New Revision: 1397070

URL: http://svn.apache.org/viewvc?rev=1397070&view=rev
Log:
OAK-374: ConflictHandler must not depend on Oak API

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/MergingNodeStateDiff.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/AnnotatingConflictHandler.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/DefaultConflictHandler.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/ConflictHandler.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/MergingNodeStateDiff.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/MergingNodeStateDiff.java?rev=1397070&r1=1397069&r2=1397070&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/MergingNodeStateDiff.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/MergingNodeStateDiff.java Thu Oct 11 14:21:44 2012
@@ -16,10 +16,10 @@
  */
 package org.apache.jackrabbit.oak.core;
 
-import org.apache.jackrabbit.oak.spi.commit.ConflictHandler;
 import org.apache.jackrabbit.oak.api.PropertyState;
-import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.spi.commit.ConflictHandler;
 import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
+import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStateDiff;
 import org.slf4j.Logger;
@@ -40,15 +40,15 @@ class MergingNodeStateDiff implements No
      */
     private static final Logger log = LoggerFactory.getLogger(MergingNodeStateDiff.class);
 
-    private final TreeImpl target;
+    private final NodeBuilder target;
     private final ConflictHandler conflictHandler;
 
-    private MergingNodeStateDiff(TreeImpl target, ConflictHandler conflictHandler) {
+    private MergingNodeStateDiff(NodeBuilder target, ConflictHandler conflictHandler) {
         this.target = target;
         this.conflictHandler = conflictHandler;
     }
 
-    static void merge(NodeState fromState, NodeState toState, final TreeImpl target,
+    static void merge(NodeState fromState, NodeState toState, final NodeBuilder target,
             final ConflictHandler conflictHandler) {
         toState.compareAgainstBaseState(fromState, new MergingNodeStateDiff(
                 checkNotNull(target), conflictHandler));
@@ -133,12 +133,10 @@ class MergingNodeStateDiff implements No
     @Override
     public void childNodeAdded(String name, NodeState after) {
         ConflictHandler.Resolution resolution;
-        TreeImpl n = target.getChild(name);
-
-        if (n == null) {
+        if (!target.hasChildNode(name)) {
             resolution = OURS;
-        }
-        else {
+        } else {
+            NodeBuilder n = target.child(name);
             resolution = conflictHandler.addExistingNode(target, name, after, n.getNodeState());
         }
 
@@ -155,13 +153,10 @@ class MergingNodeStateDiff implements No
     @Override
     public void childNodeChanged(String name, NodeState before, NodeState after) {
         ConflictHandler.Resolution resolution;
-        TreeImpl n = target.getChild(name);
-
-        if (n == null) {
+        if (!target.hasChildNode(name)) {
             resolution = conflictHandler.changeDeletedNode(target, name, after);
-        }
-        else {
-            merge(before, after, n, conflictHandler);
+        } else {
+            merge(before, after, target.child(name), conflictHandler);
             resolution = MERGED;
         }
 
@@ -178,7 +173,7 @@ class MergingNodeStateDiff implements No
     @Override
     public void childNodeDeleted(String name, NodeState before) {
         ConflictHandler.Resolution resolution;
-        TreeImpl n = target.getChild(name);
+        NodeBuilder n = target.hasChildNode(name) ? target.child(name) : null;
 
         if (n == null) {
             resolution = conflictHandler.deleteDeletedNode(target, name);
@@ -193,7 +188,7 @@ class MergingNodeStateDiff implements No
         switch (resolution) {
             case OURS:
                 if (n != null) {
-                    n.remove();
+                    target.removeNode(name);
                 }
                 break;
             case THEIRS:
@@ -204,8 +199,8 @@ class MergingNodeStateDiff implements No
 
     //-------------------------------------------------------------<private >---
 
-    private static void addChild(Tree target, String name, NodeState state) {
-        Tree child = target.addChild(name);
+    private static void addChild(NodeBuilder target, String name, NodeState state) {
+        NodeBuilder child = target.child(name);
         for (PropertyState property : state.getProperties()) {
             child.setProperty(property);
         }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java?rev=1397070&r1=1397069&r2=1397070&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java Thu Oct 11 14:21:44 2012
@@ -181,7 +181,7 @@ public class RootImpl implements Root {
             NodeState base = getBaseState();
             NodeState head = rootTree.getNodeState();
             refresh();
-            MergingNodeStateDiff.merge(base, head, rootTree, conflictHandler);
+            MergingNodeStateDiff.merge(base, head, rootTree.getNodeBuilder(), conflictHandler);
         }
     }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/AnnotatingConflictHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/AnnotatingConflictHandler.java?rev=1397070&r1=1397069&r2=1397070&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/AnnotatingConflictHandler.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/AnnotatingConflictHandler.java Thu Oct 11 14:21:44 2012
@@ -18,13 +18,14 @@ package org.apache.jackrabbit.oak.plugin
 
 import java.util.List;
 
-import com.google.common.collect.Lists;
 import org.apache.jackrabbit.oak.api.PropertyState;
-import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.spi.commit.ConflictHandler;
 import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
+import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 
+import com.google.common.collect.Lists;
+
 import static org.apache.jackrabbit.JcrConstants.JCR_MIXINTYPES;
 import static org.apache.jackrabbit.oak.api.Type.NAMES;
 import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.ADD_EXISTING;
@@ -55,69 +56,69 @@ import static org.apache.jackrabbit.oak.
 public class AnnotatingConflictHandler implements ConflictHandler {
 
     @Override
-    public Resolution addExistingProperty(Tree parent, PropertyState ours, PropertyState theirs) {
-        Tree marker = addConflictMarker(parent);
-        getOrCreateNode(marker, ADD_EXISTING).setProperty(ours);
+    public Resolution addExistingProperty(NodeBuilder parent, PropertyState ours, PropertyState theirs) {
+        NodeBuilder marker = addConflictMarker(parent);
+        marker.child(ADD_EXISTING).setProperty(ours);
         return Resolution.THEIRS;
     }
 
     @Override
-    public Resolution changeDeletedProperty(Tree parent, PropertyState ours) {
-        Tree marker = addConflictMarker(parent);
-        getOrCreateNode(marker, CHANGE_DELETED).setProperty(ours);
+    public Resolution changeDeletedProperty(NodeBuilder parent, PropertyState ours) {
+        NodeBuilder marker = addConflictMarker(parent);
+        marker.child(CHANGE_DELETED).setProperty(ours);
         return Resolution.THEIRS;
     }
 
     @Override
-    public Resolution changeChangedProperty(Tree parent, PropertyState ours, PropertyState theirs) {
-        Tree marker = addConflictMarker(parent);
-        getOrCreateNode(marker, CHANGE_CHANGED).setProperty(ours);
+    public Resolution changeChangedProperty(NodeBuilder parent, PropertyState ours, PropertyState theirs) {
+        NodeBuilder marker = addConflictMarker(parent);
+        marker.child(CHANGE_CHANGED).setProperty(ours);
         return Resolution.THEIRS;
     }
 
     @Override
-    public Resolution deleteChangedProperty(Tree parent, PropertyState theirs) {
-        Tree marker = addConflictMarker(parent);
-        getOrCreateNode(marker, DELETE_CHANGED).setProperty(theirs);
+    public Resolution deleteChangedProperty(NodeBuilder parent, PropertyState theirs) {
+        NodeBuilder marker = addConflictMarker(parent);
+        marker.child(DELETE_CHANGED).setProperty(theirs);
         return Resolution.THEIRS;
     }
 
     @Override
-    public Resolution deleteDeletedProperty(Tree parent, PropertyState ours) {
-        Tree marker = addConflictMarker(parent);
-        getOrCreateNode(marker, DELETE_DELETED).setProperty(ours);
+    public Resolution deleteDeletedProperty(NodeBuilder parent, PropertyState ours) {
+        NodeBuilder marker = addConflictMarker(parent);
+        marker.child(DELETE_DELETED).setProperty(ours);
         return Resolution.THEIRS;
     }
 
     @Override
-    public Resolution addExistingNode(Tree parent, String name, NodeState ours, NodeState theirs) {
-        Tree marker = addConflictMarker(parent);
-        addChild(getOrCreateNode(marker, ADD_EXISTING), name, ours);
+    public Resolution addExistingNode(NodeBuilder parent, String name, NodeState ours, NodeState theirs) {
+        NodeBuilder marker = addConflictMarker(parent);
+        addChild(marker.child(ADD_EXISTING), name, ours);
         return Resolution.THEIRS;
     }
 
     @Override
-    public Resolution changeDeletedNode(Tree parent, String name, NodeState ours) {
-        Tree marker = addConflictMarker(parent);
-        addChild(getOrCreateNode(marker, CHANGE_DELETED), name, ours);
+    public Resolution changeDeletedNode(NodeBuilder parent, String name, NodeState ours) {
+        NodeBuilder marker = addConflictMarker(parent);
+        addChild(marker.child(CHANGE_DELETED), name, ours);
         return Resolution.THEIRS;
     }
 
     @Override
-    public Resolution deleteChangedNode(Tree parent, String name, NodeState theirs) {
-        Tree marker = addConflictMarker(parent);
-        markChild(getOrCreateNode(marker, DELETE_CHANGED), name);
+    public Resolution deleteChangedNode(NodeBuilder parent, String name, NodeState theirs) {
+        NodeBuilder marker = addConflictMarker(parent);
+        markChild(marker.child(DELETE_CHANGED), name);
         return Resolution.THEIRS;
     }
 
     @Override
-    public Resolution deleteDeletedNode(Tree parent, String name) {
-        Tree marker = addConflictMarker(parent);
-        markChild(getOrCreateNode(marker, DELETE_DELETED), name);
+    public Resolution deleteDeletedNode(NodeBuilder parent, String name) {
+        NodeBuilder marker = addConflictMarker(parent);
+        markChild(marker.child(DELETE_DELETED), name);
         return Resolution.THEIRS;
     }
 
-    private static Tree addConflictMarker(Tree parent) {
+    private static NodeBuilder addConflictMarker(NodeBuilder parent) {
         PropertyState jcrMixin = parent.getProperty(JCR_MIXINTYPES);
         List<String> mixins;
         if (jcrMixin == null) {
@@ -131,19 +132,11 @@ public class AnnotatingConflictHandler i
             parent.setProperty(JCR_MIXINTYPES, mixins, NAMES);
         }
 
-        return getOrCreateNode(parent, REP_OURS);
-    }
-
-    private static Tree getOrCreateNode(Tree parent, String name) {
-        Tree child = parent.getChild(name);
-        if (child == null) {
-            child = parent.addChild(name);
-        }
-        return child;
+        return parent.child(REP_OURS);
     }
 
-    private static void addChild(Tree parent, String name, NodeState state) {
-        Tree child = parent.addChild(name);
+    private static void addChild(NodeBuilder parent, String name, NodeState state) {
+        NodeBuilder child = parent.child(name);
         for (PropertyState property : state.getProperties()) {
             child.setProperty(property);
         }
@@ -152,8 +145,8 @@ public class AnnotatingConflictHandler i
         }
     }
 
-    private static void markChild(Tree parent, String name) {
-        parent.addChild(name);
+    private static void markChild(NodeBuilder parent, String name) {
+        parent.child(name);
     }
 
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/DefaultConflictHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/DefaultConflictHandler.java?rev=1397070&r1=1397069&r2=1397070&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/DefaultConflictHandler.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/DefaultConflictHandler.java Thu Oct 11 14:21:44 2012
@@ -20,7 +20,7 @@ package org.apache.jackrabbit.oak.plugin
 
 import org.apache.jackrabbit.oak.spi.commit.ConflictHandler;
 import org.apache.jackrabbit.oak.api.PropertyState;
-import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 
 /**
@@ -53,47 +53,47 @@ public class DefaultConflictHandler impl
     }
 
     @Override
-    public Resolution addExistingProperty(Tree parent, PropertyState ours, PropertyState theirs) {
+    public Resolution addExistingProperty(NodeBuilder parent, PropertyState ours, PropertyState theirs) {
         return resolution;
     }
 
     @Override
-    public Resolution changeDeletedProperty(Tree parent, PropertyState ours) {
+    public Resolution changeDeletedProperty(NodeBuilder parent, PropertyState ours) {
         return resolution;
     }
 
     @Override
-    public Resolution changeChangedProperty(Tree parent, PropertyState ours, PropertyState theirs) {
+    public Resolution changeChangedProperty(NodeBuilder parent, PropertyState ours, PropertyState theirs) {
         return resolution;
     }
 
     @Override
-    public Resolution deleteChangedProperty(Tree parent, PropertyState theirs) {
+    public Resolution deleteChangedProperty(NodeBuilder parent, PropertyState theirs) {
         return resolution;
     }
 
     @Override
-    public Resolution deleteDeletedProperty(Tree parent, PropertyState ours) {
+    public Resolution deleteDeletedProperty(NodeBuilder parent, PropertyState ours) {
         return resolution;
     }
 
     @Override
-    public Resolution addExistingNode(Tree parent, String name, NodeState ours, NodeState theirs) {
+    public Resolution addExistingNode(NodeBuilder parent, String name, NodeState ours, NodeState theirs) {
         return resolution;
     }
 
     @Override
-    public Resolution changeDeletedNode(Tree parent, String name, NodeState ours) {
+    public Resolution changeDeletedNode(NodeBuilder parent, String name, NodeState ours) {
         return resolution;
     }
 
     @Override
-    public Resolution deleteChangedNode(Tree parent, String name, NodeState theirs) {
+    public Resolution deleteChangedNode(NodeBuilder parent, String name, NodeState theirs) {
         return resolution;
     }
 
     @Override
-    public Resolution deleteDeletedNode(Tree parent, String name) {
+    public Resolution deleteDeletedNode(NodeBuilder parent, String name) {
         return resolution;
     }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/ConflictHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/ConflictHandler.java?rev=1397070&r1=1397069&r2=1397070&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/ConflictHandler.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/ConflictHandler.java Thu Oct 11 14:21:44 2012
@@ -19,7 +19,7 @@
 package org.apache.jackrabbit.oak.spi.commit;
 
 import org.apache.jackrabbit.oak.api.PropertyState;
-import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 
 /**
@@ -66,7 +66,7 @@ public interface ConflictHandler {
      * @param theirs  their version of the property
      * @return  {@link Resolution} of the conflict
      */
-    Resolution addExistingProperty(Tree parent, PropertyState ours, PropertyState theirs);
+    Resolution addExistingProperty(NodeBuilder parent, PropertyState ours, PropertyState theirs);
 
     /**
      * The property {@code ours} has been changed in {@code parent} while it was
@@ -76,7 +76,7 @@ public interface ConflictHandler {
      * @param ours  our version of the property
      * @return  {@link Resolution} of the conflict
      */
-    Resolution changeDeletedProperty(Tree parent, PropertyState ours);
+    Resolution changeDeletedProperty(NodeBuilder parent, PropertyState ours);
 
     /**
      * The property {@code ours} has been changed in {@code parent} while it was
@@ -87,7 +87,7 @@ public interface ConflictHandler {
      * @param theirs  their version of the property
      * @return  {@link Resolution} of the conflict
      */
-    Resolution changeChangedProperty(Tree parent, PropertyState ours, PropertyState theirs);
+    Resolution changeChangedProperty(NodeBuilder parent, PropertyState ours, PropertyState theirs);
 
     /**
      * The property {@code ours} has been removed in {@code parent} while it was
@@ -97,7 +97,7 @@ public interface ConflictHandler {
      * @param ours  our version of the property
      * @return  {@link Resolution} of the conflict
      */
-    Resolution deleteDeletedProperty(Tree parent, PropertyState ours);
+    Resolution deleteDeletedProperty(NodeBuilder parent, PropertyState ours);
 
     /**
      * The property {@code theirs} changed in the persistence store while it has been
@@ -107,7 +107,7 @@ public interface ConflictHandler {
      * @param theirs  their version of the property
      * @return  {@link Resolution} of the conflict
      */
-    Resolution deleteChangedProperty(Tree parent, PropertyState theirs);
+    Resolution deleteChangedProperty(NodeBuilder parent, PropertyState theirs);
 
     /**
      * The node {@code ours} has been added to {@code parent} which conflicts
@@ -119,7 +119,7 @@ public interface ConflictHandler {
      * @param theirs  their version of the node
      * @return  {@link Resolution} of the conflict
      */
-    Resolution addExistingNode(Tree parent, String name, NodeState ours, NodeState theirs);
+    Resolution addExistingNode(NodeBuilder parent, String name, NodeState ours, NodeState theirs);
 
     /**
      * The node {@code ours} has been changed in {@code parent} while it was
@@ -130,7 +130,7 @@ public interface ConflictHandler {
      * @param ours  our version of the node
      * @return  {@link Resolution} of the conflict
      */
-    Resolution changeDeletedNode(Tree parent, String name, NodeState ours);
+    Resolution changeDeletedNode(NodeBuilder parent, String name, NodeState ours);
 
     /**
      * The node {@code theirs} changed in the persistence store while it has been
@@ -138,11 +138,10 @@ public interface ConflictHandler {
      *
      * @param parent  root of the conflict
      * @param name  name of the node
-     * @param theirs
      * @param theirs  their version of the node
      * @return  {@link Resolution} of the conflict
      */
-    Resolution deleteChangedNode(Tree parent, String name, NodeState theirs);
+    Resolution deleteChangedNode(NodeBuilder parent, String name, NodeState theirs);
 
     /**
      * The node {@code name} has been removed in {@code parent} while it was
@@ -152,5 +151,5 @@ public interface ConflictHandler {
      * @param name  name of the node
      * @return  {@link Resolution} of the conflict
      */
-    Resolution deleteDeletedNode(Tree parent, String name);
+    Resolution deleteDeletedNode(NodeBuilder parent, String name);
 }