Index: oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java (revision 1797326) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java (revision ) @@ -27,10 +27,10 @@ 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 @@ // 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 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); } Index: oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java (revision 1797326) +++ oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java (revision ) @@ -41,7 +41,6 @@ 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.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 @@ 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 @@ } 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 @@ @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); Index: oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java (revision 1797326) +++ oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java (revision ) @@ -55,7 +55,6 @@ 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.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 @@ 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 @@ 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 @@ @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 { Index: oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java (revision 1797326) +++ oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java (revision ) @@ -22,7 +22,6 @@ 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.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 @@ 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 @@ 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); Index: oak-core/src/main/java/org/apache/jackrabbit/oak/query/ResultRowImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/query/ResultRowImpl.java (revision 1797326) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/query/ResultRowImpl.java (revision ) @@ -27,6 +27,7 @@ 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 @@ // 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); } } \ No newline at end of file Index: oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java (revision 1797326) +++ oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java (revision ) @@ -35,7 +35,6 @@ 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 @@ // 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)); } Index: oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java (revision 1797326) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java (revision ) @@ -48,6 +48,7 @@ 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 @@ 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 @@ 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 @@ 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)); Index: oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java (revision 1797326) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java (revision ) @@ -81,6 +81,7 @@ 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,43 +103,7 @@ * 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); private boolean potentiallySlowTraversalQueryLogged; @@ -443,7 +408,7 @@ 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; Index: oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FacetHelper.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FacetHelper.java (revision 1797326) +++ oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FacetHelper.java (revision ) @@ -24,7 +24,7 @@ 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; @@ -86,6 +86,6 @@ 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); } } Index: oak-core/src/main/java/org/apache/jackrabbit/oak/query/xpath/Statement.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/query/xpath/Statement.java (revision 1797326) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/query/xpath/Statement.java (revision ) @@ -18,12 +18,12 @@ 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 @@ // 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(", "); Index: oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchScoreImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchScoreImpl.java (revision 1797326) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchScoreImpl.java (revision ) @@ -25,9 +25,9 @@ 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 @@ @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 @@ // not supported return; } - f.restrictProperty(QueryImpl.JCR_SCORE, operator, v); + f.restrictProperty(QueryConstants.JCR_SCORE, operator, v); } } Index: oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElementFactory.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElementFactory.java (revision 1797326) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElementFactory.java (revision ) @@ -20,7 +20,7 @@ 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 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); Index: oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java (revision 1797326) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java (revision ) @@ -55,6 +55,7 @@ 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 @@ boolean distinct = readIf("DISTINCT"); ArrayList 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(); Index: oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/ResultRowToAuthorizable.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/ResultRowToAuthorizable.java (revision 1797326) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/ResultRowToAuthorizable.java (revision ) @@ -27,8 +27,8 @@ 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 @@ 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); \ No newline at end of file Index: oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java (revision 1797326) +++ oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java (revision ) @@ -58,6 +58,7 @@ 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 @@ /** * 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 @@ // 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 @@ protected List assertQuery(String sql, List expected) { return assertQuery(sql, SQL2, expected); } - + protected void assertResultSize(String query, String language, long expected) { long time = System.currentTimeMillis(); try { @@ -316,7 +317,7 @@ return paths; } - + protected static void assertResult(@Nonnull List expected, @Nonnull List actual) { for (String p : checkNotNull(expected)) { assertTrue("Expected path " + p + " not found, got " + actual, checkNotNull(actual) @@ -329,14 +330,14 @@ 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(); Index: oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryConstants.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryConstants.java (revision 1797326) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryConstants.java (revision ) @@ -51,4 +51,39 @@ 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 Index: oak-core/src/main/java/org/apache/jackrabbit/oak/query/facet/FacetResult.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/query/facet/FacetResult.java (revision 1797326) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/query/facet/FacetResult.java (revision ) @@ -33,7 +33,7 @@ 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 @@ 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(); Index: oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java (revision 1797326) +++ oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java (revision ) @@ -48,7 +48,6 @@ 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 @@ for (Map.Entry> 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 @@ } 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 @@ @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 @@ 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 fieldValues = currentRow.doc.getFieldValues(columnName);