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 ch...@apache.org on 2015/05/04 13:16:43 UTC

svn commit: r1677581 - /jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java

Author: chetanm
Date: Mon May  4 11:16:43 2015
New Revision: 1677581

URL: http://svn.apache.org/r1677581
Log:
OAK-2814 - Refactor the optimize logic regarding path include and exclude to avoid duplication

Use the method from PathUtils

Modified:
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java

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=1677581&r1=1677580&r2=1677581&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 Mon May  4 11:16:43 2015
@@ -48,6 +48,7 @@ import org.apache.jackrabbit.commons.ite
 import org.apache.jackrabbit.commons.observation.ListenerTracker;
 import org.apache.jackrabbit.oak.api.ContentSession;
 import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
 import org.apache.jackrabbit.oak.jcr.session.SessionContext;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
@@ -222,7 +223,7 @@ public class ObservationManagerImpl impl
             includePaths.add(namePathMapper.getOakPath(absPath));
         }
         Set<String> excludedPaths = getOakPaths(namePathMapper, filter.getExcludedPaths());
-        optimise(includePaths, excludedPaths);
+        PathUtils.unifyInExcludes(includePaths, excludedPaths);
         if (includePaths.isEmpty()) {
             LOG.warn("The passed filter excludes all events. No event listener registered");
             return;
@@ -259,26 +260,6 @@ public class ObservationManagerImpl impl
         addEventListener(listener, tracker, filterBuilder.build());
     }
 
-    /**
-     * Removes paths from {@code includePaths} that are completely excluded
-     * and only retains paths in {@code excludedPaths} that are included.
-     * @param includePaths
-     * @param excludedPaths
-     */
-    private static void optimise(Set<String> includePaths, Set<String> excludedPaths) {
-        Set<String> retain = newHashSet();
-        for (String include : includePaths) {
-            for (String exclude : excludedPaths) {
-                if (exclude.equals(include) || isAncestor(exclude, include)) {
-                    includePaths.remove(include);
-                } else if (isAncestor(include, exclude)) {
-                    retain.add(exclude);
-                }
-            }
-        }
-        excludedPaths.retainAll(retain);
-    }
-
     private static List<Condition> createExclusions(FilterBuilder filterBuilder, Iterable<String> excludedPaths) {
         List<Condition> conditions = newArrayList();
         for (String path : excludedPaths) {