You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2018/10/23 13:51:34 UTC
cayenne git commit: Unable to parse comma-separated array
Repository: cayenne
Updated Branches:
refs/heads/master a620461a4 -> 831442cb6
Unable to parse comma-separated array
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/831442cb
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/831442cb
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/831442cb
Branch: refs/heads/master
Commit: 831442cb699da149a90d613f9026285a6596d07b
Parents: a620461
Author: Nikita Timofeev <st...@gmail.com>
Authored: Tue Oct 23 16:51:27 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Tue Oct 23 16:51:27 2018 +0300
----------------------------------------------------------------------
.../template/parser/SQLTemplateParser.java | 23 ++++++++++----------
.../template/parser/SQLTemplateParser.jjt | 2 +-
.../template/parser/SQLTemplateParserTest.java | 9 ++++++++
3 files changed, 22 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/831442cb/cayenne-server/src/main/java/org/apache/cayenne/template/parser/SQLTemplateParser.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/template/parser/SQLTemplateParser.java b/cayenne-server/src/main/java/org/apache/cayenne/template/parser/SQLTemplateParser.java
index 46ebe43..c2c98e5 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/template/parser/SQLTemplateParser.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/template/parser/SQLTemplateParser.java
@@ -573,20 +573,13 @@ public class SQLTemplateParser/*@bgen(jjtree)*/implements SQLTemplateParserTreeC
jj_consume_token(-1);
throw new ParseException();
}
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COMMA:
- jj_consume_token(COMMA);
- break;
- default:
- jj_la1[14] = jj_gen;
- ;
- }
label_5:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case DOLLAR:
case TRUE:
case FALSE:
+ case COMMA:
case SINGLE_QUOTED_STRING:
case DOUBLE_QUOTED_STRING:
case INT_LITERAL:
@@ -594,10 +587,18 @@ public class SQLTemplateParser/*@bgen(jjtree)*/implements SQLTemplateParserTreeC
;
break;
default:
- jj_la1[15] = jj_gen;
+ jj_la1[14] = jj_gen;
break label_5;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ jj_consume_token(COMMA);
+ break;
+ default:
+ jj_la1[15] = jj_gen;
+ ;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case TRUE:
case FALSE:
case SINGLE_QUOTED_STRING:
@@ -659,10 +660,10 @@ public class SQLTemplateParser/*@bgen(jjtree)*/implements SQLTemplateParserTreeC
jj_la1_init_1();
}
private static void jj_la1_init_0() {
- jj_la1_0 = new int[] {0x320,0x320,0x0,0x40,0x90006e00,0x2000,0x90004e00,0x90004e00,0x90000c00,0x20000,0x90006e00,0x2000,0x90004e00,0x90000e00,0x2000,0x90000e00,0x90000e00,0x90000e00,};
+ jj_la1_0 = new int[] {0x320,0x320,0x0,0x40,0x90006e00,0x2000,0x90004e00,0x90004e00,0x90000c00,0x20000,0x90006e00,0x2000,0x90004e00,0x90000e00,0x90002e00,0x2000,0x90000e00,0x90000e00,};
}
private static void jj_la1_init_1() {
- jj_la1_1 = new int[] {0xc0,0xc0,0xc0,0x0,0x3,0x0,0x3,0x3,0x3,0x0,0x3,0x0,0x3,0x3,0x0,0x3,0x3,0x3,};
+ jj_la1_1 = new int[] {0xc0,0xc0,0xc0,0x0,0x3,0x0,0x3,0x3,0x3,0x0,0x3,0x0,0x3,0x3,0x3,0x0,0x3,0x3,};
}
/** Constructor with InputStream. */
http://git-wip-us.apache.org/repos/asf/cayenne/blob/831442cb/cayenne-server/src/main/jjtree/org/apache/cayenne/template/parser/SQLTemplateParser.jjt
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/jjtree/org/apache/cayenne/template/parser/SQLTemplateParser.jjt b/cayenne-server/src/main/jjtree/org/apache/cayenne/template/parser/SQLTemplateParser.jjt
index 5788e06..49a465e 100644
--- a/cayenne-server/src/main/jjtree/org/apache/cayenne/template/parser/SQLTemplateParser.jjt
+++ b/cayenne-server/src/main/jjtree/org/apache/cayenne/template/parser/SQLTemplateParser.jjt
@@ -222,7 +222,7 @@ void array() #Array : {}
<LSBRACKET>
(
( scalar() | variable() )
- ( (<COMMA>)? ( scalar() | variable() )* )
+ ( (<COMMA>)? ( scalar() | variable() ) )*
)?
<RSBRACKET>
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/831442cb/cayenne-server/src/test/java/org/apache/cayenne/template/parser/SQLTemplateParserTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/template/parser/SQLTemplateParserTest.java b/cayenne-server/src/test/java/org/apache/cayenne/template/parser/SQLTemplateParserTest.java
index 36735ad..415d5bf 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/template/parser/SQLTemplateParserTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/template/parser/SQLTemplateParserTest.java
@@ -186,6 +186,15 @@ public class SQLTemplateParserTest {
}
@Test
+ public void testMethodCallArray2() throws Exception {
+ String tpl = "$a.arrayMethod(['1', '2', '3'])";
+ Context context = contextFactory.createContext(Collections.singletonMap("a", new TestBean(5)));
+
+ String sql = parseString(tpl, context);
+ assertEquals("array_3", sql);
+ }
+
+ @Test
public void testMethodCallInt() throws Exception {
String tpl = "$a.intMethod(42)";
Context context = contextFactory.createContext(Collections.singletonMap("a", new TestBean(5)));