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) {