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);
}