You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by je...@apache.org on 2014/08/01 17:49:51 UTC

svn commit: r1615153 - in /chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main: antlr3/org/apache/chemistry/opencmis/server/support/query/ java/org/apache/chemistry/opencmis/server/support/query/

Author: jens
Date: Fri Aug  1 15:49:51 2014
New Revision: 1615153

URL: http://svn.apache.org/r1615153
Log:
Prevent AntLR lexer errors to appear on stderr and introduce getErrors() method as in parser.

Modified:
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisBaseLexer.g
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisQlExtLexer.g
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisQlStrictLexer.g
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtil.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtilStrict.java

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisBaseLexer.g
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisBaseLexer.g?rev=1615153&r1=1615152&r2=1615153&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisBaseLexer.g (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisBaseLexer.g Fri Aug  1 15:49:51 2014
@@ -42,6 +42,29 @@ tokens {
     ORDER_BY;
 }
 
+@members {
+    private List<String> errorMessages = new ArrayList<String>();
+    
+    public boolean hasErrors() {
+    	return errorMessages.size() > 0;
+    }
+
+	public String getErrorMessages() {
+		StringBuffer allMessages = new StringBuffer();
+		
+		for (String msg : errorMessages)
+			allMessages.append(msg).append('\n');
+			
+		return allMessages.toString();
+	}
+
+    @Override
+    // Instead of sending all errors to System.err collect them in a list
+	public void emitErrorMessage(String msg) {
+		errorMessages.add(msg);
+	}
+	
+}
 
 // ----- Generic SQL -----
 

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisQlExtLexer.g
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisQlExtLexer.g?rev=1615153&r1=1615152&r2=1615153&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisQlExtLexer.g (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisQlExtLexer.g Fri Aug  1 15:49:51 2014
@@ -63,4 +63,17 @@ package org.apache.chemistry.opencmis.se
 
 }
 
+@members {
+    public boolean hasErrors() {
+    	return gCmisBaseLexer.hasErrors();
+    }
+
+	public String getErrorMessages() {
+    	return gCmisBaseLexer.getErrorMessages();
+	}
+
+	public void emitErrorMessage(String msg) {
+    	gCmisBaseLexer.emitErrorMessage(msg);
+	}
+}
 DISTINCT : ('D'|'d')('I'|'i')('S'|'s')('T'|'t')('I'|'i')('N'|'n')('C'|'c')('T'|'t');

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisQlStrictLexer.g
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisQlStrictLexer.g?rev=1615153&r1=1615152&r2=1615153&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisQlStrictLexer.g (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisQlStrictLexer.g Fri Aug  1 15:49:51 2014
@@ -56,6 +56,20 @@ import CmisBaseLexer;
 package org.apache.chemistry.opencmis.server.support.query;
 }
 
+@members {
+    public boolean hasErrors() {
+    	return gCmisBaseLexer.hasErrors();
+    }
+
+	public String getErrorMessages() {
+    	return gCmisBaseLexer.getErrorMessages();
+	}
+	
+	public void emitErrorMessage(String msg) {
+    	gCmisBaseLexer.emitErrorMessage(msg);
+	}
+}
+
 // all lexer rules for a strict CMIS parser are in the base lexer defined
 
 // we need a dummy rule to make AntLR happy (an empty file will not compile)

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtil.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtil.java?rev=1615153&r1=1615152&r2=1615153&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtil.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtil.java Fri Aug  1 15:49:51 2014
@@ -72,13 +72,15 @@ public class QueryUtil extends QueryUtil
      */
     public static CmisQueryWalker getWalker(String statement) throws RecognitionException {
         CharStream input = new ANTLRStringStream(statement);
-        TokenSource lexer = new CmisQlStrictLexer(input);
+        CmisQlStrictLexer lexer = new CmisQlStrictLexer(input);
         TokenStream tokens = new CommonTokenStream(lexer);
         CmisQlStrictParser parser = new CmisQlStrictParser(tokens);
         CommonTree parserTree; // the ANTLR tree after parsing phase
 
         query_return parsedStatement = parser.query();
-        if (parser.hasErrors()) {
+        if (lexer.hasErrors()) {
+            throw new CmisInvalidArgumentException(lexer.getErrorMessages());
+        } else if (parser.hasErrors()) {
             throw new CmisInvalidArgumentException(parser.getErrorMessages());
         } else if ( tokens.index()!=tokens.size() ) {
             throw new  CmisInvalidArgumentException("Query String has illegal tokens after end of statement: " + tokens.get(tokens.index()));

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtilStrict.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtilStrict.java?rev=1615153&r1=1615152&r2=1615153&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtilStrict.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtilStrict.java Fri Aug  1 15:49:51 2014
@@ -50,12 +50,14 @@ public class QueryUtilStrict extends Que
     @Override
     public CommonTree parseStatement() throws RecognitionException {
         CharStream input = new ANTLRStringStream(statement);
-        TokenSource lexer = new CmisQlStrictLexer(input);
+        CmisQlStrictLexer lexer = new CmisQlStrictLexer(input);
         tokens = new CommonTokenStream(lexer);
         CmisQlStrictParser parser = new CmisQlStrictParser(tokens);
 
         query_return parsedStatement = parser.query();
-        if (parser.hasErrors()) {
+        if (lexer.hasErrors()) {
+            throw new CmisInvalidArgumentException(lexer.getErrorMessages());
+        } else if (parser.hasErrors()) {
             throw new CmisInvalidArgumentException(parser.getErrorMessages());
         }