You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2016/02/19 14:03:03 UTC

[4/4] camel git commit: CAMEL-9461: sql-stored: add support for using new lines and whitespace

CAMEL-9461: sql-stored: add support for using new lines and whitespace


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/38c1f6f7
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/38c1f6f7
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/38c1f6f7

Branch: refs/heads/master
Commit: 38c1f6f7f06163d3e58400a828ed532a5ab1d8d8
Parents: f1ff40a
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Feb 19 13:35:45 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Feb 19 13:49:42 2016 +0100

----------------------------------------------------------------------
 .../stored/template/generated/SSPTParser.java   |  20 +-
 .../template/generated/SSPTParserConstants.java |  22 +-
 .../generated/SSPTParserTokenManager.java       | 210 +++++++++++++------
 .../sql/stored/template/grammar/sspt.jj         |  16 +-
 .../src/test/resources/sql/selectStored.sql     |   8 +-
 5 files changed, 182 insertions(+), 94 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/38c1f6f7/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/generated/SSPTParser.java
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/generated/SSPTParser.java b/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/generated/SSPTParser.java
index 066e5f2..da08c20 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/generated/SSPTParser.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/generated/SSPTParser.java
@@ -15,13 +15,13 @@ public class SSPTParser implements SSPTParserConstants {
     Template template = new Template();
     Object parameter = null;
     procedureName = jj_consume_token(IDENTIFIER);
-    jj_consume_token(1);
+    jj_consume_token(PROCEDURE_BEGIN);
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case 4:
+    case 2:
     case NUMBER:
     case IDENTIFIER:
       parameter = Parameter();
-                                                                 template.addParameter(parameter);
+                                                                               template.addParameter(parameter);
       label_1:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -41,7 +41,7 @@ public class SSPTParser implements SSPTParserConstants {
       jj_la1[1] = jj_gen;
       ;
     }
-    jj_consume_token(2);
+    jj_consume_token(PROCEDURE_END);
     jj_consume_token(0);
    template.setProcedureName(procedureName.toString());
    {if (true) return template;}
@@ -56,7 +56,7 @@ public class SSPTParser implements SSPTParserConstants {
       param = InputParameter();
                                 {if (true) return param;}
       break;
-    case 4:
+    case 2:
       param = OutParameter();
                                                                           {if (true) return param;}
       break;
@@ -73,7 +73,7 @@ public class SSPTParser implements SSPTParserConstants {
      String name;
      Token valueSrcToken;
     sqlTypeToken = ParameterSqlType();
-    jj_consume_token(3);
+    jj_consume_token(1);
     valueSrcToken = InputParameterSrc();
         int sqlType = ParseHelper.parseSqlType(sqlTypeToken);
         {if (true) return new InputParameter(createNextParameterName(),sqlType,valueSrcToken);}
@@ -84,10 +84,10 @@ public class SSPTParser implements SSPTParserConstants {
      Token sqlTypeToken;
      String name;
      String outValueMapKey;
-    jj_consume_token(4);
-    jj_consume_token(3);
+    jj_consume_token(2);
+    jj_consume_token(1);
     sqlTypeToken = ParameterSqlType();
-    jj_consume_token(3);
+    jj_consume_token(1);
     outValueMapKey = OutHeader();
         {if (true) return new OutParameter(createNextParameterName(),ParseHelper.parseSqlType(sqlTypeToken),outValueMapKey);}
     throw new Error("Missing return statement in function");
@@ -152,7 +152,7 @@ public class SSPTParser implements SSPTParserConstants {
       jj_la1_init_0();
    }
    private static void jj_la1_init_0() {
-      jj_la1_0 = new int[] {0x800,0x4030,0x4030,0x4020,0x3000,};
+      jj_la1_0 = new int[] {0x200,0x400c,0x400c,0x4008,0x3000,};
    }
 
   /** Constructor with InputStream. */

http://git-wip-us.apache.org/repos/asf/camel/blob/38c1f6f7/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/generated/SSPTParserConstants.java
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/generated/SSPTParserConstants.java b/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/generated/SSPTParserConstants.java
index dc48177..f0ba72c 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/generated/SSPTParserConstants.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/generated/SSPTParserConstants.java
@@ -11,19 +11,23 @@ public interface SSPTParserConstants {
   /** End of File. */
   int EOF = 0;
   /** RegularExpression Id. */
-  int NUMBER = 5;
+  int NUMBER = 3;
   /** RegularExpression Id. */
-  int DIGIT = 6;
+  int DIGIT = 4;
   /** RegularExpression Id. */
-  int LETTER = 7;
+  int LETTER = 5;
   /** RegularExpression Id. */
-  int SPECIAL = 8;
+  int SPECIAL = 6;
   /** RegularExpression Id. */
-  int WHITESPACE = 9;
+  int WHITESPACE = 7;
   /** RegularExpression Id. */
-  int COMMA = 10;
+  int COMMA = 8;
   /** RegularExpression Id. */
-  int SEPARATOR = 11;
+  int SEPARATOR = 9;
+  /** RegularExpression Id. */
+  int PROCEDURE_BEGIN = 10;
+  /** RegularExpression Id. */
+  int PROCEDURE_END = 11;
   /** RegularExpression Id. */
   int SIMPLE_EXP_TOKEN = 12;
   /** RegularExpression Id. */
@@ -37,8 +41,6 @@ public interface SSPTParserConstants {
   /** Literal token values. */
   String[] tokenImage = {
     "<EOF>",
-    "\"(\"",
-    "\")\"",
     "\" \"",
     "\"OUT\"",
     "<NUMBER>",
@@ -48,6 +50,8 @@ public interface SSPTParserConstants {
     "<WHITESPACE>",
     "\",\"",
     "<SEPARATOR>",
+    "<PROCEDURE_BEGIN>",
+    "<PROCEDURE_END>",
     "<SIMPLE_EXP_TOKEN>",
     "<PARAMETER_POS_TOKEN>",
     "<IDENTIFIER>",

http://git-wip-us.apache.org/repos/asf/camel/blob/38c1f6f7/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/generated/SSPTParserTokenManager.java
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/generated/SSPTParserTokenManager.java b/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/generated/SSPTParserTokenManager.java
index 9d27a69..15a9347 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/generated/SSPTParserTokenManager.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/generated/SSPTParserTokenManager.java
@@ -15,20 +15,20 @@ private final int jjStopStringLiteralDfa_0(int pos, long active0)
    switch (pos)
    {
       case 0:
-         if ((active0 & 0x10L) != 0L)
+         if ((active0 & 0x4L) != 0L)
          {
             jjmatchedKind = 14;
-            return 11;
+            return 14;
          }
-         if ((active0 & 0x8L) != 0L)
-            return 12;
+         if ((active0 & 0x2L) != 0L)
+            return 19;
          return -1;
       case 1:
-         if ((active0 & 0x10L) != 0L)
+         if ((active0 & 0x4L) != 0L)
          {
             jjmatchedKind = 14;
             jjmatchedPos = 1;
-            return 11;
+            return 14;
          }
          return -1;
       default :
@@ -50,15 +50,11 @@ private int jjMoveStringLiteralDfa0_0()
    switch(curChar)
    {
       case 32:
-         return jjStartNfaWithStates_0(0, 3, 12);
-      case 40:
-         return jjStopAtPos(0, 1);
-      case 41:
-         return jjStopAtPos(0, 2);
+         return jjStartNfaWithStates_0(0, 1, 19);
       case 79:
-         return jjMoveStringLiteralDfa1_0(0x10L);
+         return jjMoveStringLiteralDfa1_0(0x4L);
       default :
-         return jjMoveNfa_0(7, 0);
+         return jjMoveNfa_0(10, 0);
    }
 }
 private int jjMoveStringLiteralDfa1_0(long active0)
@@ -71,7 +67,7 @@ private int jjMoveStringLiteralDfa1_0(long active0)
    switch(curChar)
    {
       case 85:
-         return jjMoveStringLiteralDfa2_0(active0, 0x10L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x4L);
       default :
          break;
    }
@@ -89,8 +85,8 @@ private int jjMoveStringLiteralDfa2_0(long old0, long active0)
    switch(curChar)
    {
       case 84:
-         if ((active0 & 0x10L) != 0L)
-            return jjStartNfaWithStates_0(2, 4, 11);
+         if ((active0 & 0x4L) != 0L)
+            return jjStartNfaWithStates_0(2, 2, 14);
          break;
       default :
          break;
@@ -108,7 +104,7 @@ private int jjStartNfaWithStates_0(int pos, int kind, int state)
 private int jjMoveNfa_0(int startState, int curPos)
 {
    int startsAt = 0;
-   jjnewStateCnt = 12;
+   jjnewStateCnt = 19;
    int i = 1;
    jjstateSet[0] = startState;
    int kind = 0x7fffffff;
@@ -123,91 +119,164 @@ private int jjMoveNfa_0(int startState, int curPos)
          {
             switch(jjstateSet[--i])
             {
-               case 7:
+               case 10:
                   if ((0x3ff609c00000000L & l) != 0L)
                   {
                      if (kind > 14)
                         kind = 14;
-                     jjCheckNAdd(11);
+                     jjCheckNAdd(14);
+                  }
+                  else if ((0x100002600L & l) != 0L)
+                  {
+                     if (kind > 7)
+                        kind = 7;
+                     jjCheckNAddStates(0, 5);
                   }
-                  else if ((0x100000600L & l) != 0L)
-                     jjCheckNAddTwoStates(1, 2);
                   else if (curChar == 58)
-                     jjstateSet[jjnewStateCnt++] = 8;
-                  else if (curChar == 44)
+                     jjstateSet[jjnewStateCnt++] = 11;
+                  else if (curChar == 41)
                   {
                      if (kind > 11)
                         kind = 11;
-                     jjCheckNAdd(3);
+                     jjCheckNAdd(6);
+                  }
+                  else if (curChar == 40)
+                  {
+                     if (kind > 10)
+                        kind = 10;
+                     jjCheckNAdd(4);
+                  }
+                  else if (curChar == 44)
+                  {
+                     if (kind > 9)
+                        kind = 9;
+                     jjCheckNAdd(2);
                   }
                   if ((0x3ff000000000000L & l) != 0L)
                   {
-                     if (kind > 5)
-                        kind = 5;
+                     if (kind > 3)
+                        kind = 3;
                      jjCheckNAdd(0);
                   }
                   else if (curChar == 36)
-                     jjstateSet[jjnewStateCnt++] = 4;
+                     jjstateSet[jjnewStateCnt++] = 7;
                   break;
-               case 12:
-                  if ((0x100000600L & l) != 0L)
-                     jjCheckNAddTwoStates(1, 2);
-                  else if (curChar == 44)
+               case 19:
+                  if ((0x100002600L & l) != 0L)
+                     jjCheckNAddTwoStates(18, 5);
+                  else if (curChar == 41)
                   {
                      if (kind > 11)
                         kind = 11;
-                     jjCheckNAdd(3);
+                     jjCheckNAdd(6);
+                  }
+                  else if (curChar == 40)
+                  {
+                     if (kind > 10)
+                        kind = 10;
+                     jjCheckNAdd(4);
+                  }
+                  else if (curChar == 44)
+                  {
+                     if (kind > 9)
+                        kind = 9;
+                     jjCheckNAdd(2);
                   }
+                  if ((0x100002600L & l) != 0L)
+                     jjCheckNAddTwoStates(17, 3);
+                  if ((0x100002600L & l) != 0L)
+                     jjCheckNAddTwoStates(16, 1);
                   break;
                case 0:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 5)
-                     kind = 5;
+                  if (kind > 3)
+                     kind = 3;
                   jjCheckNAdd(0);
                   break;
                case 1:
-                  if ((0x100000600L & l) != 0L)
-                     jjCheckNAddTwoStates(1, 2);
+                  if (curChar != 44)
+                     break;
+                  kind = 9;
+                  jjCheckNAdd(2);
                   break;
                case 2:
-                  if (curChar != 44)
+                  if ((0x100002600L & l) == 0L)
                      break;
-                  kind = 11;
-                  jjCheckNAdd(3);
+                  if (kind > 9)
+                     kind = 9;
+                  jjCheckNAdd(2);
                   break;
                case 3:
-                  if ((0x100000600L & l) == 0L)
+                  if (curChar != 40)
+                     break;
+                  kind = 10;
+                  jjCheckNAdd(4);
+                  break;
+               case 4:
+                  if ((0x100002600L & l) == 0L)
+                     break;
+                  if (kind > 10)
+                     kind = 10;
+                  jjCheckNAdd(4);
+                  break;
+               case 5:
+                  if (curChar != 41)
+                     break;
+                  kind = 11;
+                  jjCheckNAdd(6);
+                  break;
+               case 6:
+                  if ((0x100002600L & l) == 0L)
                      break;
                   if (kind > 11)
                      kind = 11;
-                  jjCheckNAdd(3);
+                  jjCheckNAdd(6);
                   break;
-               case 5:
+               case 8:
                   if ((0x3ff609d00000000L & l) != 0L)
-                     jjAddStates(0, 1);
+                     jjAddStates(6, 7);
                   break;
-               case 8:
+               case 11:
                   if (curChar == 35)
-                     jjCheckNAdd(9);
+                     jjCheckNAdd(12);
                   break;
-               case 9:
+               case 12:
                   if ((0x3ff609c00000000L & l) == 0L)
                      break;
                   if (kind > 13)
                      kind = 13;
-                  jjCheckNAdd(9);
+                  jjCheckNAdd(12);
                   break;
-               case 10:
+               case 13:
                   if (curChar == 58)
-                     jjstateSet[jjnewStateCnt++] = 8;
+                     jjstateSet[jjnewStateCnt++] = 11;
                   break;
-               case 11:
+               case 14:
                   if ((0x3ff609c00000000L & l) == 0L)
                      break;
                   if (kind > 14)
                      kind = 14;
-                  jjCheckNAdd(11);
+                  jjCheckNAdd(14);
+                  break;
+               case 15:
+                  if ((0x100002600L & l) == 0L)
+                     break;
+                  if (kind > 7)
+                     kind = 7;
+                  jjCheckNAddStates(0, 5);
+                  break;
+               case 16:
+                  if ((0x100002600L & l) != 0L)
+                     jjCheckNAddTwoStates(16, 1);
+                  break;
+               case 17:
+                  if ((0x100002600L & l) != 0L)
+                     jjCheckNAddTwoStates(17, 3);
+                  break;
+               case 18:
+                  if ((0x100002600L & l) != 0L)
+                     jjCheckNAddTwoStates(18, 5);
                   break;
                default : break;
             }
@@ -220,32 +289,32 @@ private int jjMoveNfa_0(int startState, int curPos)
          {
             switch(jjstateSet[--i])
             {
-               case 7:
-               case 11:
+               case 10:
+               case 14:
                   if ((0x2ffffffe87fffffeL & l) == 0L)
                      break;
                   if (kind > 14)
                      kind = 14;
-                  jjCheckNAdd(11);
+                  jjCheckNAdd(14);
                   break;
-               case 4:
+               case 7:
                   if (curChar == 123)
-                     jjCheckNAdd(5);
+                     jjCheckNAdd(8);
                   break;
-               case 5:
+               case 8:
                   if ((0x2ffffffe87fffffeL & l) != 0L)
-                     jjCheckNAddTwoStates(5, 6);
+                     jjCheckNAddTwoStates(8, 9);
                   break;
-               case 6:
+               case 9:
                   if (curChar == 125 && kind > 12)
                      kind = 12;
                   break;
-               case 9:
+               case 12:
                   if ((0x2ffffffe87fffffeL & l) == 0L)
                      break;
                   if (kind > 13)
                      kind = 13;
-                  jjstateSet[jjnewStateCnt++] = 9;
+                  jjstateSet[jjnewStateCnt++] = 12;
                   break;
                default : break;
             }
@@ -270,19 +339,19 @@ private int jjMoveNfa_0(int startState, int curPos)
          kind = 0x7fffffff;
       }
       ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 12 - (jjnewStateCnt = startsAt)))
+      if ((i = jjnewStateCnt) == (startsAt = 19 - (jjnewStateCnt = startsAt)))
          return curPos;
       try { curChar = input_stream.readChar(); }
       catch(java.io.IOException e) { return curPos; }
    }
 }
 static final int[] jjnextStates = {
-   5, 6, 
+   16, 1, 17, 3, 18, 5, 8, 9, 
 };
 
 /** Token literal values. */
 public static final String[] jjstrLiteralImages = {
-"", "\50", "\51", "\40", "\117\125\124", null, null, null, null, null, null, 
+"", "\40", "\117\125\124", null, null, null, null, null, null, null, null, 
 null, null, null, null, };
 
 /** Lexer state names. */
@@ -290,8 +359,8 @@ public static final String[] lexStateNames = {
    "DEFAULT",
 };
 protected SimpleCharStream input_stream;
-private final int[] jjrounds = new int[12];
-private final int[] jjstateSet = new int[24];
+private final int[] jjrounds = new int[19];
+private final int[] jjstateSet = new int[38];
 protected char curChar;
 /** Constructor. */
 public SSPTParserTokenManager(SimpleCharStream stream){
@@ -318,7 +387,7 @@ private void ReInitRounds()
 {
    int i;
    jjround = 0x80000001;
-   for (i = 12; i-- > 0;)
+   for (i = 19; i-- > 0;)
       jjrounds[i] = 0x80000000;
 }
 
@@ -442,4 +511,11 @@ private void jjCheckNAddTwoStates(int state1, int state2)
    jjCheckNAdd(state2);
 }
 
+private void jjCheckNAddStates(int start, int end)
+{
+   do {
+      jjCheckNAdd(jjnextStates[start]);
+   } while (start++ != end);
+}
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/38c1f6f7/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/grammar/sspt.jj
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/grammar/sspt.jj b/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/grammar/sspt.jj
index da7af35..d078591 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/grammar/sspt.jj
+++ b/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/grammar/sspt.jj
@@ -45,9 +45,9 @@ public Template parse() :
     Object parameter = null;
 }
 {
-  (procedureName = <IDENTIFIER> "(" ( (parameter = Parameter() { template.addParameter(parameter);}) (<SEPARATOR>
+  (procedureName = <IDENTIFIER> <PROCEDURE_BEGIN> ( (parameter = Parameter() { template.addParameter(parameter);}) (<SEPARATOR>
   parameter
-  = Parameter(){template.addParameter(parameter);})*)? ")" <EOF>)
+  = Parameter(){template.addParameter(parameter);})*)? <PROCEDURE_END> <EOF>)
   {
    template.setProcedureName(procedureName.toString());
    return template;
@@ -133,7 +133,6 @@ TOKEN: {
     <NUMBER: (["0"-"9"])+>
 }
 
-
 TOKEN: {
     <#DIGIT: (["0"-"9"])>
 }
@@ -147,7 +146,7 @@ TOKEN: {
 }
 
 TOKEN: {
-    <#WHITESPACE: (" "|"\n"|"\t")>
+    <WHITESPACE: (" "|"\n"|"\r"|"\t")>
 }
 
 TOKEN: {
@@ -158,6 +157,14 @@ TOKEN: {
     <SEPARATOR: ( ( <WHITESPACE> )* (<COMMA>) ( <WHITESPACE> )* )>
 }
 
+TOKEN: {
+    <PROCEDURE_BEGIN: ( ( <WHITESPACE> )* "(" ( <WHITESPACE> )* )>
+}
+
+TOKEN: {
+    <PROCEDURE_END: ( ( <WHITESPACE> )* ")" ( <WHITESPACE> )* )>
+}
+
 TOKEN : {
     <SIMPLE_EXP_TOKEN: "${"(<LETTER>|<DIGIT> | <SPECIAL> | " ")+ "}">
 }
@@ -166,7 +173,6 @@ TOKEN : {
     <PARAMETER_POS_TOKEN: ":#"(<LETTER>|<DIGIT>|<SPECIAL> )+>
 }
 
-
 TOKEN : {
     <IDENTIFIER: ( <LETTER> | <DIGIT> | <SPECIAL> )+ >
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/38c1f6f7/components/camel-sql/src/test/resources/sql/selectStored.sql
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/test/resources/sql/selectStored.sql b/components/camel-sql/src/test/resources/sql/selectStored.sql
index f881aa1..7430b7f 100644
--- a/components/camel-sql/src/test/resources/sql/selectStored.sql
+++ b/components/camel-sql/src/test/resources/sql/selectStored.sql
@@ -1,3 +1,5 @@
-SUBNUMBERS(INTEGER ${headers.num1},
-  INTEGER ${headers.num2},
-  OUT INTEGER resultofsub)
\ No newline at end of file
+SUBNUMBERS(
+  INTEGER ${headers.num1} ,
+  INTEGER ${headers.num2} ,
+  OUT INTEGER resultofsub
+)
\ No newline at end of file