Author: tmaret
Date: Tue Sep 19 14:06:25 2017
New Revision: 1808879

URL: http://svn.apache.org/viewvc?rev=1808879&view=rev
Log:
SLING-6774 - Allowed character set in repo init is too restrictive

* Extend path parser and JCR implementation with valid symbols '+', '@' and ':'

Added:
    
sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-14-output.txt
    
sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-14.txt
Modified:
    
sling/trunk/bundles/extensions/repoinit/parser/src/main/javacc/RepoInitGrammar.jjt
    
sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-20-output.txt
    
sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-20.txt
    
sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit/CreatePathsTest.java

Modified: 
sling/trunk/bundles/extensions/repoinit/parser/src/main/javacc/RepoInitGrammar.jjt
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/main/javacc/RepoInitGrammar.jjt?rev=1808879&r1=1808878&r2=1808879&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/repoinit/parser/src/main/javacc/RepoInitGrammar.jjt
 (original)
+++ 
sling/trunk/bundles/extensions/repoinit/parser/src/main/javacc/RepoInitGrammar.jjt
 Tue Sep 19 14:06:25 2017
@@ -90,7 +90,7 @@ TOKEN:
 
 /* The order of these fuzzy statements is important (first match wins?) */ 
 |   < NAMESPACED_ITEM: (["a"-"z"] | ["A"-"Z"])+ ":" (["a"-"z"] | ["A"-"Z"])+ >
-|   < PATH_STRING: "/" (["a"-"z"] | ["A"-"Z"] | ["0"-"9"] | ["-"] | ["_"] | 
["."] | ["/"]) * >
+|   < PATH_STRING: "/" (["a"-"z"] | ["A"-"Z"] | ["0"-"9"] | ["-"] | ["_"] | 
["."] | ["@"] | [":"] | ["+"] | ["/"]) * >
 |   < STRING: (["a"-"z"] | ["A"-"Z"] | ["0"-"9"] | ["-"] | ["_"] | ["."] | 
["/"] | [":"] | ["*"]) * >
 |   < EOL: "\n" >
 }

Added: 
sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-14-output.txt
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-14-output.txt?rev=1808879&view=auto
==============================================================================
--- 
sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-14-output.txt
 (added)
+++ 
sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-14-output.txt
 Tue Sep 19 14:06:25 2017
@@ -0,0 +1,3 @@
+SetAclPaths on /one:name /two+name /three@name 
+  AclLine REMOVE_ALL {principals=[user1]}
+  AclLine ALLOW {principals=[user1], privileges=[jcr:read]}

Added: 
sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-14.txt
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-14.txt?rev=1808879&view=auto
==============================================================================
--- 
sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-14.txt
 (added)
+++ 
sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-14.txt
 Tue Sep 19 14:06:25 2017
@@ -0,0 +1,5 @@
+# Test allowed path characters, see SLING-6774
+set ACL on /one:name,/two+name,/three@name
+    remove * for user1
+    allow jcr:read for user1
+end
\ No newline at end of file

Modified: 
sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-20-output.txt
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-20-output.txt?rev=1808879&r1=1808878&r2=1808879&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-20-output.txt
 (original)
+++ 
sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-20-output.txt
 Tue Sep 19 14:06:25 2017
@@ -6,4 +6,7 @@ CreatePath [one(mixin [nt:art]), step(mi
 CreatePath [one(nt:foxtrot), step(nt:foxtrot mixin [nt:dance]), 
two(nt:foxtrot), steps(nt:foxtrot)]
 CreatePath [one, step(mixin [nt:dance, nt:art]), two, steps]
 CreatePath [one, step(nt:foxtrot mixin [nt:dance]), two, steps]
-CreatePath [one, step(nt:foxtrot mixin [nt:dance, nt:art]), two, steps]
\ No newline at end of file
+CreatePath [one, step(nt:foxtrot mixin [nt:dance, nt:art]), two, steps]
+CreatePath [one:and, step, two:and, steps]
+CreatePath [one@home, step, two@home, steps]
+CreatePath [one+tap, step, two+tap, steps]
\ No newline at end of file

Modified: 
sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-20.txt
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-20.txt?rev=1808879&r1=1808878&r2=1808879&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-20.txt
 (original)
+++ 
sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-20.txt
 Tue Sep 19 14:06:25 2017
@@ -7,4 +7,7 @@ create path /one(mixin nt:art)/step(mixi
 create path (nt:foxtrot) /one/step(mixin nt:dance)/two/steps
 create path /one/step(mixin nt:dance,nt:art)/two/steps
 create path /one/step(nt:foxtrot mixin nt:dance)/two/steps
-create path /one/step(nt:foxtrot mixin nt:dance,nt:art)/two/steps
\ No newline at end of file
+create path /one/step(nt:foxtrot mixin nt:dance,nt:art)/two/steps
+create path /one:and/step/two:and/steps
+create path /one@home/step/two@home/steps
+create path /one+tap/step/two+tap/steps
\ No newline at end of file

Modified: 
sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit/CreatePathsTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit/CreatePathsTest.java?rev=1808879&r1=1808878&r2=1808879&view=diff
==============================================================================
--- 
sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit/CreatePathsTest.java
 (original)
+++ 
sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit/CreatePathsTest.java
 Tue Sep 19 14:06:25 2017
@@ -50,6 +50,27 @@ public class CreatePathsTest {
         U.parseAndExecute("create path " + path);
         U.assertNodeExists(path);
     }
+
+    @Test
+    public void createSimplePathWithNamespace() throws Exception {
+        final String path = "/rep:policy/one";
+        U.parseAndExecute("create path " + path);
+        U.assertNodeExists(path);
+    }
+
+    @Test
+    public void createSimplePathWithAtSymbol() throws Exception {
+        final String path = "/one/@two/three";
+        U.parseAndExecute("create path " + path);
+        U.assertNodeExists(path);
+    }
+
+    @Test
+    public void createSimplePathWithPlusSymbol() throws Exception {
+        final String path = "/one/+two/three";
+        U.parseAndExecute("create path " + path);
+        U.assertNodeExists(path);
+    }
     
     @Test
     public void createPathWithTypes() throws Exception {


Reply via email to