Author: mduerig
Date: Wed Jun 26 08:27:57 2013
New Revision: 1496826

URL: http://svn.apache.org/r1496826
Log:
OAK-880: ChangeProcessor causes IllegalArgumentException when path filter ends 
with a slash
convert jcr path to oak path in EventGeneratingNodeStateDiff and EventFilter

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/EventFilter.java
    
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/observation/ObservationTest.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=1496826&r1=1496825&r2=1496826&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
 Wed Jun 26 08:27:57 2013
@@ -181,8 +181,8 @@ class ChangeProcessor implements Runnabl
             while (!stopping && changes != null) {
                 EventFilter filter = filterRef.get();
                 if (!(filter.excludeLocal() && 
changes.isLocal(observationManager.getContentSession()))) {
-                    EventGeneratingNodeStateDiff diff = new 
EventGeneratingNodeStateDiff(changes);
                     String path = namePathMapper.getOakPath(filter.getPath());
+                    EventGeneratingNodeStateDiff diff = new 
EventGeneratingNodeStateDiff(changes, path);
                     changes.diff(VisibleDiff.wrap(diff), path);
                     if (!stopping) {
                         diff.sendEvents();
@@ -229,9 +229,9 @@ class ChangeProcessor implements Runnabl
             this.name = name;
         }
 
-        public EventGeneratingNodeStateDiff(ChangeSet changes) {
+        public EventGeneratingNodeStateDiff(ChangeSet changes, String path) {
             // michid parent nodes should be the root here
-            this(changes, filterRef.get().getPath(), new 
ArrayList<Iterator<Event>>(PURGE_LIMIT), null, null, null, "");
+            this(changes, path, new ArrayList<Iterator<Event>>(PURGE_LIMIT), 
null, null, null, "");
         }
 
         public void sendEvents() {

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/EventFilter.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/EventFilter.java?rev=1496826&r1=1496825&r2=1496826&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/EventFilter.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/EventFilter.java
 Wed Jun 26 08:27:57 2013
@@ -139,13 +139,14 @@ class EventFilter {
     }
 
     private boolean include(String path) {
-        boolean equalPaths = this.path.equals(path);
+        String thisOakPath = namePathMapper.getOakPath(this.path);
+        String thatOakPath = namePathMapper.getOakPath(path);
+
+        boolean equalPaths = thisOakPath.equals(thatOakPath);
         if (!deep && !equalPaths) {
             return false;
         }
 
-        String thisOakPath = namePathMapper.getOakPath(this.path);
-        String thatOakPath = namePathMapper.getOakPath(path);
         if (deep && !(PathUtils.isAncestor(thisOakPath, thatOakPath) || 
equalPaths)) {
             return false;
         }

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/observation/ObservationTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/observation/ObservationTest.java?rev=1496826&r1=1496825&r2=1496826&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/observation/ObservationTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/observation/ObservationTest.java
 Wed Jun 26 08:27:57 2013
@@ -58,7 +58,6 @@ import org.apache.jackrabbit.oak.commons
 import org.apache.jackrabbit.oak.jcr.AbstractRepositoryTest;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 
 public class ObservationTest extends AbstractRepositoryTest {
@@ -198,7 +197,6 @@ public class ObservationTest extends Abs
     }
 
     @Test
-    @Ignore("OAK-880")
     public void pathFilterWithTrailingSlash() throws Exception {
         final String path = "/events/only/here";
         ExpectationListener listener = new ExpectationListener();


Reply via email to