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 2010/11/26 08:42:32 UTC
svn commit: r1039258 -
/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisQueryWalker.g
Author: jens
Date: Fri Nov 26 07:42:32 2010
New Revision: 1039258
URL: http://svn.apache.org/viewvc?rev=1039258&view=rev
Log:
cleanup of Query exception handling
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisQueryWalker.g
Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisQueryWalker.g
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisQueryWalker.g?rev=1039258&r1=1039257&r2=1039258&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisQueryWalker.g (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/antlr3/org/apache/chemistry/opencmis/server/support/query/CmisQueryWalker.g Fri Nov 26 07:42:32 2010
@@ -61,14 +61,8 @@ options {
package org.apache.chemistry.opencmis.server.support.query;
import java.math.BigDecimal;
-
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.HashMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.chemistry.opencmis.server.support.query.*;
}
@members {
@@ -76,26 +70,11 @@ import org.apache.chemistry.opencmis.ser
private QueryObject queryObj;
private Tree wherePredicateTree;
- public String errorMessage;
public Tree getWherePredicateTree() {
return wherePredicateTree;
}
- @Override
- public void displayRecognitionError(String[] tokenNames,
- RecognitionException e) {
- if (errorMessage == null) {
- String hdr = getErrorHeader(e);
- String msg = getErrorMessage(e, tokenNames);
- errorMessage = hdr + " " + msg;
- }
- }
-
- public String getErrorMessageString() {
- return errorMessage;
- }
-
protected void mismatch(IntStream input, int ttype, BitSet follow)
throws RecognitionException
{
@@ -107,8 +86,10 @@ import org.apache.chemistry.opencmis.ser
{
throw e;
}
+
}
+
// For CMIS SQL it will be sufficient to stop on first error:
@rulecatch {
catch (RecognitionException e) {
@@ -116,18 +97,27 @@ import org.apache.chemistry.opencmis.ser
}
}
-query [QueryObject qo, PredicateWalkerBase pw]
+query [QueryObject qo, PredicateWalkerBase pw] throws CmisQueryException
@init {
queryObj = qo;
}:
^(SELECT select_list from_clause order_by_clause? where_clause)
{
wherePredicateTree = $where_clause.tree==null ? null : $where_clause.tree.getChild(0);
- queryObj.resolveTypes();
+ boolean resolved = queryObj.resolveTypes();
if (null != pw && null != $where_clause.tree)
- pw.walkPredicate(wherePredicateTree);
+ pw.walkPredicate(wherePredicateTree);
}
+ {
+ resolved
+ }?
;
+ catch[FailedPredicateException e]
+ {
+ // change default text to preserved text which is useful
+ e.predicateText = queryObj.getErrorMessage();
+ throw e;
+ }
select_list:
STAR
@@ -208,9 +198,15 @@ table_join:
one_table returns [String alias]:
^(TABLE table_name correlation_name?)
{
- $alias = queryObj.addType($correlation_name.text, $table_name.text);
- }
+ ($alias = queryObj.addType($correlation_name.text, $table_name.text)) != null
+ }?
;
+ catch[FailedPredicateException e]
+ {
+ // change default text to preserved text which is useful
+ e.predicateText = queryObj.getErrorMessage();
+ throw e;
+ }
join_kind returns [String kind]:
INNER { $kind = "INNER"; }