Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id D826B200D35 for ; Tue, 7 Nov 2017 10:57:54 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id D6C00160C00; Tue, 7 Nov 2017 09:57:54 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id F22C1160C08 for ; Tue, 7 Nov 2017 10:57:52 +0100 (CET) Received: (qmail 33250 invoked by uid 500); 7 Nov 2017 09:57:51 -0000 Mailing-List: contact commits-help@sling.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@sling.apache.org Delivered-To: mailing list commits@sling.apache.org Received: (qmail 32703 invoked by uid 99); 7 Nov 2017 09:57:51 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 07 Nov 2017 09:57:51 +0000 Received: by gitbox.apache.org (ASF Mail Server at gitbox.apache.org, from userid 33) id E0BC987AEB; Tue, 7 Nov 2017 09:57:50 +0000 (UTC) Date: Tue, 07 Nov 2017 09:58:20 +0000 To: "commits@sling.apache.org" Subject: [sling-org-apache-sling-repoinit-parser] 03/10: SLING-5842 - add 'register nodetypes' statement to repoinit parser MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit From: rombert@apache.org In-Reply-To: <151004866922.16849.6498224233622803165@gitbox.apache.org> References: <151004866922.16849.6498224233622803165@gitbox.apache.org> X-Git-Host: gitbox.apache.org X-Git-Repo: sling-org-apache-sling-repoinit-parser X-Git-Refname: refs/tags/org.apache.sling.repoinit.parser-1.0.4 X-Git-Reftype: annotated tag X-Git-Rev: 4563ff6ea16b1b374fa2fc36576f1dbbdf1d3158 X-Git-NotificationType: diff X-Git-Multimail-Version: 1.5.dev Auto-Submitted: auto-generated Message-Id: <20171107095750.E0BC987AEB@gitbox.apache.org> archived-at: Tue, 07 Nov 2017 09:57:55 -0000 This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.repoinit.parser-1.0.4 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-repoinit-parser.git commit 4563ff6ea16b1b374fa2fc36576f1dbbdf1d3158 Author: Bertrand Delacretaz AuthorDate: Mon Jul 18 15:08:18 2016 +0000 SLING-5842 - add 'register nodetypes' statement to repoinit parser git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/repoinit/parser@1753237 13f79535-47bb-0310-9956-ffa450edef68 --- .../parser/operations/OperationVisitor.java | 1 + ...perationVisitor.java => RegisterNodetypes.java} | 35 ++++++++++++++++----- src/main/javacc/RepoInitGrammar.jjt | 36 ++++++++++++++++++++++ .../parser/test/OperationToStringVisitor.java | 6 ++++ src/test/resources/testcases/test-50-output.txt | 27 ++++++++++++++++ src/test/resources/testcases/test-50.txt | 31 +++++++++++++++++++ src/test/resources/testcases/test-99-output.txt | 8 +++++ src/test/resources/testcases/test-99.txt | 9 ++++++ 8 files changed, 146 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/apache/sling/repoinit/parser/operations/OperationVisitor.java b/src/main/java/org/apache/sling/repoinit/parser/operations/OperationVisitor.java index d7d2682..8693a99 100644 --- a/src/main/java/org/apache/sling/repoinit/parser/operations/OperationVisitor.java +++ b/src/main/java/org/apache/sling/repoinit/parser/operations/OperationVisitor.java @@ -24,4 +24,5 @@ public interface OperationVisitor { void visitSetAclPaths(SetAclPaths s); void visitCreatePath(CreatePath cp); void visitRegisterNamespace(RegisterNamespace rn); + void visitRegisterNodetypes(RegisterNodetypes b); } diff --git a/src/main/java/org/apache/sling/repoinit/parser/operations/OperationVisitor.java b/src/main/java/org/apache/sling/repoinit/parser/operations/RegisterNodetypes.java similarity index 53% copy from src/main/java/org/apache/sling/repoinit/parser/operations/OperationVisitor.java copy to src/main/java/org/apache/sling/repoinit/parser/operations/RegisterNodetypes.java index d7d2682..3266900 100644 --- a/src/main/java/org/apache/sling/repoinit/parser/operations/OperationVisitor.java +++ b/src/main/java/org/apache/sling/repoinit/parser/operations/RegisterNodetypes.java @@ -17,11 +17,32 @@ package org.apache.sling.repoinit.parser.operations; -public interface OperationVisitor { - void visitCreateServiceUser(CreateServiceUser s); - void visitDeleteServiceUser(DeleteServiceUser s); - void visitSetAclPrincipal(SetAclPrincipals s); - void visitSetAclPaths(SetAclPaths s); - void visitCreatePath(CreatePath cp); - void visitRegisterNamespace(RegisterNamespace rn); +/** An embedded block of text */ +public class RegisterNodetypes extends Operation { + private final String cndStatements; + + public RegisterNodetypes(String cndStatements) { + this.cndStatements = cndStatements; + } + + @Override + public String toString() { + return getClass().getSimpleName() + ":\n" + getParametersDescription(); + } + + @Override + protected String getParametersDescription() { + final StringBuilder sb = new StringBuilder(); + sb.append(getCndStatements()); + return sb.toString(); + } + + @Override + public void accept(OperationVisitor v) { + v.visitRegisterNodetypes(this); + } + + public String getCndStatements() { + return cndStatements; + } } diff --git a/src/main/javacc/RepoInitGrammar.jjt b/src/main/javacc/RepoInitGrammar.jjt index 1f887b5..f1191eb 100644 --- a/src/main/javacc/RepoInitGrammar.jjt +++ b/src/main/javacc/RepoInitGrammar.jjt @@ -69,6 +69,7 @@ TOKEN: | < NODETYPES: "nodetypes" > | < REGISTER: "register" > | < NAMESPACE: "namespace" > +| < START_TEXTBLOCK: "<<<===" > : TEXTBLOCK | < LPAREN: "(" > | < RPAREN: ")" > | < COMMA: "," > @@ -81,6 +82,17 @@ TOKEN: | < EOL: "\n" > } + SKIP : +{ + "\r" +} + + TOKEN : +{ + < TEXT : ~[] > +| < END_TEXTBLOCK: "===>>>" > : DEFAULT +} + List parse() : {} { @@ -92,6 +104,7 @@ List parse() : | setAclPrincipals(result) | createPathStatement(result) | registerNamespaceStatement(result) + | registerNodetypesStatement(result) | blankLine() ) * @@ -302,3 +315,26 @@ void registerNamespaceStatement(List result) : ( | ) } + +void textBlock(StringBuilder b) : +{ + Token t; +} +{ + + ( t = { b.append(t.image); } )* + +} + +void registerNodetypesStatement(List result) : +{ + StringBuilder b = new StringBuilder(); +} +{ + + textBlock(b) + ( | ) + { + result.add(new RegisterNodetypes(b.toString())); + } +} \ No newline at end of file diff --git a/src/test/java/org/apache/sling/repoinit/parser/test/OperationToStringVisitor.java b/src/test/java/org/apache/sling/repoinit/parser/test/OperationToStringVisitor.java index a25128a..ede1c58 100644 --- a/src/test/java/org/apache/sling/repoinit/parser/test/OperationToStringVisitor.java +++ b/src/test/java/org/apache/sling/repoinit/parser/test/OperationToStringVisitor.java @@ -24,6 +24,7 @@ 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.DeleteServiceUser; +import org.apache.sling.repoinit.parser.operations.RegisterNodetypes; import org.apache.sling.repoinit.parser.operations.OperationVisitor; import org.apache.sling.repoinit.parser.operations.RegisterNamespace; import org.apache.sling.repoinit.parser.operations.SetAclPaths; @@ -84,6 +85,11 @@ class OperationToStringVisitor implements OperationVisitor { out.println(rn.toString()); } + @Override + public void visitRegisterNodetypes(RegisterNodetypes nt) { + out.println(nt.toString()); + } + private void dumpAclLines(Collection c) { for(AclLine line : c) { out.print(" "); diff --git a/src/test/resources/testcases/test-50-output.txt b/src/test/resources/testcases/test-50-output.txt new file mode 100644 index 0000000..dfa1efd --- /dev/null +++ b/src/test/resources/testcases/test-50-output.txt @@ -0,0 +1,27 @@ +RegisterNodetypes: + + + + + + [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) + +RegisterNodetypes: + +Just one line, not indented \ No newline at end of file diff --git a/src/test/resources/testcases/test-50.txt b/src/test/resources/testcases/test-50.txt new file mode 100644 index 0000000..230a071 --- /dev/null +++ b/src/test/resources/testcases/test-50.txt @@ -0,0 +1,31 @@ +# Test parsing embedded CNDs + +register nodetypes +<<<=== + + + + + [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 +===>>> diff --git a/src/test/resources/testcases/test-99-output.txt b/src/test/resources/testcases/test-99-output.txt index fcbe63c..1fe2f1a 100644 --- a/src/test/resources/testcases/test-99-output.txt +++ b/src/test/resources/testcases/test-99-output.txt @@ -17,4 +17,12 @@ SetAclPrincipals for alice bob fred AclLine DENY {paths=[/content/example.com], privileges=[jcr:write]} AclLine DENY {nodetypes=[example:Page], paths=[/], privileges=[jcr:all]} RegisterNamespace (NSprefix) uri:someURI/v1.42 +RegisterNodetypes: + + + + [slingevent:Event] > nt:unstructured, nt:hierarchyNode + - slingevent:topic (string) + - slingevent:properties (binary) + CreateServiceUser the-last-one \ No newline at end of file diff --git a/src/test/resources/testcases/test-99.txt b/src/test/resources/testcases/test-99.txt index 54927c4..a2f200a 100644 --- a/src/test/resources/testcases/test-99.txt +++ b/src/test/resources/testcases/test-99.txt @@ -33,4 +33,13 @@ end register namespace ( NSprefix ) uri:someURI/v1.42 +register nodetypes +<<<=== + + + [slingevent:Event] > nt:unstructured, nt:hierarchyNode + - slingevent:topic (string) + - slingevent:properties (binary) +===>>> + create service user the-last-one \ No newline at end of file -- To stop receiving notification emails like this one, please contact "commits@sling.apache.org" .