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/07/06 23:59:34 UTC

svn commit: r1358443 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/api/ oak-core/src/main/java/org/apache/jackrabbit/oak/core/ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/

Author: mduerig
Date: Fri Jul  6 21:59:34 2012
New Revision: 1358443

URL: http://svn.apache.org/viewvc?rev=1358443&view=rev
Log:
OAK-171: Add NodeState.compareAgainstBaseState()  
No need to keep track of the NodeStore in many diff implementations

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/ChangeExtractor.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/core/TreeImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/ChangeExtractor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/ChangeExtractor.java?rev=1358443&r1=1358442&r2=1358443&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/ChangeExtractor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/ChangeExtractor.java Fri Jul  6 21:59:34 2012
@@ -18,7 +18,6 @@
  */
 package org.apache.jackrabbit.oak.api;
 
-import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStateDiff;
 
 /**
@@ -32,15 +31,4 @@ public interface ChangeExtractor {
      * @param diff  {@code NodeStateDiff} to receive the changes
      */
     void getChanges(NodeStateDiff diff);
-
-    /**
-     * Compares the given two node states. Any found differences are
-     * reported by calling the relevant added, changed or deleted methods
-     * of the given handler.
-     *
-     * @param before node state before changes
-     * @param after node state after changes
-     * @param diff handler of node state differences
-     */
-    void getChanges(NodeState before, NodeState after, NodeStateDiff diff);
 }

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=1358443&r1=1358442&r2=1358443&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 Fri Jul  6 21:59:34 2012
@@ -191,14 +191,9 @@ public class RootImpl implements Root {
             @Override
             public void getChanges(NodeStateDiff diff) {
                 NodeState head = observationLimit.get();
-                store.compare(baseLine, head, diff);
+                head.compareAgainstBaseState(baseLine, diff);
                 baseLine = head;
             }
-
-            @Override
-            public void getChanges(NodeState before, NodeState after, NodeStateDiff diff) {
-                store.compare(before, after, diff);
-            }
         };
     }
 
@@ -271,19 +266,6 @@ public class RootImpl implements Root {
         }
     }
 
-    /**
-     * Compares the given two node states. Any found differences are
-     * reported by calling the relevant added, changed or deleted methods
-     * of the given handler.
-     *
-     * @param before node state before changes
-     * @param after node state after changes
-     * @param diffHandler handler of node state differences
-     */
-    public void compare(NodeState before, NodeState after, NodeStateDiff diffHandler) {
-        store.compare(before, after, diffHandler);
-    }
-
     //------------------------------------------------------------< private >---
 
     // TODO better way to determine purge limit
@@ -327,12 +309,12 @@ public class RootImpl implements Root {
         return child;
     }
 
-    private void merge(NodeState fromState, NodeState toState, final TreeImpl target,
+    private static void merge(NodeState fromState, NodeState toState, final TreeImpl target,
             final ConflictHandler conflictHandler) {
 
         assert target != null;
 
-        store.compare(fromState, toState, new NodeStateDiff() {
+        toState.compareAgainstBaseState(fromState, new NodeStateDiff() {
             @Override
             public void propertyAdded(PropertyState after) {
                 Resolution resolution;

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java?rev=1358443&r1=1358442&r2=1358443&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java Fri Jul  6 21:59:34 2012
@@ -384,9 +384,9 @@ public class TreeImpl implements Tree, P
         }
     }
 
-    private boolean isSame(NodeState state1, NodeState state2) {
+    private static boolean isSame(NodeState state1, NodeState state2) {
         final boolean[] isDirty = {false};
-        root.compare(state1, state2, new NodeStateDiff() {
+        state2.compareAgainstBaseState(state1, new NodeStateDiff() {
             @Override
             public void propertyAdded(PropertyState after) {
                 isDirty[0] = true;

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java?rev=1358443&r1=1358442&r2=1358443&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java Fri Jul  6 21:59:34 2012
@@ -152,7 +152,7 @@ class ChangeProcessor extends TimerTask 
             if (!stopped && filterRef.get().includeChildren(jcrPath())) {
                 EventGeneratingNodeStateDiff diff = new EventGeneratingNodeStateDiff(
                         PathUtils.concat(path, name), events, after);
-                changeExtractor.getChanges(before, after, diff);
+                after.compareAgainstBaseState(before, diff);
                 if (events.size() > PURGE_LIMIT) {
                     diff.sendEvents();
                 }