Author: angela
Date: Tue Jun  6 13:05:36 2017
New Revision: 1797786

URL: http://svn.apache.org/viewvc?rev=1797786&view=rev
Log:
OAK-6295 : Move constants from oak.query.QueryImpl to 
oak.spi.query.QueryConstants

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ResultRowImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElementFactory.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchScoreImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/facet/FacetResult.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/xpath/Statement.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/ResultRowToAuthorizable.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryConstants.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FacetHelper.java
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
 Tue Jun  6 13:05:36 2017
@@ -81,6 +81,7 @@ import org.apache.jackrabbit.oak.query.p
 import org.apache.jackrabbit.oak.query.plan.SelectorExecutionPlan;
 import org.apache.jackrabbit.oak.spi.query.Filter;
 import org.apache.jackrabbit.oak.spi.query.PropertyValues;
+import org.apache.jackrabbit.oak.spi.query.QueryConstants;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex.AdvancedQueryIndex;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex.IndexPlan;
@@ -102,42 +103,6 @@ import com.google.common.collect.Orderin
  * Represents a parsed query.
  */
 public class QueryImpl implements Query {
-    
-    /**
-     * The "jcr:path" pseudo-property.
-     */
-    // TODO jcr:path isn't an official feature, support it?
-    public static final String JCR_PATH = "jcr:path";
-
-    /**
-     * The "jcr:score" pseudo-property.
-     */
-    public static final String JCR_SCORE = "jcr:score";
-
-    /**
-     * The "rep:excerpt" pseudo-property.
-     */
-    public static final String REP_EXCERPT = "rep:excerpt";
-
-    /**
-     * The "rep:facet" pseudo-property.
-     */
-    public static final String REP_FACET = "rep:facet";
-
-    /**
-     * The "oak:explainScore" pseudo-property.
-     */
-    public static final String OAK_SCORE_EXPLANATION = "oak:scoreExplanation";
-
-    /**
-     * The "rep:spellcheck" pseudo-property.
-     */
-    public static final String REP_SPELLCHECK = "rep:spellcheck()";
-
-    /**
-     * The "rep:suggest" pseudo-property.
-     */
-    public static final String REP_SUGGEST = "rep:suggest()";
 
     private static final Logger LOG = LoggerFactory.getLogger(QueryImpl.class);
     
@@ -443,7 +408,7 @@ public class QueryImpl implements Query
         for (int i = 0; i < columns.length; i++) {
             ColumnImpl c = columns[i];
             boolean distinct = true;
-            if (JCR_SCORE.equals(c.getPropertyName())) {
+            if (QueryConstants.JCR_SCORE.equals(c.getPropertyName())) {
                 distinct = false;
             }
             distinctColumns[i] = distinct;

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ResultRowImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ResultRowImpl.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ResultRowImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ResultRowImpl.java
 Tue Jun  6 13:05:36 2017
@@ -27,6 +27,7 @@ import org.apache.jackrabbit.oak.query.a
 import org.apache.jackrabbit.oak.query.ast.OrderingImpl;
 import org.apache.jackrabbit.oak.query.fulltext.SimpleExcerptProvider;
 import org.apache.jackrabbit.oak.spi.query.PropertyValues;
+import org.apache.jackrabbit.oak.spi.query.QueryConstants;
 
 /**
  * A query result row that keeps all data (for this row only) in memory.
@@ -108,13 +109,13 @@ public class ResultRowImpl implements Re
         // OAK-318:
         // somebody might call rep:excerpt(text)
         // even though the query doesn't contain that column
-        if (columnName.startsWith(QueryImpl.REP_EXCERPT)) {
-            int columnIndex = query.getColumnIndex(QueryImpl.REP_EXCERPT);
+        if (columnName.startsWith(QueryConstants.REP_EXCERPT)) {
+            int columnIndex = query.getColumnIndex(QueryConstants.REP_EXCERPT);
             PropertyValue indexExcerptValue = null;
             if (columnIndex >= 0) {
                 indexExcerptValue = values[columnIndex];
                 if (indexExcerptValue != null) {
-                    if (QueryImpl.REP_EXCERPT.equals(columnName) || 
SimpleExcerptProvider.REP_EXCERPT_FN.equals(columnName)) {
+                    if (QueryConstants.REP_EXCERPT.equals(columnName) || 
SimpleExcerptProvider.REP_EXCERPT_FN.equals(columnName)) {
                         return 
SimpleExcerptProvider.getExcerpt(indexExcerptValue);
                     }
                 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java
 Tue Jun  6 13:05:36 2017
@@ -55,6 +55,7 @@ import org.apache.jackrabbit.oak.query.a
 import org.apache.jackrabbit.oak.query.ast.SourceImpl;
 import org.apache.jackrabbit.oak.query.ast.StaticOperandImpl;
 import org.apache.jackrabbit.oak.spi.query.PropertyValues;
+import org.apache.jackrabbit.oak.spi.query.QueryConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -210,8 +211,8 @@ public class SQL2Parser {
         boolean distinct = readIf("DISTINCT");
         ArrayList<ColumnOrWildcard> list = parseColumns();
         if (supportSQL1) {
-            addColumnIfNecessary(list, QueryImpl.JCR_PATH, QueryImpl.JCR_PATH);
-            addColumnIfNecessary(list, QueryImpl.JCR_SCORE, 
QueryImpl.JCR_SCORE);
+            addColumnIfNecessary(list, QueryConstants.JCR_PATH, 
QueryConstants.JCR_PATH);
+            addColumnIfNecessary(list, QueryConstants.JCR_SCORE, 
QueryConstants.JCR_SCORE);
         }
         read("FROM");
         SourceImpl source = parseSource();

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElementFactory.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElementFactory.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElementFactory.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElementFactory.java
 Tue Jun  6 13:05:36 2017
@@ -20,7 +20,7 @@ import java.util.ArrayList;
 import javax.annotation.Nonnull;
 
 import org.apache.jackrabbit.oak.api.PropertyValue;
-import org.apache.jackrabbit.oak.query.QueryImpl;
+import org.apache.jackrabbit.oak.spi.query.QueryConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -52,7 +52,7 @@ public class AstElementFactory {
     }
 
     public ColumnImpl column(String selectorName, String propertyName, String 
columnName) {
-        if (propertyName.startsWith(QueryImpl.REP_FACET)) {
+        if (propertyName.startsWith(QueryConstants.REP_FACET)) {
             return new FacetColumnImpl(selectorName, propertyName, columnName);
         } else {
             return new ColumnImpl(selectorName, propertyName, columnName);

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchScoreImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchScoreImpl.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchScoreImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchScoreImpl.java
 Tue Jun  6 13:05:36 2017
@@ -25,9 +25,9 @@ import java.util.Set;
 import javax.jcr.PropertyType;
 
 import org.apache.jackrabbit.oak.api.PropertyValue;
-import org.apache.jackrabbit.oak.query.QueryImpl;
 import org.apache.jackrabbit.oak.query.index.FilterImpl;
 import org.apache.jackrabbit.oak.spi.query.PropertyValues;
+import org.apache.jackrabbit.oak.spi.query.QueryConstants;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex.OrderEntry;
 
 /**
@@ -64,7 +64,7 @@ public class FullTextSearchScoreImpl ext
 
     @Override
     public PropertyValue currentProperty() {
-        PropertyValue p = selector.currentOakProperty(QueryImpl.JCR_SCORE);
+        PropertyValue p = 
selector.currentOakProperty(QueryConstants.JCR_SCORE);
         if (p == null) {
             // TODO if score() is not supported by the index, use the value 
0.0?
             return PropertyValues.newDouble(0.0);
@@ -83,7 +83,7 @@ public class FullTextSearchScoreImpl ext
                 // not supported
                 return;
             }
-            f.restrictProperty(QueryImpl.JCR_SCORE, operator, v);
+            f.restrictProperty(QueryConstants.JCR_SCORE, operator, v);
         }
     }
     

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java
 Tue Jun  6 13:05:36 2017
@@ -27,10 +27,10 @@ import javax.jcr.PropertyType;
 
 import org.apache.jackrabbit.oak.api.PropertyValue;
 import org.apache.jackrabbit.oak.api.Type;
-import org.apache.jackrabbit.oak.query.QueryImpl;
 import org.apache.jackrabbit.oak.query.SQL2Parser;
 import org.apache.jackrabbit.oak.query.index.FilterImpl;
 import org.apache.jackrabbit.oak.spi.query.Filter.PathRestriction;
+import org.apache.jackrabbit.oak.spi.query.QueryConstants;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex.OrderEntry;
 
 /**
@@ -84,7 +84,7 @@ public class PropertyValueImpl extends D
         // the jcr:path pseudo-property doesn't support LIKE conditions,
         // because the path doesn't might be escaped, and possibly contain
         // expressions that would result in incorrect results (/test[1] for 
example)
-        return !propertyName.equals(QueryImpl.JCR_PATH);
+        return !propertyName.equals(QueryConstants.JCR_PATH);
     }
     
     @Override
@@ -119,7 +119,7 @@ public class PropertyValueImpl extends D
     public void restrict(FilterImpl f, Operator operator, PropertyValue v) {
         if (f.getSelector().equals(selector)) {
             String pn = normalizePropertyName(propertyName);
-            if (pn.equals(QueryImpl.JCR_PATH)) {
+            if (pn.equals(QueryConstants.JCR_PATH)) {
                 if (operator == Operator.EQUAL) {
                     f.restrictPath(v.getValue(Type.STRING), 
PathRestriction.EXACT);
                 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java
 Tue Jun  6 13:05:36 2017
@@ -48,6 +48,7 @@ import org.apache.jackrabbit.oak.spi.que
 import org.apache.jackrabbit.oak.spi.query.Cursors;
 import org.apache.jackrabbit.oak.spi.query.IndexRow;
 import org.apache.jackrabbit.oak.spi.query.PropertyValues;
+import org.apache.jackrabbit.oak.spi.query.QueryConstants;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex.AdvancedQueryIndex;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex.IndexPlan;
@@ -386,10 +387,10 @@ public class SelectorImpl extends Source
         for (ColumnImpl c : query.getColumns()) {
             if (c.getSelector().equals(this)) {
                 String columnName = c.getColumnName();
-                if (columnName.equals(QueryImpl.REP_EXCERPT) || 
columnName.equals(QueryImpl.OAK_SCORE_EXPLANATION)) {
+                if (columnName.equals(QueryConstants.REP_EXCERPT) || 
columnName.equals(QueryConstants.OAK_SCORE_EXPLANATION)) {
                     f.restrictProperty(columnName, Operator.NOT_EQUAL, null);
-                } else if (columnName.startsWith(QueryImpl.REP_FACET)) {
-                    f.restrictProperty(QueryImpl.REP_FACET, Operator.EQUAL, 
PropertyValues.newString(columnName));
+                } else if (columnName.startsWith(QueryConstants.REP_FACET)) {
+                    f.restrictProperty(QueryConstants.REP_FACET, 
Operator.EQUAL, PropertyValues.newString(columnName));
                 }
             }
         }
@@ -648,7 +649,7 @@ public class SelectorImpl extends Source
         if ((t == null || !t.exists()) && (currentRow == null || 
!currentRow.isVirtualRow())) {
             return null;
         }
-        if (oakPropertyName.equals(QueryImpl.JCR_PATH)) {
+        if (oakPropertyName.equals(QueryConstants.JCR_PATH)) {
             String path = currentPath();
             String local = getLocalPath(path);
             if (local == null) {
@@ -656,17 +657,17 @@ public class SelectorImpl extends Source
                 return null;
             }
             result = PropertyValues.newString(local);
-        } else if (oakPropertyName.equals(QueryImpl.JCR_SCORE)) {
-            result = currentRow.getValue(QueryImpl.JCR_SCORE);
-        } else if (oakPropertyName.equals(QueryImpl.REP_EXCERPT)) {
-            result = currentRow.getValue(QueryImpl.REP_EXCERPT);
-        } else if (oakPropertyName.equals(QueryImpl.OAK_SCORE_EXPLANATION)) {
-            result = currentRow.getValue(QueryImpl.OAK_SCORE_EXPLANATION);
-        } else if (oakPropertyName.equals(QueryImpl.REP_SPELLCHECK)) {
-            result = currentRow.getValue(QueryImpl.REP_SPELLCHECK);
-        } else if (oakPropertyName.equals(QueryImpl.REP_SUGGEST)) {
-            result = currentRow.getValue(QueryImpl.REP_SUGGEST);
-        } else if (oakPropertyName.startsWith(QueryImpl.REP_FACET)) {
+        } else if (oakPropertyName.equals(QueryConstants.JCR_SCORE)) {
+            result = currentRow.getValue(QueryConstants.JCR_SCORE);
+        } else if (oakPropertyName.equals(QueryConstants.REP_EXCERPT)) {
+            result = currentRow.getValue(QueryConstants.REP_EXCERPT);
+        } else if 
(oakPropertyName.equals(QueryConstants.OAK_SCORE_EXPLANATION)) {
+            result = currentRow.getValue(QueryConstants.OAK_SCORE_EXPLANATION);
+        } else if (oakPropertyName.equals(QueryConstants.REP_SPELLCHECK)) {
+            result = currentRow.getValue(QueryConstants.REP_SPELLCHECK);
+        } else if (oakPropertyName.equals(QueryConstants.REP_SUGGEST)) {
+            result = currentRow.getValue(QueryConstants.REP_SUGGEST);
+        } else if (oakPropertyName.startsWith(QueryConstants.REP_FACET)) {
             result = currentRow.getValue(oakPropertyName);
         } else {
             result = PropertyValues.create(t.getProperty(oakPropertyName));

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/facet/FacetResult.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/facet/FacetResult.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/facet/FacetResult.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/facet/FacetResult.java
 Tue Jun  6 13:05:36 2017
@@ -33,7 +33,7 @@ import java.util.Set;
 
 import org.apache.jackrabbit.oak.commons.json.JsopReader;
 import org.apache.jackrabbit.oak.commons.json.JsopTokenizer;
-import org.apache.jackrabbit.oak.query.QueryImpl;
+import org.apache.jackrabbit.oak.spi.query.QueryConstants;
 
 /**
  * A facet result is a wrapper for {@link javax.jcr.query.QueryResult} capable 
of returning information about facets
@@ -49,8 +49,8 @@ public class FacetResult {
             if (rows.hasNext()) {
                 Row row = rows.nextRow();
                 for (String column : queryResult.getColumnNames()) {
-                    if (column.startsWith(QueryImpl.REP_FACET)) {
-                        String dimension = 
column.substring(QueryImpl.REP_FACET.length() + 1, column.length() - 1);
+                    if (column.startsWith(QueryConstants.REP_FACET)) {
+                        String dimension = 
column.substring(QueryConstants.REP_FACET.length() + 1, column.length() - 1);
                         Value value = row.getValue(column);
                         if (value != null) {
                             String jsonFacetString = value.getString();

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/xpath/Statement.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/xpath/Statement.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/xpath/Statement.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/xpath/Statement.java
 Tue Jun  6 13:05:36 2017
@@ -18,12 +18,12 @@ package org.apache.jackrabbit.oak.query.
 
 import java.util.ArrayList;
 
-import org.apache.jackrabbit.oak.query.QueryImpl;
 import org.apache.jackrabbit.oak.query.QueryOptions;
 import org.apache.jackrabbit.oak.query.QueryOptions.Traversal;
 import org.apache.jackrabbit.oak.query.xpath.Expression.AndCondition;
 import org.apache.jackrabbit.oak.query.xpath.Expression.OrCondition;
 import org.apache.jackrabbit.oak.query.xpath.Expression.Property;
+import org.apache.jackrabbit.oak.spi.query.QueryConstants;
 
 /**
  * An xpath statement.
@@ -158,14 +158,14 @@ public class Statement {
         
         // select ...
         buff.append("select ");
-        buff.append(new Expression.Property(columnSelector, 
QueryImpl.JCR_PATH, false).toString());
+        buff.append(new Expression.Property(columnSelector, 
QueryConstants.JCR_PATH, false).toString());
         if (selectors.size() > 1) {
-            buff.append(" as 
").append('[').append(QueryImpl.JCR_PATH).append(']');
+            buff.append(" as 
").append('[').append(QueryConstants.JCR_PATH).append(']');
         }
         buff.append(", ");
-        buff.append(new Expression.Property(columnSelector, 
QueryImpl.JCR_SCORE, false).toString());
+        buff.append(new Expression.Property(columnSelector, 
QueryConstants.JCR_SCORE, false).toString());
         if (selectors.size() > 1) {
-            buff.append(" as 
").append('[').append(QueryImpl.JCR_SCORE).append(']');
+            buff.append(" as 
").append('[').append(QueryConstants.JCR_SCORE).append(']');
         }
         if (columnList.isEmpty()) {
             buff.append(", ");

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/ResultRowToAuthorizable.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/ResultRowToAuthorizable.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/ResultRowToAuthorizable.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/ResultRowToAuthorizable.java
 Tue Jun  6 13:05:36 2017
@@ -27,8 +27,8 @@ import org.apache.jackrabbit.oak.api.Res
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
-import org.apache.jackrabbit.oak.query.QueryImpl;
 import org.apache.jackrabbit.oak.security.user.UserManagerImpl;
+import org.apache.jackrabbit.oak.spi.query.QueryConstants;
 import org.apache.jackrabbit.oak.spi.security.user.AuthorizableType;
 import org.apache.jackrabbit.oak.spi.security.user.util.UserUtil;
 import org.slf4j.Logger;
@@ -64,7 +64,7 @@ class ResultRowToAuthorizable implements
     private Authorizable getAuthorizable(@CheckForNull ResultRow row) {
         Authorizable authorizable = null;
         if (row != null) {
-            String resultPath = 
row.getValue(QueryImpl.JCR_PATH).getValue(Type.STRING);
+            String resultPath = 
row.getValue(QueryConstants.JCR_PATH).getValue(Type.STRING);
             try {
                 Tree tree = root.getTree(resultPath);
                 AuthorizableType type = UserUtil.getType(tree);

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryConstants.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryConstants.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryConstants.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryConstants.java
 Tue Jun  6 13:05:36 2017
@@ -51,4 +51,39 @@ public abstract class QueryConstants {
     public static final String FUNCTION_RESTRICTION_PREFIX = "function*";
 
     public static final String SEARCH_ROOT_PATH = "/jcr:root";
+    /**
+     * The "jcr:path" pseudo-property.
+     */
+    // TODO jcr:path isn't an official feature, support it?
+    public static final String JCR_PATH = "jcr:path";
+
+    /**
+     * The "jcr:score" pseudo-property.
+     */
+    public static final String JCR_SCORE = "jcr:score";
+
+    /**
+     * The "rep:excerpt" pseudo-property.
+     */
+    public static final String REP_EXCERPT = "rep:excerpt";
+
+    /**
+     * The "rep:facet" pseudo-property.
+     */
+    public static final String REP_FACET = "rep:facet";
+
+    /**
+     * The "oak:explainScore" pseudo-property.
+     */
+    public static final String OAK_SCORE_EXPLANATION = "oak:scoreExplanation";
+
+    /**
+     * The "rep:spellcheck" pseudo-property.
+     */
+    public static final String REP_SPELLCHECK = "rep:spellcheck()";
+
+    /**
+     * The "rep:suggest" pseudo-property.
+     */
+    public static final String REP_SUGGEST = "rep:suggest()";
 }
\ No newline at end of file

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java
 Tue Jun  6 13:05:36 2017
@@ -58,6 +58,7 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.value.Conversions;
 import org.apache.jackrabbit.oak.query.QueryEngineImpl.QuerySelectionMode;
 import org.apache.jackrabbit.oak.query.xpath.XPathToSQL2Converter;
+import org.apache.jackrabbit.oak.spi.query.QueryConstants;
 import org.junit.Before;
 
 import static com.google.common.base.Preconditions.checkNotNull;
@@ -97,7 +98,7 @@ public abstract class AbstractQueryTest
 
     /**
      * Override this method to add your default index definition
-     * 
+     *
      * {@link #createTestIndexNode(Tree, String)} for a helper method
      */
     protected void createTestIndexNode() throws Exception {
@@ -132,7 +133,7 @@ public abstract class AbstractQueryTest
         // resolving the whole path on disk
         File input = new 
File(AbstractQueryTest.class.getResource(file).getPath());
         File output = new File("target/" + shortClassName + "_" + file);
-        
+
         InputStream in = AbstractQueryTest.class.getResourceAsStream(file);
         ContinueLineReader r = new ContinueLineReader(new LineNumberReader(new 
InputStreamReader(in)));
         PrintWriter w = new PrintWriter(new OutputStreamWriter(
@@ -286,7 +287,7 @@ public abstract class AbstractQueryTest
     protected List<String> assertQuery(String sql, List<String> expected) {
         return assertQuery(sql, SQL2, expected);
     }
-    
+
     protected void assertResultSize(String query, String language, long 
expected) {
         long time = System.currentTimeMillis();
         try {
@@ -316,7 +317,7 @@ public abstract class AbstractQueryTest
         return paths;
 
     }
-    
+
     protected static void assertResult(@Nonnull List<String> expected, 
@Nonnull List<String> actual) {
         for (String p : checkNotNull(expected)) {
             assertTrue("Expected path " + p + " not found, got " + actual, 
checkNotNull(actual)
@@ -329,14 +330,14 @@ public abstract class AbstractQueryTest
     protected void setTraversalEnabled(boolean traversalEnabled) {
         ((QueryEngineImpl) qe).setTraversalEnabled(traversalEnabled);
     }
-    
+
     protected void setQuerySelectionMode(@Nonnull QuerySelectionMode 
querySelectionMode) {
         ((QueryEngineImpl) 
qe).setQuerySelectionMode(checkNotNull(querySelectionMode));
     }
 
     protected static String readRow(ResultRow row, boolean pathOnly) {
         if (pathOnly) {
-            return row.getValue(QueryImpl.JCR_PATH).getValue(Type.STRING);
+            return row.getValue(QueryConstants.JCR_PATH).getValue(Type.STRING);
         }
         StringBuilder buff = new StringBuilder();
         PropertyValue[] values = row.getValues();

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java
 Tue Jun  6 13:05:36 2017
@@ -35,7 +35,6 @@ import org.apache.jackrabbit.oak.api.Typ
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition.IndexingRule;
 import org.apache.jackrabbit.oak.plugins.index.lucene.util.FacetHelper;
-import org.apache.jackrabbit.oak.query.QueryImpl;
 import org.apache.jackrabbit.oak.query.fulltext.FullTextContains;
 import org.apache.jackrabbit.oak.query.fulltext.FullTextExpression;
 import org.apache.jackrabbit.oak.query.fulltext.FullTextTerm;
@@ -168,7 +167,7 @@ class IndexPlanner {
                     // function-based indexes were handled before
                     continue;
                 }
-                if (QueryImpl.REP_FACET.equals(pr.propertyName)) {
+                if (QueryConstants.REP_FACET.equals(pr.propertyName)) {
                     String value = pr.first.getValue(Type.STRING);
                     facetFields.add(FacetHelper.parseFacetField(value));
                 }

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
 Tue Jun  6 13:05:36 2017
@@ -41,7 +41,6 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.index.lucene.util.SpellcheckHelper;
 import org.apache.jackrabbit.oak.plugins.index.lucene.util.SuggestHelper;
 import org.apache.jackrabbit.oak.query.QueryEngineSettings;
-import org.apache.jackrabbit.oak.query.QueryImpl;
 import org.apache.jackrabbit.oak.query.fulltext.FullTextAnd;
 import org.apache.jackrabbit.oak.query.fulltext.FullTextContains;
 import org.apache.jackrabbit.oak.query.fulltext.FullTextExpression;
@@ -107,7 +106,7 @@ import static org.apache.jackrabbit.oak.
 import static 
org.apache.jackrabbit.oak.plugins.index.lucene.TermFactory.newFulltextTerm;
 import static 
org.apache.jackrabbit.oak.plugins.index.lucene.TermFactory.newPathTerm;
 import static 
org.apache.jackrabbit.oak.plugins.index.lucene.util.LuceneIndexHelper.skipTokenization;
-import static org.apache.jackrabbit.oak.query.QueryImpl.JCR_PATH;
+import static org.apache.jackrabbit.oak.spi.query.QueryConstants.JCR_PATH;
 import static org.apache.lucene.search.BooleanClause.Occur.*;
 
 /**
@@ -366,7 +365,7 @@ public class LuceneIndex implements Adva
                             LOG.debug("... took {} ms", time);
                             nextBatchSize = (int) Math.min(nextBatchSize * 2L, 
100000);
 
-                            PropertyRestriction restriction = 
filter.getPropertyRestriction(QueryImpl.REP_EXCERPT);
+                            PropertyRestriction restriction = 
filter.getPropertyRestriction(QueryConstants.REP_EXCERPT);
                             boolean addExcerpt = restriction != null && 
restriction.isNotNullRestriction();
 
                             Analyzer analyzer = 
indexNode.getDefinition().getAnalyzer();
@@ -714,7 +713,7 @@ public class LuceneIndex implements Adva
             }
 
             String name = pr.propertyName;
-            if (QueryImpl.REP_EXCERPT.equals(name) || 
QueryImpl.OAK_SCORE_EXPLANATION.equals(name) || 
QueryImpl.REP_FACET.equals(name)) {
+            if (QueryConstants.REP_EXCERPT.equals(name) || 
QueryConstants.OAK_SCORE_EXPLANATION.equals(name) || 
QueryConstants.REP_FACET.equals(name)) {
                 continue;
             }
             if (JCR_PRIMARYTYPE.equals(name)) {
@@ -1182,13 +1181,13 @@ public class LuceneIndex implements Adva
                 @Override
                 public PropertyValue getValue(String columnName) {
                     // overlay the score
-                    if (QueryImpl.JCR_SCORE.equals(columnName)) {
+                    if (QueryConstants.JCR_SCORE.equals(columnName)) {
                         return PropertyValues.newDouble(currentRow.score);
                     }
-                    if (QueryImpl.REP_SPELLCHECK.equals(columnName) || 
QueryImpl.REP_SUGGEST.equals(columnName)) {
+                    if (QueryConstants.REP_SPELLCHECK.equals(columnName) || 
QueryConstants.REP_SUGGEST.equals(columnName)) {
                         return 
PropertyValues.newString(Iterables.toString(currentRow.suggestWords));
                     }
-                    if (QueryImpl.REP_EXCERPT.equals(columnName)) {
+                    if (QueryConstants.REP_EXCERPT.equals(columnName)) {
                         return PropertyValues.newString(currentRow.excerpt);
                     }
                     return pathRow.getValue(columnName);

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
 Tue Jun  6 13:05:36 2017
@@ -55,7 +55,6 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.index.lucene.util.SpellcheckHelper;
 import org.apache.jackrabbit.oak.plugins.index.lucene.util.SuggestHelper;
 import org.apache.jackrabbit.oak.query.QueryEngineSettings;
-import org.apache.jackrabbit.oak.query.QueryImpl;
 import org.apache.jackrabbit.oak.query.fulltext.FullTextAnd;
 import org.apache.jackrabbit.oak.query.fulltext.FullTextContains;
 import org.apache.jackrabbit.oak.query.fulltext.FullTextExpression;
@@ -137,7 +136,7 @@ import static org.apache.jackrabbit.oak.
 import static 
org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.VERSION;
 import static 
org.apache.jackrabbit.oak.plugins.index.lucene.TermFactory.newAncestorTerm;
 import static 
org.apache.jackrabbit.oak.plugins.index.lucene.TermFactory.newPathTerm;
-import static org.apache.jackrabbit.oak.query.QueryImpl.JCR_PATH;
+import static org.apache.jackrabbit.oak.spi.query.QueryConstants.JCR_PATH;
 import static 
org.apache.jackrabbit.oak.spi.query.QueryIndex.AdvancedQueryIndex;
 import static org.apache.jackrabbit.oak.spi.query.QueryIndex.NativeQueryIndex;
 import static org.apache.lucene.search.BooleanClause.Occur.*;
@@ -407,10 +406,10 @@ public class LucenePropertyIndex impleme
                             Facets facets = FacetHelper.getFacets(searcher, 
query, docs, plan, indexNode.getDefinition().isSecureFacets());
                             PERF_LOGGER.end(f, -1, "facets retrieved");
 
-                            PropertyRestriction restriction = 
filter.getPropertyRestriction(QueryImpl.REP_EXCERPT);
+                            PropertyRestriction restriction = 
filter.getPropertyRestriction(QueryConstants.REP_EXCERPT);
                             boolean addExcerpt = restriction != null && 
restriction.isNotNullRestriction();
 
-                            restriction = 
filter.getPropertyRestriction(QueryImpl.OAK_SCORE_EXPLANATION);
+                            restriction = 
filter.getPropertyRestriction(QueryConstants.OAK_SCORE_EXPLANATION);
                             boolean addExplain = restriction != null && 
restriction.isNotNullRestriction();
 
                             Analyzer analyzer = 
indexNode.getDefinition().getAnalyzer();
@@ -997,8 +996,8 @@ public class LucenePropertyIndex impleme
         for (PropertyRestriction pr : filter.getPropertyRestrictions()) {
             String name = pr.propertyName;
 
-            if (QueryImpl.REP_EXCERPT.equals(name) || 
QueryImpl.OAK_SCORE_EXPLANATION.equals(name)
-                    || QueryImpl.REP_FACET.equals(name)) {
+            if (QueryConstants.REP_EXCERPT.equals(name) || 
QueryConstants.OAK_SCORE_EXPLANATION.equals(name)
+                    || QueryConstants.REP_FACET.equals(name)) {
                 continue;
             }
 
@@ -1627,19 +1626,19 @@ public class LucenePropertyIndex impleme
                 @Override
                 public PropertyValue getValue(String columnName) {
                     // overlay the score
-                    if (QueryImpl.JCR_SCORE.equals(columnName)) {
+                    if (QueryConstants.JCR_SCORE.equals(columnName)) {
                         return PropertyValues.newDouble(currentRow.score);
                     }
-                    if (QueryImpl.REP_SPELLCHECK.equals(columnName) || 
QueryImpl.REP_SUGGEST.equals(columnName)) {
+                    if (QueryConstants.REP_SPELLCHECK.equals(columnName) || 
QueryConstants.REP_SUGGEST.equals(columnName)) {
                         return PropertyValues.newString(currentRow.suggestion);
                     }
-                    if (QueryImpl.OAK_SCORE_EXPLANATION.equals(columnName)) {
+                    if 
(QueryConstants.OAK_SCORE_EXPLANATION.equals(columnName)) {
                         return 
PropertyValues.newString(currentRow.explanation);
                     }
-                    if (QueryImpl.REP_EXCERPT.equals(columnName)) {
+                    if (QueryConstants.REP_EXCERPT.equals(columnName)) {
                         return PropertyValues.newString(currentRow.excerpt);
                     }
-                    if (columnName.startsWith(QueryImpl.REP_FACET)) {
+                    if (columnName.startsWith(QueryConstants.REP_FACET)) {
                         String facetFieldName = 
FacetHelper.parseFacetField(columnName);
                         Facets facets = currentRow.facets;
                         try {

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FacetHelper.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FacetHelper.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FacetHelper.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FacetHelper.java
 Tue Jun  6 13:05:36 2017
@@ -24,7 +24,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.jackrabbit.oak.plugins.index.lucene.FieldNames;
-import org.apache.jackrabbit.oak.query.QueryImpl;
+import org.apache.jackrabbit.oak.spi.query.QueryConstants;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.lucene.facet.Facets;
@@ -89,6 +89,6 @@ public class FacetHelper {
 
 
     public static String parseFacetField(String columnName) {
-        return columnName.substring(QueryImpl.REP_FACET.length() + 1, 
columnName.length() - 1);
+        return columnName.substring(QueryConstants.REP_FACET.length() + 1, 
columnName.length() - 1);
     }
 }

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java
 Tue Jun  6 13:05:36 2017
@@ -22,7 +22,6 @@ import java.util.List;
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.oak.api.Type;
 import 
org.apache.jackrabbit.oak.plugins.index.solr.configuration.OakSolrConfiguration;
-import org.apache.jackrabbit.oak.query.QueryImpl;
 import org.apache.jackrabbit.oak.query.fulltext.FullTextAnd;
 import org.apache.jackrabbit.oak.query.fulltext.FullTextContains;
 import org.apache.jackrabbit.oak.query.fulltext.FullTextExpression;
@@ -30,6 +29,7 @@ import org.apache.jackrabbit.oak.query.f
 import org.apache.jackrabbit.oak.query.fulltext.FullTextTerm;
 import org.apache.jackrabbit.oak.query.fulltext.FullTextVisitor;
 import org.apache.jackrabbit.oak.spi.query.Filter;
+import org.apache.jackrabbit.oak.spi.query.QueryConstants;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.slf4j.Logger;
@@ -98,11 +98,11 @@ class FilterQueryParser {
                     continue;
                 }
                 // facets
-                if (QueryImpl.REP_FACET.equals(pr.propertyName)) {
+                if (QueryConstants.REP_FACET.equals(pr.propertyName)) {
                     solrQuery.setFacetMinCount(1);
                     solrQuery.setFacet(true);
                     String value = pr.first.getValue(Type.STRING);
-                    
solrQuery.addFacetField(value.substring(QueryImpl.REP_FACET.length() + 1, 
value.length() - 1) + "_facet");
+                    
solrQuery.addFacetField(value.substring(QueryConstants.REP_FACET.length() + 1, 
value.length() - 1) + "_facet");
                 }
 
                 // native query support
@@ -233,7 +233,7 @@ class FilterQueryParser {
             solrQuery.addFilterQuery(ptQueryBuilder.toString());
         }
 
-        if (filter.getQueryStatement() != null && 
filter.getQueryStatement().contains(QueryImpl.REP_EXCERPT)) {
+        if (filter.getQueryStatement() != null && 
filter.getQueryStatement().contains(QueryConstants.REP_EXCERPT)) {
             if (!solrQuery.getHighlight()) {
                 // enable highlighting
                 solrQuery.setHighlight(true);

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java?rev=1797786&r1=1797785&r2=1797786&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java
 Tue Jun  6 13:05:36 2017
@@ -48,7 +48,6 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.index.solr.server.OakSolrServer;
 import org.apache.jackrabbit.oak.plugins.index.solr.server.SolrServerProvider;
 import org.apache.jackrabbit.oak.query.QueryEngineSettings;
-import org.apache.jackrabbit.oak.query.QueryImpl;
 import org.apache.jackrabbit.oak.query.fulltext.FullTextExpression;
 import org.apache.jackrabbit.oak.query.fulltext.FullTextTerm;
 import org.apache.jackrabbit.oak.query.fulltext.FullTextVisitor;
@@ -365,7 +364,7 @@ public class SolrQueryIndex implements F
                                     for (Map.Entry<String, List<String>> entry 
: value.entrySet()) {
                                         // all highlighted values end up in 
'rep:excerpt', regardless of field match
                                         for (String v : entry.getValue()) {
-                                            
doc.addField(QueryImpl.REP_EXCERPT, v);
+                                            
doc.addField(QueryConstants.REP_EXCERPT, v);
                                         }
                                     }
                                 }
@@ -533,9 +532,9 @@ public class SolrQueryIndex implements F
         } else return (!configuration.useForPropertyRestrictions() // Solr 
index not used for properties
                 || (configuration.getUsedProperties().size() > 0 && 
!configuration.getUsedProperties().contains(property.propertyName)) // not 
explicitly contained in the used properties
                 || property.propertyName.contains("/") // no child-level 
property restrictions
-                || QueryImpl.REP_EXCERPT.equals(property.propertyName) // 
rep:excerpt is not handled at the property level
-                || 
QueryImpl.OAK_SCORE_EXPLANATION.equals(property.propertyName) // score explain 
is not handled at the property level
-                || QueryImpl.REP_FACET.equals(property.propertyName) // 
rep:facet is not handled at the property level
+                || QueryConstants.REP_EXCERPT.equals(property.propertyName) // 
rep:excerpt is not handled at the property level
+                || 
QueryConstants.OAK_SCORE_EXPLANATION.equals(property.propertyName) // score 
explain is not handled at the property level
+                || QueryConstants.REP_FACET.equals(property.propertyName) // 
rep:facet is not handled at the property level
                 || 
QueryConstants.RESTRICTION_LOCAL_NAME.equals(property.propertyName)
                 || 
property.propertyName.startsWith(QueryConstants.FUNCTION_RESTRICTION_PREFIX)
                 || 
configuration.getIgnoredProperties().contains(property.propertyName));
@@ -737,11 +736,11 @@ public class SolrQueryIndex implements F
                 @Override
                 public PropertyValue getValue(String columnName) {
                     // overlay the score
-                    if (QueryImpl.JCR_SCORE.equals(columnName)) {
+                    if (QueryConstants.JCR_SCORE.equals(columnName)) {
                         return PropertyValues.newDouble(currentRow.score);
                     }
-                    if (columnName.startsWith(QueryImpl.REP_FACET)) {
-                        String facetFieldName = 
columnName.substring(QueryImpl.REP_FACET.length() + 1, columnName.length() - 1);
+                    if (columnName.startsWith(QueryConstants.REP_FACET)) {
+                        String facetFieldName = 
columnName.substring(QueryConstants.REP_FACET.length() + 1, columnName.length() 
- 1);
                         FacetField facetField = null;
                         for (FacetField ff : currentRow.facetFields) {
                             if (ff.getName().equals(facetFieldName + 
"_facet")) {
@@ -761,7 +760,7 @@ public class SolrQueryIndex implements F
                             return null;
                         }
                     }
-                    if (QueryImpl.REP_SPELLCHECK.equals(columnName) || 
QueryImpl.REP_SUGGEST.equals(columnName)) {
+                    if (QueryConstants.REP_SPELLCHECK.equals(columnName) || 
QueryConstants.REP_SUGGEST.equals(columnName)) {
                         return PropertyValues.newString(currentRow.suggestion);
                     }
                     Collection<Object> fieldValues = 
currentRow.doc.getFieldValues(columnName);


Reply via email to