You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by th...@apache.org on 2012/07/24 14:24:32 UTC
svn commit: r1365006 - in
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query:
./ ast/
Author: thomasm
Date: Tue Jul 24 12:24:30 2012
New Revision: 1365006
URL: http://svn.apache.org/viewvc?rev=1365006&view=rev
Log:
OAK-28 Query implementation (mainly Javadocs)
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.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/XPathToSQL2Converter.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AndImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElement.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstVisitor.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstVisitorBase.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/BindVariableValueImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ChildNodeImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ChildNodeJoinConditionImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ColumnImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ComparisonImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ConstraintImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/DescendantNodeImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/DescendantNodeJoinConditionImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/DynamicOperandImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/EquiJoinConditionImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchImpl.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/JoinConditionImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/JoinImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LengthImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LiteralImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LowerCaseImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeLocalNameImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeNameImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NotImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/OrImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/OrderingImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyExistenceImpl.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/SameNodeImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SameNodeJoinConditionImpl.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/ast/SourceImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/StaticOperandImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/UpperCaseImpl.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java Tue Jul 24 12:24:30 2012
@@ -349,6 +349,9 @@ public class Query {
source.prepare(mk);
}
+ /**
+ * An iterator over result rows.
+ */
class RowIterator implements Iterator<ResultRowImpl> {
private final String revisionId;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java Tue Jul 24 12:24:30 2012
@@ -33,6 +33,9 @@ import org.apache.jackrabbit.oak.spi.Que
import org.apache.jackrabbit.oak.spi.QueryIndexProvider;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
+/**
+ * The query engine implementation.
+ */
public class QueryEngineImpl implements QueryEngine {
static final String SQL2 = "JCR-SQL2";
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=1365006&r1=1365005&r2=1365006&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 Jul 24 12:24:30 2012
@@ -42,6 +42,8 @@ public class ResultRowImpl implements Re
public String getPath() {
if (paths.length > 1) {
throw new IllegalArgumentException("More than one selector");
+ } else if (paths.length == 0) {
+ throw new IllegalArgumentException("This query does not have a selector");
}
return paths[0];
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/XPathToSQL2Converter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/XPathToSQL2Converter.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/XPathToSQL2Converter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/XPathToSQL2Converter.java Tue Jul 24 12:24:30 2012
@@ -704,6 +704,16 @@ public class XPathToSQL2Converter {
return new ParseException("Query:\n" + query, index);
}
+ static String removeParens(String s) {
+ if (s.startsWith("(") && s.endsWith(")")) {
+ return s.substring(1, s.length() - 1);
+ }
+ return s;
+ }
+
+ /**
+ * An expression.
+ */
abstract static class Expression {
boolean isCondition() {
@@ -712,6 +722,9 @@ public class XPathToSQL2Converter {
}
+ /**
+ * A literal expression.
+ */
static class Literal extends Expression {
final String value;
@@ -739,6 +752,9 @@ public class XPathToSQL2Converter {
}
+ /**
+ * A property expression.
+ */
static class Property extends Expression {
final String name;
@@ -754,6 +770,9 @@ public class XPathToSQL2Converter {
}
+ /**
+ * A condition.
+ */
static class Condition extends Expression {
final Expression left;
@@ -783,6 +802,9 @@ public class XPathToSQL2Converter {
}
+ /**
+ * A function call.
+ */
static class Function extends Expression {
final String name;
@@ -813,6 +835,9 @@ public class XPathToSQL2Converter {
}
+ /**
+ * A cast operation.
+ */
static class Cast extends Expression {
final Expression expr;
@@ -838,6 +863,9 @@ public class XPathToSQL2Converter {
}
+ /**
+ * An order by expression.
+ */
static class Order {
boolean descending;
@@ -850,12 +878,5 @@ public class XPathToSQL2Converter {
}
- static String removeParens(String s) {
- if (s.startsWith("(") && s.endsWith(")")) {
- return s.substring(1, s.length() - 1);
- }
- return s;
- }
-
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AndImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AndImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AndImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AndImpl.java Tue Jul 24 12:24:30 2012
@@ -20,6 +20,9 @@ package org.apache.jackrabbit.oak.query.
import org.apache.jackrabbit.oak.query.index.FilterImpl;
+/**
+ * An AND condition.
+ */
public class AndImpl extends ConstraintImpl {
private final ConstraintImpl constraint1, constraint2;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElement.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElement.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElement.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElement.java Tue Jul 24 12:24:30 2012
@@ -29,6 +29,9 @@ import org.apache.jackrabbit.oak.query.Q
import javax.jcr.PropertyType;
+/**
+ * The base class for all abstract syntax tree nodes.
+ */
abstract class AstElement {
protected Query query;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstVisitor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstVisitor.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstVisitor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstVisitor.java Tue Jul 24 12:24:30 2012
@@ -18,6 +18,9 @@
*/
package org.apache.jackrabbit.oak.query.ast;
+/**
+ * A visitor to access all elements.
+ */
public interface AstVisitor {
boolean visit(AndImpl node);
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstVisitorBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstVisitorBase.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstVisitorBase.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstVisitorBase.java Tue Jul 24 12:24:30 2012
@@ -18,6 +18,9 @@ package org.apache.jackrabbit.oak.query.
import org.apache.jackrabbit.oak.query.Query;
+/**
+ * The base class to visit all elements.
+ */
public abstract class AstVisitorBase implements AstVisitor {
/**
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/BindVariableValueImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/BindVariableValueImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/BindVariableValueImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/BindVariableValueImpl.java Tue Jul 24 12:24:30 2012
@@ -20,6 +20,9 @@ package org.apache.jackrabbit.oak.query.
import org.apache.jackrabbit.oak.api.CoreValue;
+/**
+ * A bind variable.
+ */
public class BindVariableValueImpl extends StaticOperandImpl {
private final String bindVariableName;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ChildNodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ChildNodeImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ChildNodeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ChildNodeImpl.java Tue Jul 24 12:24:30 2012
@@ -22,6 +22,9 @@ import org.apache.jackrabbit.oak.commons
import org.apache.jackrabbit.oak.query.index.FilterImpl;
import org.apache.jackrabbit.oak.spi.Filter;
+/**
+ * The "ischildnode(...)" condition.
+ */
public class ChildNodeImpl extends ConstraintImpl {
private final String selectorName;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ChildNodeJoinConditionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ChildNodeJoinConditionImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ChildNodeJoinConditionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ChildNodeJoinConditionImpl.java Tue Jul 24 12:24:30 2012
@@ -22,6 +22,9 @@ import org.apache.jackrabbit.oak.commons
import org.apache.jackrabbit.oak.query.index.FilterImpl;
import org.apache.jackrabbit.oak.spi.Filter;
+/**
+ * The "ischildnode(...)" join condition.
+ */
public class ChildNodeJoinConditionImpl extends JoinConditionImpl {
private final String childSelectorName;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ColumnImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ColumnImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ColumnImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ColumnImpl.java Tue Jul 24 12:24:30 2012
@@ -22,6 +22,9 @@ import org.apache.jackrabbit.oak.api.Cor
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.plugins.memory.SinglePropertyState;
+/**
+ * A result column expression.
+ */
public class ColumnImpl extends AstElement {
private final String selectorName, propertyName, columnName;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ComparisonImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ComparisonImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ComparisonImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ComparisonImpl.java Tue Jul 24 12:24:30 2012
@@ -27,6 +27,9 @@ import org.apache.jackrabbit.oak.api.Cor
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
+/**
+ * A comparison operation (including "like").
+ */
public class ComparisonImpl extends ConstraintImpl {
private final DynamicOperandImpl operand1;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ConstraintImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ConstraintImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ConstraintImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ConstraintImpl.java Tue Jul 24 12:24:30 2012
@@ -18,6 +18,9 @@ package org.apache.jackrabbit.oak.query.
import org.apache.jackrabbit.oak.query.index.FilterImpl;
+/**
+ * The base class for constraints.
+ */
public abstract class ConstraintImpl extends AstElement {
/**
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/DescendantNodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/DescendantNodeImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/DescendantNodeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/DescendantNodeImpl.java Tue Jul 24 12:24:30 2012
@@ -22,6 +22,9 @@ import org.apache.jackrabbit.oak.commons
import org.apache.jackrabbit.oak.query.index.FilterImpl;
import org.apache.jackrabbit.oak.spi.Filter;
+/**
+ * The "isdescendantnode(...)" condition.
+ */
public class DescendantNodeImpl extends ConstraintImpl {
private final String selectorName;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/DescendantNodeJoinConditionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/DescendantNodeJoinConditionImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/DescendantNodeJoinConditionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/DescendantNodeJoinConditionImpl.java Tue Jul 24 12:24:30 2012
@@ -22,6 +22,9 @@ import org.apache.jackrabbit.oak.commons
import org.apache.jackrabbit.oak.query.index.FilterImpl;
import org.apache.jackrabbit.oak.spi.Filter;
+/**
+ * The "isdescendantnode(...)" join condition.
+ */
public class DescendantNodeJoinConditionImpl extends JoinConditionImpl {
private final String descendantSelectorName;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/DynamicOperandImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/DynamicOperandImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/DynamicOperandImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/DynamicOperandImpl.java Tue Jul 24 12:24:30 2012
@@ -20,6 +20,9 @@ import org.apache.jackrabbit.oak.api.Cor
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
+/**
+ * The base class for dynamic operands (such as a function or property).
+ */
public abstract class DynamicOperandImpl extends AstElement {
public abstract PropertyState currentProperty();
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/EquiJoinConditionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/EquiJoinConditionImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/EquiJoinConditionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/EquiJoinConditionImpl.java Tue Jul 24 12:24:30 2012
@@ -21,6 +21,9 @@ package org.apache.jackrabbit.oak.query.
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
+/**
+ * The "a.x = b.y" join condition.
+ */
public class EquiJoinConditionImpl extends JoinConditionImpl {
private final String property1Name;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchImpl.java Tue Jul 24 12:24:30 2012
@@ -25,6 +25,9 @@ import org.apache.jackrabbit.oak.api.Pro
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
+/**
+ * A fulltext "contains(...)" condition.
+ */
public class FullTextSearchImpl extends ConstraintImpl {
private final String selectorName;
@@ -129,6 +132,9 @@ public class FullTextSearchImpl extends
f.restrictFulltextCondition(fullTextSearchExpression.currentValue().getString());
}
+ /**
+ * A parser for fulltext condition literals.
+ */
public static class FullTextParser {
String text;
@@ -239,11 +245,17 @@ public class FullTextSearchImpl extends
}
+ /**
+ * The base class for fulltext condition expression.
+ */
public abstract static class FullTextExpression {
public abstract boolean evaluate(String value);
abstract FullTextExpression simplify();
}
+ /**
+ * A fulltext "and" condition.
+ */
static class FullTextAnd extends FullTextExpression {
ArrayList<FullTextExpression> list = new ArrayList<FullTextExpression>();
@@ -277,6 +289,9 @@ public class FullTextSearchImpl extends
}
+ /**
+ * A fulltext "or" condition.
+ */
static class FullTextOr extends FullTextExpression {
ArrayList<FullTextExpression> list = new ArrayList<FullTextExpression>();
@@ -310,6 +325,9 @@ public class FullTextSearchImpl extends
}
+ /**
+ * A fulltext term, or a "not" term.
+ */
static class FullTextTerm extends FullTextExpression {
boolean not;
String text;
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=1365006&r1=1365005&r2=1365006&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 Jul 24 12:24:30 2012
@@ -22,6 +22,9 @@ import org.apache.jackrabbit.oak.api.Cor
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
+/**
+ * A fulltext search score expression.
+ */
public class FullTextSearchScoreImpl extends DynamicOperandImpl {
private final String selectorName;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/JoinConditionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/JoinConditionImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/JoinConditionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/JoinConditionImpl.java Tue Jul 24 12:24:30 2012
@@ -15,7 +15,9 @@ package org.apache.jackrabbit.oak.query.
import org.apache.jackrabbit.oak.query.index.FilterImpl;
-
+/**
+ * The base class for join conditions.
+ */
public abstract class JoinConditionImpl extends AstElement {
public abstract boolean evaluate();
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/JoinImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/JoinImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/JoinImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/JoinImpl.java Tue Jul 24 12:24:30 2012
@@ -16,6 +16,9 @@ package org.apache.jackrabbit.oak.query.
import org.apache.jackrabbit.mk.api.MicroKernel;
import org.apache.jackrabbit.oak.query.Query;
+/**
+ * A join.
+ */
public class JoinImpl extends SourceImpl {
private final JoinConditionImpl joinCondition;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LengthImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LengthImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LengthImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LengthImpl.java Tue Jul 24 12:24:30 2012
@@ -24,6 +24,9 @@ import org.apache.jackrabbit.oak.api.Pro
import org.apache.jackrabbit.oak.plugins.memory.SinglePropertyState;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
+/**
+ * The function "length(..)".
+ */
public class LengthImpl extends DynamicOperandImpl {
private final PropertyValueImpl propertyValue;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LiteralImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LiteralImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LiteralImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LiteralImpl.java Tue Jul 24 12:24:30 2012
@@ -23,6 +23,9 @@ import org.apache.jackrabbit.oak.query.S
import javax.jcr.PropertyType;
+/**
+ * A literal of a certain data type, possibly "cast(..)" of a literal.
+ */
public class LiteralImpl extends StaticOperandImpl {
private final CoreValue value;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LowerCaseImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LowerCaseImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LowerCaseImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LowerCaseImpl.java Tue Jul 24 12:24:30 2012
@@ -23,6 +23,9 @@ import org.apache.jackrabbit.oak.api.Pro
import org.apache.jackrabbit.oak.plugins.memory.SinglePropertyState;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
+/**
+ * The function "lower(..)".
+ */
public class LowerCaseImpl extends DynamicOperandImpl {
private final DynamicOperandImpl operand;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeLocalNameImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeLocalNameImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeLocalNameImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeLocalNameImpl.java Tue Jul 24 12:24:30 2012
@@ -24,6 +24,9 @@ import org.apache.jackrabbit.oak.api.Pro
import org.apache.jackrabbit.oak.plugins.memory.SinglePropertyState;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
+/**
+ * The function "localname(..)".
+ */
public class NodeLocalNameImpl extends DynamicOperandImpl {
private final String selectorName;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeNameImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeNameImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeNameImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeNameImpl.java Tue Jul 24 12:24:30 2012
@@ -25,6 +25,9 @@ import org.apache.jackrabbit.oak.commons
import org.apache.jackrabbit.oak.plugins.memory.SinglePropertyState;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
+/**
+ * The function "name(..)".
+ */
public class NodeNameImpl extends DynamicOperandImpl {
private final String selectorName;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NotImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NotImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NotImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NotImpl.java Tue Jul 24 12:24:30 2012
@@ -20,6 +20,9 @@ package org.apache.jackrabbit.oak.query.
import org.apache.jackrabbit.oak.query.index.FilterImpl;
+/**
+ * A "not" condition.
+ */
public class NotImpl extends ConstraintImpl {
private final ConstraintImpl constraint;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/OrImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/OrImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/OrImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/OrImpl.java Tue Jul 24 12:24:30 2012
@@ -20,6 +20,9 @@ package org.apache.jackrabbit.oak.query.
import org.apache.jackrabbit.oak.query.index.FilterImpl;
+/**
+ * An "or" condition.
+ */
public class OrImpl extends ConstraintImpl {
private final ConstraintImpl constraint1;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/OrderingImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/OrderingImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/OrderingImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/OrderingImpl.java Tue Jul 24 12:24:30 2012
@@ -18,6 +18,10 @@
*/
package org.apache.jackrabbit.oak.query.ast;
+/**
+ * An element of an "order by" list. This includes whether this element should
+ * be sorted in ascending or descending order.
+ */
public class OrderingImpl extends AstElement {
private final DynamicOperandImpl operand;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyExistenceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyExistenceImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyExistenceImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyExistenceImpl.java Tue Jul 24 12:24:30 2012
@@ -22,6 +22,9 @@ import org.apache.jackrabbit.oak.api.Cor
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
+/**
+ * A condition to check if the property exists ("is not null").
+ */
public class PropertyExistenceImpl extends ConstraintImpl {
private final String selectorName;
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=1365006&r1=1365005&r2=1365006&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 Jul 24 12:24:30 2012
@@ -24,6 +24,9 @@ import org.apache.jackrabbit.oak.api.Tre
import org.apache.jackrabbit.oak.commons.PathUtils;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
+/**
+ * A property expression.
+ */
public class PropertyValueImpl extends DynamicOperandImpl {
private final String selectorName;
@@ -90,10 +93,10 @@ public class PropertyValueImpl extends D
@Override
public void apply(FilterImpl f, Operator operator, CoreValue v) {
if (f.getSelector() == selector) {
- if (operator == Operator.NOT_EQUAL && v != null) {
- // not supported
- return;
- }
+ if (operator == Operator.NOT_EQUAL && v != null) {
+ // not supported
+ return;
+ }
f.restrictProperty(propertyName, operator, v);
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SameNodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SameNodeImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SameNodeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SameNodeImpl.java Tue Jul 24 12:24:30 2012
@@ -21,6 +21,9 @@ package org.apache.jackrabbit.oak.query.
import org.apache.jackrabbit.oak.query.index.FilterImpl;
import org.apache.jackrabbit.oak.spi.Filter;
+/**
+ * The function "issamenode(..)".
+ */
public class SameNodeImpl extends ConstraintImpl {
private final String path;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SameNodeJoinConditionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SameNodeJoinConditionImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SameNodeJoinConditionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SameNodeJoinConditionImpl.java Tue Jul 24 12:24:30 2012
@@ -21,6 +21,9 @@ package org.apache.jackrabbit.oak.query.
import org.apache.jackrabbit.oak.query.index.FilterImpl;
import org.apache.jackrabbit.oak.spi.Filter;
+/**
+ * The "issamenode(...)" join condition.
+ */
public class SameNodeJoinConditionImpl extends JoinConditionImpl {
private final String selector1Name;
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=1365006&r1=1365005&r2=1365006&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 Jul 24 12:24:30 2012
@@ -28,6 +28,9 @@ import org.apache.jackrabbit.oak.query.i
import org.apache.jackrabbit.oak.spi.Cursor;
import org.apache.jackrabbit.oak.spi.QueryIndex;
+/**
+ * A selector within a query.
+ */
public class SelectorImpl extends SourceImpl {
// TODO jcr:path isn't an official feature, support it?
@@ -37,6 +40,7 @@ public class SelectorImpl extends Source
private static final String TYPE_BASE = "nt:base";
+ // TODO possibly support using multiple indexes (using index intersection / index merge)
protected QueryIndex index;
private final String nodeTypeName, selectorName;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SourceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SourceImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SourceImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SourceImpl.java Tue Jul 24 12:24:30 2012
@@ -21,6 +21,9 @@ package org.apache.jackrabbit.oak.query.
import org.apache.jackrabbit.mk.api.MicroKernel;
import org.apache.jackrabbit.oak.query.Query;
+/**
+ * The base class of a selector and a join.
+ */
public abstract class SourceImpl extends AstElement {
protected ConstraintImpl queryConstraint;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/StaticOperandImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/StaticOperandImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/StaticOperandImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/StaticOperandImpl.java Tue Jul 24 12:24:30 2012
@@ -20,6 +20,9 @@ package org.apache.jackrabbit.oak.query.
import org.apache.jackrabbit.oak.api.CoreValue;
+/**
+ * The base class for static operands (literal, bind variables).
+ */
public abstract class StaticOperandImpl extends AstElement {
abstract CoreValue currentValue();
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/UpperCaseImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/UpperCaseImpl.java?rev=1365006&r1=1365005&r2=1365006&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/UpperCaseImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/UpperCaseImpl.java Tue Jul 24 12:24:30 2012
@@ -23,6 +23,9 @@ import org.apache.jackrabbit.oak.api.Pro
import org.apache.jackrabbit.oak.plugins.memory.SinglePropertyState;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
+/**
+ * The function "upper(..)".
+ */
public class UpperCaseImpl extends DynamicOperandImpl {
private final DynamicOperandImpl operand;