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 2013/11/19 21:08:48 UTC

svn commit: r1543556 - in /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation: ChangeProcessor.java filter/EventIterator.java filter/UuidFilter.java

Author: mduerig
Date: Tue Nov 19 20:08:47 2013
New Revision: 1543556

URL: http://svn.apache.org/r1543556
Log:
OAK-1133: Observation listener PLUS
Pass path to EventIterator explicitly instead of implicitly via the ImmutableTree instances

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventIterator.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/UuidFilter.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java?rev=1543556&r1=1543555&r2=1543556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java Tue Nov 19 20:08:47 2013
@@ -127,7 +127,7 @@ public class ChangeProcessor implements 
                     ImmutableTree beforeTree = getTree(previousRoot, path);
                     ImmutableTree afterTree = getTree(root, path);
                     EventIterator<Event> events = new EventIterator<Event>(
-                            beforeTree.getNodeState(), afterTree.getNodeState(),
+                            beforeTree.getNodeState(), afterTree.getNodeState(), path,
                             provider.getFilter(beforeTree, afterTree),
                             new JcrListener(beforeTree, afterTree, namePathMapper, info));
                     if (events.hasNext()) {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventIterator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventIterator.java?rev=1543556&r1=1543555&r2=1543556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventIterator.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventIterator.java Tue Nov 19 20:08:47 2013
@@ -28,7 +28,7 @@ import java.util.List;
 import javax.annotation.Nonnull;
 
 import org.apache.jackrabbit.oak.api.CommitFailedException;
-import org.apache.jackrabbit.oak.core.ImmutableTree;
+import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.spi.commit.EditorDiff;
 import org.apache.jackrabbit.oak.spi.commit.VisibleEditor;
 import org.apache.jackrabbit.oak.spi.state.MoveDetector;
@@ -45,8 +45,9 @@ import org.slf4j.LoggerFactory;
 public class EventIterator<T> extends EventGenerator implements Iterator<T> {
     private static final Logger LOG = LoggerFactory.getLogger(EventIterator.class);
 
-    private final ImmutableTree beforeTree;
-    private final ImmutableTree afterTree;
+    private final NodeState before;
+    private final NodeState after;
+    private final String path;
 
     private final Filter filter;
     private final IterableListener<T> listener;
@@ -58,8 +59,8 @@ public class EventIterator<T> extends Ev
         protected Iterator<T> createValue() {
             CommitFailedException e = EditorDiff.process(
                     new VisibleEditor(
-                        new MoveDetector(EventIterator.this, afterTree.getPath())),
-                    beforeTree.getNodeState(), afterTree.getNodeState());
+                        new MoveDetector(EventIterator.this, path)),
+                    before, after);
 
             if (e != null) {
                 LOG.error("Error while extracting observation events", e);
@@ -87,23 +88,16 @@ public class EventIterator<T> extends Ev
      *
      * @param before  before state
      * @param after   after state
+     * @parem path    common path to the before and after states
      * @param filter  filter for filtering changes
      * @param listener  listener for listening to the filtered changes
      */
-    public EventIterator(NodeState before, NodeState after, Filter filter,
-            IterableListener<T> listener) {
+    public EventIterator(NodeState before, NodeState after, String path,
+            Filter filter, IterableListener<T> listener) {
         super(filter, listener);
-        this.beforeTree = new ImmutableTree(before);
-        this.afterTree = new ImmutableTree(after);
-        this.filter = filter;
-        this.listener = listener;
-    }
-
-    private EventIterator(ImmutableTree before, ImmutableTree after, Filter filter,
-            IterableListener<T> listener) {
-        super(filter, listener);
-        this.beforeTree = before;
-        this.afterTree = after;
+        this.before = before;
+        this.after = after;
+        this.path = path;
         this.filter = filter;
         this.listener = listener;
     }
@@ -115,7 +109,7 @@ public class EventIterator<T> extends Ev
         Filter childFilter = filter.create(name, before, after);
         if (childFilter != null) {
             childEvents.add(new EventIterator<T>(
-                    beforeTree.getChild(name), afterTree.getChild(name),
+                    before, after, PathUtils.concat(path, name),
                     childFilter,
                     listener.create(name, before, after)));
         }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/UuidFilter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/UuidFilter.java?rev=1543556&r1=1543555&r2=1543556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/UuidFilter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/UuidFilter.java Tue Nov 19 20:08:47 2013
@@ -82,7 +82,6 @@ public class UuidFilter implements Filte
 
     @Override
     public Filter create(String name, NodeState before, NodeState after) {
-        // FIXME shouldn't we pass the respective child node states here!?
         return new UuidFilter(before, after, uuids);
     }