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(),


Reply via email to