You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2016/11/07 13:41:01 UTC

svn commit: r1768509 - in /sling/trunk/bundles/extensions/repoinit/parser/src: main/java/org/apache/sling/repoinit/parser/operations/ main/javacc/ test/java/org/apache/sling/repoinit/parser/test/ test/resources/testcases/

Author: bdelacretaz
Date: Mon Nov  7 13:41:00 2016
New Revision: 1768509

URL: http://svn.apache.org/viewvc?rev=1768509&view=rev
Log:
SLING-6219 - reponit grammar support for create/delete user

Added:
    sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/CreateUser.java
      - copied, changed from r1768500, sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/CreateServiceUser.java
    sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/DeleteUser.java
      - copied, changed from r1768500, sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/CreateServiceUser.java
    sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-60-output.txt
      - copied, changed from r1768500, sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-50.txt
    sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-60.txt
      - copied, changed from r1768500, sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-50.txt
Modified:
    sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/OperationVisitor.java
    sling/trunk/bundles/extensions/repoinit/parser/src/main/javacc/RepoInitGrammar.jjt
    sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/OperationToStringVisitor.java
    sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99-output.txt
    sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99.txt

Copied: sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/CreateUser.java (from r1768500, sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/CreateServiceUser.java)
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/CreateUser.java?p2=sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/CreateUser.java&p1=sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/CreateServiceUser.java&r1=1768500&r2=1768509&rev=1768509&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/CreateServiceUser.java (original)
+++ sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/CreateUser.java Mon Nov  7 13:41:00 2016
@@ -17,13 +17,37 @@
 
 package org.apache.sling.repoinit.parser.operations;
 
-public class CreateServiceUser extends ServiceUserOperation {
-    public CreateServiceUser(String username) {
-        super(username);
+public class CreateUser extends Operation {
+    private final String username;
+    private final String passwordEncoding;
+    private final String password;
+
+    /** Operation that creates a user.
+     * @param username the name of the user to create
+     * @param passwordEncoding optional encoding for the supplied password
+     * @param password optional password
+     */
+    public CreateUser(String username, String passwordEncoding, String password) {
+        this.username = username;
+        this.passwordEncoding = passwordEncoding;
+        this.password = password;
     }
 
     @Override
     public void accept(OperationVisitor v) {
-        v.visitCreateServiceUser(this);
+        v.visitCreateUser(this);
+    }
+
+    @Override
+    protected String getParametersDescription() {
+        final StringBuilder sb = new StringBuilder(username);
+        if(password != null) {
+            if(passwordEncoding == null) {
+                sb.append(" (with password)");
+            } else {
+                sb.append(" (with encoded password)");
+            }
+        }
+        return sb.toString();
     }
 }

Copied: sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/DeleteUser.java (from r1768500, sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/CreateServiceUser.java)
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/DeleteUser.java?p2=sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/DeleteUser.java&p1=sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/CreateServiceUser.java&r1=1768500&r2=1768509&rev=1768509&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/CreateServiceUser.java (original)
+++ sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/DeleteUser.java Mon Nov  7 13:41:00 2016
@@ -17,13 +17,23 @@
 
 package org.apache.sling.repoinit.parser.operations;
 
-public class CreateServiceUser extends ServiceUserOperation {
-    public CreateServiceUser(String username) {
-        super(username);
+public class DeleteUser extends Operation {
+    private final String username;
+
+    /** Operation that deletes a user.
+     * @param username the name of the user to delete
+     */
+    public DeleteUser(String username) {
+        this.username = username;
     }
 
     @Override
     public void accept(OperationVisitor v) {
-        v.visitCreateServiceUser(this);
+        v.visitDeleteUser(this);
+    }
+
+    @Override
+    protected String getParametersDescription() {
+        return username;
     }
 }

Modified: sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/OperationVisitor.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/OperationVisitor.java?rev=1768509&r1=1768508&r2=1768509&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/OperationVisitor.java (original)
+++ sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/OperationVisitor.java Mon Nov  7 13:41:00 2016
@@ -18,6 +18,8 @@
 package org.apache.sling.repoinit.parser.operations;
 
 public interface OperationVisitor {
+    void visitCreateUser(CreateUser u);
+    void visitDeleteUser(DeleteUser u);
     void visitCreateServiceUser(CreateServiceUser s);
     void visitDeleteServiceUser(DeleteServiceUser s);
     void visitSetAclPrincipal(SetAclPrincipals s);

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=1768509&r1=1768508&r2=1768509&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 Mon Nov  7 13:41:00 2016
@@ -69,9 +69,13 @@ TOKEN:
 |   < NODETYPES: "nodetypes" >
 |   < REGISTER: "register" >
 |   < NAMESPACE: "namespace" >
+|   < WITH: "with" >
+|   < PASSWORD: "password" >
 |   < START_TEXTBLOCK: "<<===" > : TEXTBLOCK
 |   < LPAREN: "(" >
 |   < RPAREN: ")" >
+|   < LCURLY: "{" >
+|   < RCURLY: "}" >
 |   < COMMA: "," >
 |   < STAR: "*" >
 
@@ -105,6 +109,8 @@ List<Operation> parse() :
         | createPathStatement(result)
         | registerNamespaceStatement(result)
         | registerNodetypesStatement(result)
+        | createUserStatement(result)
+        | deleteUserStatement(result)
         | blankLine() 
     ) * 
     <EOF>
@@ -333,4 +339,36 @@ void registerNodetypesStatement(List<Ope
     {
         result.add(new RegisterNodetypes(b.toString()));
     }
+}
+
+void createUserStatement(List<Operation> result) :
+{
+    Token user = null;
+    Token encoding = null;
+    Token password = null;
+}
+{
+    <CREATE> <USER> 
+    ( user = <STRING> )
+    ( <WITH> <PASSWORD> ( <LCURLY> encoding = <STRING> <RCURLY> )? password = <STRING> )?
+    
+    {
+        result.add(new CreateUser(user.image, 
+            (encoding == null ? null : encoding.image), 
+            (password == null ? null : password.image)
+        ));
+    }
+}
+
+void deleteUserStatement(List<Operation> result) :
+{
+    Token user = null;
+}
+{
+    <DELETE> <USER> 
+    ( user = <STRING> )
+
+    {
+        result.add(new DeleteUser(user.image));
+    }
 }
\ No newline at end of file

Modified: sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/OperationToStringVisitor.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/OperationToStringVisitor.java?rev=1768509&r1=1768508&r2=1768509&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/OperationToStringVisitor.java (original)
+++ sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/OperationToStringVisitor.java Mon Nov  7 13:41:00 2016
@@ -23,7 +23,9 @@ import java.util.Collection;
 import org.apache.sling.repoinit.parser.operations.AclLine;
 import org.apache.sling.repoinit.parser.operations.CreatePath;
 import org.apache.sling.repoinit.parser.operations.CreateServiceUser;
+import org.apache.sling.repoinit.parser.operations.CreateUser;
 import org.apache.sling.repoinit.parser.operations.DeleteServiceUser;
+import org.apache.sling.repoinit.parser.operations.DeleteUser;
 import org.apache.sling.repoinit.parser.operations.RegisterNodetypes;
 import org.apache.sling.repoinit.parser.operations.OperationVisitor;
 import org.apache.sling.repoinit.parser.operations.RegisterNamespace;
@@ -52,6 +54,16 @@ class OperationToStringVisitor implement
     }
 
     @Override
+    public void visitCreateUser(CreateUser u) {
+        out.println(u.toString());
+    }
+
+    @Override
+    public void visitDeleteUser(DeleteUser u) {
+        out.println(u.toString());
+    }
+
+    @Override
     public void visitSetAclPrincipal(SetAclPrincipals s) {
         out.print(s.getClass().getSimpleName());
         out.print(" for ");

Copied: sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-60-output.txt (from r1768500, sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-50.txt)
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-60-output.txt?p2=sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-60-output.txt&p1=sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-50.txt&r1=1768500&r2=1768509&rev=1768509&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-50.txt (original)
+++ sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-60-output.txt Mon Nov  7 13:41:00 2016
@@ -1,37 +1,6 @@
-# Test parsing embedded CNDs
-
-register nodetypes
-<<===
-    <slingevent='http://sling.apache.org/jcr/event/1.0'>
-    <nt='http://www.jcp.org/jcr/nt/1.0'>
-    <mix='http://www.jcp.org/jcr/mix/1.0'>
-    
-    [slingevent:Event] > nt:unstructured, nt:hierarchyNode
-      - slingevent:topic (string)
-      - slingevent:application (string)
-      - slingevent:created (date)
-      - slingevent:properties (binary)
-      
-    [slingevent:Job] > slingevent:Event, mix:lockable
-      - slingevent:processor (string)
-      - slingevent:id (string)
-      - slingevent:finished (date)
-     
-    [slingevent:TimedEvent] > slingevent:Event, mix:lockable
-      - slingevent:processor (string)
-      - slingevent:id (string)
-      - slingevent:expression (string)
-      - slingevent:date (date)
-      - slingevent:period (long)
-===>>
-
-register nodetypes
-<<===
-Just one line, not indented
-===>>
-
-register nodetypes
-<<===
-<< Using line prefixes
-<< to avoid conflicts with Sling provisioning model parser
-===>>
+DeleteUser userB
+CreateUser userB
+CreateUser userC (with password)
+CreateUser userD (with encoded password)
+CreateUser userE (with encoded password)
+CreateUser one_with-more-chars.ok:/123456 (with encoded password)
\ No newline at end of file

Copied: sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-60.txt (from r1768500, sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-50.txt)
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-60.txt?p2=sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-60.txt&p1=sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-50.txt&r1=1768500&r2=1768509&rev=1768509&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-50.txt (original)
+++ sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-60.txt Mon Nov  7 13:41:00 2016
@@ -1,37 +1,11 @@
-# Test parsing embedded CNDs
+# Test create/delete user statements
 
-register nodetypes
-<<===
-    <slingevent='http://sling.apache.org/jcr/event/1.0'>
-    <nt='http://www.jcp.org/jcr/nt/1.0'>
-    <mix='http://www.jcp.org/jcr/mix/1.0'>
-    
-    [slingevent:Event] > nt:unstructured, nt:hierarchyNode
-      - slingevent:topic (string)
-      - slingevent:application (string)
-      - slingevent:created (date)
-      - slingevent:properties (binary)
-      
-    [slingevent:Job] > slingevent:Event, mix:lockable
-      - slingevent:processor (string)
-      - slingevent:id (string)
-      - slingevent:finished (date)
-     
-    [slingevent:TimedEvent] > slingevent:Event, mix:lockable
-      - slingevent:processor (string)
-      - slingevent:id (string)
-      - slingevent:expression (string)
-      - slingevent:date (date)
-      - slingevent:period (long)
-===>>
+delete user userB
+create user userB
 
-register nodetypes
-<<===
-Just one line, not indented
-===>>
+create user userC with password some_password
+create user userD with password {SHA-256}dc460da4ad72c482231e28e688e01f2778a88ce31a08826899d54ef7183998b5
 
-register nodetypes
-<<===
-<< Using line prefixes
-<< to avoid conflicts with Sling provisioning model parser
-===>>
+create user userE with password {someEncoding} afdgwdsdf
+
+create user one_with-more-chars.ok:/123456 with password {encoding_with.ok-:/12345} pw-with.ok-:/13456
\ No newline at end of file

Modified: sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99-output.txt
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99-output.txt?rev=1768509&r1=1768508&r2=1768509&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99-output.txt (original)
+++ sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99-output.txt Mon Nov  7 13:41:00 2016
@@ -23,4 +23,6 @@ RegisterNodetypes:
  [slingevent:Event] > nt:unstructured, nt:hierarchyNode
       - slingevent:topic (string)
       - slingevent:properties (binary)
+CreateUser userE (with encoded password)
+CreateUser one_with-more-chars.ok:/123456 (with encoded password)
 CreateServiceUser the-last-one
\ No newline at end of file

Modified: sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99.txt
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99.txt?rev=1768509&r1=1768508&r2=1768509&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99.txt (original)
+++ sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99.txt Mon Nov  7 13:41:00 2016
@@ -42,4 +42,6 @@ register nodetypes
       - slingevent:properties (binary)
 ===>>
 
+create user userE with password {someEncoding} afdgwdsdf
+create user one_with-more-chars.ok:/123456 with password {encoding_with.ok-:/12345} pw-with.ok-:/13456
 create service user the-last-one
\ No newline at end of file