Author: chetanm
Date: Fri Nov 25 14:19:42 2016
New Revision: 1771319

URL: http://svn.apache.org/viewvc?rev=1771319&view=rev
Log:
OAK-5126 - Support ChangeSet merging and serialization

Ensure that path being added is within max depth allowed

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeSetBuilder.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/ChangeSetBuilderTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeSetBuilder.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeSetBuilder.java?rev=1771319&r1=1771318&r2=1771319&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeSetBuilder.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeSetBuilder.java
 Fri Nov 25 14:19:42 2016
@@ -21,6 +21,7 @@ package org.apache.jackrabbit.oak.plugin
 import java.util.Set;
 
 import com.google.common.collect.Sets;
+import org.apache.jackrabbit.oak.commons.PathUtils;
 
 /**
  * Builder of a ChangeSet - only used by ChangeCollectorProvider (and tests..)
@@ -58,6 +59,9 @@ public class ChangeSetBuilder {
     }
 
     public ChangeSetBuilder addParentPath(String path){
+        if (PathUtils.getDepth(path) > maxPathDepth){
+            return this;
+        }
         parentPathOverflow = addAndCheckOverflow(parentPaths, path, maxItems, 
parentPathOverflow);
         return this;
     }

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/ChangeSetBuilderTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/ChangeSetBuilderTest.java?rev=1771319&r1=1771318&r2=1771319&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/ChangeSetBuilderTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/ChangeSetBuilderTest.java
 Fri Nov 25 14:19:42 2016
@@ -133,6 +133,17 @@ public class ChangeSetBuilderTest {
         assertThat(cs.getPropertyNames(), containsInAnyOrder("pn-1", "pn-2"));
     }
 
+    @Test
+    public void pathDepth() throws Exception{
+        ChangeSetBuilder cb = new ChangeSetBuilder(2, 2);
+        cb.addParentPath("/a/b");
+        cb.addParentPath("/x");
+        cb.addParentPath("/p/q/r");
+
+        ChangeSet cs = cb.build();
+        assertThat(cs.getParentPaths(), containsInAnyOrder("/a/b", "/x"));
+    }
+
     private static void add(ChangeSetBuilder cb, String suffix){
         cb.addNodeType("nt-"+suffix)
                 .addParentPath("p-"+suffix)


Reply via email to