Author: mduerig
Date: Wed Mar 26 13:22:21 2014
New Revision: 1581823
URL: http://svn.apache.org/r1581823
Log:
OAK-1618: Implement noInternal from JackrabbitEventFilter
Initial bits of the implementation that do not depend on the changes pending
with JCR-3759
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/FilterBuilder.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/FilterBuilder.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/FilterBuilder.java?rev=1581823&r1=1581822&r2=1581823&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/FilterBuilder.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/FilterBuilder.java
Wed Mar 26 13:22:21 2014
@@ -54,6 +54,7 @@ public final class FilterBuilder {
private boolean includeSessionLocal;
private boolean includeClusterExternal;
+ private boolean includeClusterLocal = true;
private String basePath = "/";
private Condition condition = includeAll();
@@ -87,6 +88,18 @@ public final class FilterBuilder {
}
/**
+ * Whether to include cluster local changes. Defaults to {@code true}.
+ * @param include if {@code true} cluster local changes are included,
+ * otherwise cluster local changes are not included.
+ * @return this instance
+ */
+ @Nonnull
+ public FilterBuilder includeClusterLocal(boolean include) {
+ this.includeClusterLocal = include;
+ return this;
+ }
+
+ /**
* The base determines a subtree which contains all filter results.
* In the most simple case where a filter should include all events
* at a given path that path is at time same time the base path.
@@ -297,13 +310,15 @@ public final class FilterBuilder {
return new FilterProvider() {
final boolean includeSessionLocal =
FilterBuilder.this.includeSessionLocal;
final boolean includeClusterExternal =
FilterBuilder.this.includeClusterExternal;
+ final boolean includeClusterLocal =
FilterBuilder.this.includeClusterLocal;
final String basePath = FilterBuilder.this.basePath;
final Condition condition = FilterBuilder.this.condition;
@Override
public boolean includeCommit(@Nonnull String sessionId,
@CheckForNull CommitInfo info) {
return (includeSessionLocal ||
!isLocal(checkNotNull(sessionId), info))
- && (includeClusterExternal || !isExternal(info));
+ && (includeClusterExternal || !isExternal(info))
+ && (includeClusterLocal || isExternal(info));
}
@Nonnull
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java?rev=1581823&r1=1581822&r2=1581823&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java
(original)
+++
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java
Wed Mar 26 13:22:21 2014
@@ -18,11 +18,17 @@
*/
package org.apache.jackrabbit.oak.jcr.observation;
+import static com.google.common.collect.Lists.newArrayList;
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static
org.apache.jackrabbit.oak.plugins.observation.filter.GlobbingPathFilter.STAR;
+import static
org.apache.jackrabbit.oak.plugins.observation.filter.GlobbingPathFilter.STAR_STAR;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
import javax.jcr.RepositoryException;
@@ -57,11 +63,6 @@ import org.slf4j.LoggerFactory;
import org.slf4j.Marker;
import org.slf4j.MarkerFactory;
-import static com.google.common.collect.Lists.newArrayList;
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
-import static
org.apache.jackrabbit.oak.plugins.observation.filter.GlobbingPathFilter.STAR;
-import static
org.apache.jackrabbit.oak.plugins.observation.filter.GlobbingPathFilter.STAR_STAR;
-
public class ObservationManagerImpl implements JackrabbitObservationManager {
private static final Logger LOG =
LoggerFactory.getLogger(ObservationManagerImpl.class);
private static final int STOP_TIME_OUT = 1000;
@@ -224,6 +225,7 @@ public class ObservationManagerImpl impl
String[] nodeTypeName = filter.getNodeTypes();
boolean noLocal = filter.getNoLocal();
boolean noExternal = filter.getNoExternal() || listener instanceof
ExcludeExternal;
+ boolean noInternal = false; // FIXME filter.getNoInternal(); once
JCR-3759 is resolved
List<String> absPaths =
Lists.newArrayList(filter.getAdditionalPaths());
String absPath = filter.getAbsPath();
if (absPath != null) {
@@ -237,6 +239,7 @@ public class ObservationManagerImpl impl
.basePath(namePathMapper.getOakPath(path))
.includeSessionLocal(!noLocal)
.includeClusterExternal(!noExternal)
+ .includeClusterLocal(!noInternal)
.condition(filterBuilder.all(
filterBuilder.deleteSubtree(),
filterBuilder.moveSubtree(),