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 2017/02/15 15:04:13 UTC

svn commit: r1783111 - in /chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query: QueryObject.java QueryUtilBase.java QueryUtilStrict.java

Author: jens
Date: Wed Feb 15 15:04:13 2017
New Revision: 1783111

URL: http://svn.apache.org/viewvc?rev=1783111&view=rev
Log:
QueryParser: add a flag to make relaxed parsing optional (https://issues.apache.org/jira/browse/CMIS-1012)

Modified:
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryObject.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtilBase.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/java/org/apache/chemistry/opencmis/server/support/query/QueryObject.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/QueryObject.java?rev=1783111&r1=1783110&r2=1783111&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryObject.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryObject.java Wed Feb 15 15:04:13 2017
@@ -80,6 +80,10 @@ public class QueryObject {
     };
 
     private String errorMessage;
+    
+    public enum ParserMode {MODE_STRICT, MODE_ALLOW_RELAXED_SELECT};
+    
+    private ParserMode selectMode = ParserMode.MODE_STRICT;
 
     public static class JoinSpec {
 
@@ -137,6 +141,10 @@ public class QueryObject {
         typeMgr = tm;
     }
 
+    public void setSelectMode(ParserMode mode) {
+    	selectMode = mode;
+    }
+    
     public Map<Integer, CmisSelector> getColumnReferences() {
         return Collections.unmodifiableMap(columnReferences);
     }
@@ -559,7 +567,9 @@ public class QueryObject {
             }
         }
         
-        if (noFound > 1 && !isStar) {
+        if (noFound == 0 && selectMode == ParserMode.MODE_STRICT) {
+        	throw new CmisQueryException(propName + " is not a property query name in any of the types in from ...");
+        } else if (noFound > 1 && !isStar) {
             throw new CmisQueryException(propName + " is not a unique property query name within the types in from ...");
         } else if (null != tdFound) {
         	validateColumnReferenceAndResolveType(tdFound, colRef);

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtilBase.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/QueryUtilBase.java?rev=1783111&r1=1783110&r2=1783111&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtilBase.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/QueryUtilBase.java Wed Feb 15 15:04:13 2017
@@ -73,9 +73,12 @@ public abstract class QueryUtilBase<T ex
         walkStatement();
     }
 
-    protected QueryUtilBase(String statement, TypeManager tm, PredicateWalkerBase pw) {
+    protected QueryUtilBase(String statement, TypeManager tm, PredicateWalkerBase pw, QueryObject.ParserMode mode) {
         walker = null;
         queryObj = new QueryObject(tm);
+        if (mode != null) {
+        	queryObj.setSelectMode(mode);
+        }
         predicateWalker = pw;
         this.statement = statement;
     }

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=1783111&r1=1783110&r2=1783111&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 Wed Feb 15 15:04:13 2017
@@ -38,11 +38,16 @@ public class QueryUtilStrict extends Que
     private boolean parseFulltext = true;
 
     public QueryUtilStrict(String statement, TypeManager tm, PredicateWalkerBase pw) {
-        super(statement, tm, pw);
+        super(statement, tm, pw, null);
     }
 
     public QueryUtilStrict(String statement, TypeManager tm, PredicateWalkerBase pw, boolean parseFulltext) {
-        super(statement, tm, pw);
+        super(statement, tm, pw, null);
+        this.parseFulltext = parseFulltext;
+    }
+
+    public QueryUtilStrict(String statement, TypeManager tm, PredicateWalkerBase pw, boolean parseFulltext, QueryObject.ParserMode mode) {
+        super(statement, tm, pw, mode);
         this.parseFulltext = parseFulltext;
     }