Fix a problem in query parser for statements with double quotes [CMIS-1051]

git-svn-id: https://svn.apache.org/repos/asf/chemistry/opencmis/trunk@1816004 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisBaseLexer.g b/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisBaseLexer.g
index 237d2af..7f56468 100644
--- a/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisBaseLexer.g
+++ b/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisBaseLexer.g
@@ -140,9 +140,9 @@
     :  QUOTE ( ESC | ~(BACKSL|QUOTE) )* QUOTE
 	;
 
-WS : ( ' ' | '\t' | '\r'? '\n' )* { $channel=HIDDEN; };
+WS : ( ' ' | '\t' | '\r'? '\n' )+ { $channel=HIDDEN; };
 
-TIME_LIT : TIMESTAMP WS STRING_LIT;
+TIME_LIT : TIMESTAMP WS? STRING_LIT;
 
 ID :
     ('a'..'z'|'A'..'Z'|'_')
diff --git a/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtilStrict.java b/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtilStrict.java
index 514cf67..9132bf9 100644
--- a/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtilStrict.java
+++ b/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtilStrict.java
@@ -18,6 +18,10 @@
  */
 package org.apache.chemistry.opencmis.server.support.query;
 
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
+import org.antlr.runtime.ANTLRInputStream;
 import org.antlr.runtime.ANTLRStringStream;
 import org.antlr.runtime.CharStream;
 import org.antlr.runtime.CommonTokenStream;
@@ -54,6 +58,8 @@
     @Override
     public CommonTree parseStatement() throws RecognitionException {
         CharStream input = new ANTLRStringStream(statement);
+//    		InputStream lexerInput = new ByteArrayInputStream(statement.getBytes());
+//        CharStream input = new ANTLRInputStream(lexerInput, "UTF-8");
         CmisQlStrictLexer lexer = new CmisQlStrictLexer(input);
         tokens = new CommonTokenStream(lexer);
         CmisQlStrictParser parser = new CmisQlStrictParser(tokens);
diff --git a/chemistry-opencmis-server/chemistry-opencmis-server-support/src/test/java/org/apache/chemistry/opencmis/server/support/query/TestParserStrict.java b/chemistry-opencmis-server/chemistry-opencmis-server-support/src/test/java/org/apache/chemistry/opencmis/server/support/query/TestParserStrict.java
index 78a554c..b3547e6 100644
--- a/chemistry-opencmis-server/chemistry-opencmis-server-support/src/test/java/org/apache/chemistry/opencmis/server/support/query/TestParserStrict.java
+++ b/chemistry-opencmis-server/chemistry-opencmis-server-support/src/test/java/org/apache/chemistry/opencmis/server/support/query/TestParserStrict.java
@@ -341,6 +341,12 @@
         testLexerFail("TIME_LIT", "TIMESTAMP 123");
     }
 
+    // "timestamp'123'" OK
+    @Test
+    public void testTIME_LIT4() throws Exception {
+        testLexerOk("TIME_LIT", "TIMESTAMP'123'");
+    }
+
     // ----- Parser tests -----
 
     // literal:
@@ -756,4 +762,9 @@
         testParserOk("query", "SELECT * FROM cmis:document " + "WHERE cmis:name LIKE 'abc\\%'");
     }
 
+    @Test
+    public void queryDoubleQuotes() throws Exception {
+        testParserFail("query", "SELECT * FROM cmis:document WHERE cmis:name = \"a\"");
+    }
+
 }