You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2009/04/30 17:29:09 UTC
svn commit: r770284 - in
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene:
./ constraint/ join/
Author: jukka
Date: Thu Apr 30 15:29:09 2009
New Revision: 770284
URL: http://svn.apache.org/viewvc?rev=770284&view=rev
Log:
JCR-2092: make spi query code compatible with JCR 2.0
Update jackrabbit-core to use JCR 2.0 interfaces instead of the SPI versions
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JoinQuery.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryObjectModelImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/ComparisonConstraint.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/ConstraintBuilder.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/LikeConstraint.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/Join.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JoinQuery.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JoinQuery.java?rev=770284&r1=770283&r2=770284&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JoinQuery.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JoinQuery.java Thu Apr 30 15:29:09 2009
@@ -43,7 +43,7 @@
/**
* The join type.
*/
- private final int joinType;
+ private final String joinType;
/**
* The QOM join condition.
@@ -72,7 +72,7 @@
*/
public JoinQuery(MultiColumnQuery left,
MultiColumnQuery right,
- int joinType,
+ String joinType,
JoinConditionImpl joinCondition,
SortComparatorSource scs,
HierarchyManager hmgr) {
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryObjectModelImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryObjectModelImpl.java?rev=770284&r1=770283&r2=770284&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryObjectModelImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryObjectModelImpl.java Thu Apr 30 15:29:09 2009
@@ -16,25 +16,25 @@
*/
package org.apache.jackrabbit.core.query.lucene;
+import javax.jcr.RepositoryException;
+import javax.jcr.UnsupportedRepositoryOperationException;
+import javax.jcr.query.QueryResult;
+import javax.jcr.query.qom.PropertyValue;
+import javax.jcr.query.qom.QueryObjectModelConstants;
+
+import org.apache.jackrabbit.core.ItemManager;
+import org.apache.jackrabbit.core.SessionImpl;
import org.apache.jackrabbit.core.query.PropertyTypeRegistry;
-import org.apache.jackrabbit.core.query.lucene.constraint.ConstraintBuilder;
import org.apache.jackrabbit.core.query.lucene.constraint.Constraint;
-import org.apache.jackrabbit.spi.commons.query.jsr283.qom.QueryObjectModelConstants;
-import org.apache.jackrabbit.spi.commons.query.jsr283.qom.PropertyValue;
-import org.apache.jackrabbit.spi.commons.query.qom.QueryObjectModelTree;
-import org.apache.jackrabbit.spi.commons.query.qom.ColumnImpl;
-import org.apache.jackrabbit.spi.commons.query.qom.OrderingImpl;
-import org.apache.jackrabbit.spi.commons.query.qom.DefaultTraversingQOMTreeVisitor;
-import org.apache.jackrabbit.spi.commons.query.qom.BindVariableValueImpl;
-import org.apache.jackrabbit.spi.commons.name.PathFactoryImpl;
-import org.apache.jackrabbit.core.SessionImpl;
-import org.apache.jackrabbit.core.ItemManager;
+import org.apache.jackrabbit.core.query.lucene.constraint.ConstraintBuilder;
import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.Path;
-
-import javax.jcr.RepositoryException;
-import javax.jcr.UnsupportedRepositoryOperationException;
-import javax.jcr.query.QueryResult;
+import org.apache.jackrabbit.spi.commons.name.PathFactoryImpl;
+import org.apache.jackrabbit.spi.commons.query.qom.BindVariableValueImpl;
+import org.apache.jackrabbit.spi.commons.query.qom.ColumnImpl;
+import org.apache.jackrabbit.spi.commons.query.qom.DefaultTraversingQOMTreeVisitor;
+import org.apache.jackrabbit.spi.commons.query.qom.OrderingImpl;
+import org.apache.jackrabbit.spi.commons.query.qom.QueryObjectModelTree;
/**
* <code>QueryObjectModelImpl</code>...
@@ -116,7 +116,9 @@
Path[] orderProps = new Path[orderings.length];
boolean[] orderSpecs = new boolean[orderings.length];
for (int i = 0; i < orderings.length; i++) {
- orderSpecs[i] = orderings[i].getOrder() == QueryObjectModelConstants.ORDER_ASCENDING;
+ orderSpecs[i] =
+ QueryObjectModelConstants.JCR_ORDER_ASCENDING.equals(
+ orderings[i].getOrder());
if (orderings[i].getOperand() instanceof PropertyValue) {
PropertyValue pv = (PropertyValue) orderings[i].getOperand();
orderProps[i] = PathFactoryImpl.getInstance().create(pv.getPropertyName());
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/ComparisonConstraint.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/ComparisonConstraint.java?rev=770284&r1=770283&r2=770284&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/ComparisonConstraint.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/ComparisonConstraint.java Thu Apr 30 15:29:09 2009
@@ -18,14 +18,14 @@
import java.io.IOException;
-import javax.jcr.Value;
import javax.jcr.RepositoryException;
+import javax.jcr.Value;
+import javax.jcr.query.qom.QueryObjectModelConstants;
-import org.apache.jackrabbit.spi.commons.query.jsr283.qom.QueryObjectModelConstants;
-import org.apache.jackrabbit.spi.commons.query.qom.SelectorImpl;
-import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.core.query.lucene.ScoreNode;
import org.apache.jackrabbit.core.query.lucene.Util;
+import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.commons.query.qom.SelectorImpl;
/**
* <code>ComparisonConstraint</code> implements a comparison constraint.
@@ -41,7 +41,7 @@
/**
* The operator.
*/
- private final int operator;
+ private final String operator;
/**
* The static operand.
@@ -49,7 +49,7 @@
private final Value operand2;
/**
- * Creates a new comparision constraint.
+ * Creates a new comparison constraint.
*
* @param operand1 the dynamic operand.
* @param operator the operator.
@@ -57,7 +57,7 @@
* @param selector the selector for this constraint.
*/
public ComparisonConstraint(DynamicOperand operand1,
- int operator,
+ String operator,
Value operand2,
SelectorImpl selector) {
super(selector);
@@ -101,21 +101,20 @@
*/
protected boolean evaluate(Value op1) throws RepositoryException {
int c = Util.compare(op1, operand2);
- switch (operator) {
- case OPERATOR_EQUAL_TO:
- return c == 0;
- case OPERATOR_GREATER_THAN:
- return c > 0;
- case OPERATOR_GREATER_THAN_OR_EQUAL_TO:
- return c >= 0;
- case OPERATOR_LESS_THAN:
- return c < 0;
- case OPERATOR_LESS_THAN_OR_EQUAL_TO:
- return c <= 0;
- case OPERATOR_NOT_EQUAL_TO:
- return c != 0;
- default:
- throw new IllegalStateException("unsupported operation: " + operator);
+ if (JCR_OPERATOR_EQUAL_TO.equals(operator)) {
+ return c == 0;
+ } else if (JCR_OPERATOR_GREATER_THAN.equals(operator)) {
+ return c > 0;
+ } else if (JCR_OPERATOR_GREATER_THAN_OR_EQUAL_TO.equals(operator)) {
+ return c >= 0;
+ } else if (JCR_OPERATOR_LESS_THAN.equals(operator)) {
+ return c < 0;
+ } else if (JCR_OPERATOR_LESS_THAN_OR_EQUAL_TO.equals(operator)) {
+ return c <= 0;
+ } else if (JCR_OPERATOR_NOT_EQUAL_TO.equals(operator)) {
+ return c != 0;
+ } else {
+ throw new IllegalStateException("unsupported operation: " + operator);
}
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/ConstraintBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/ConstraintBuilder.java?rev=770284&r1=770283&r2=770284&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/ConstraintBuilder.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/ConstraintBuilder.java Thu Apr 30 15:29:09 2009
@@ -18,23 +18,26 @@
import java.util.Map;
+import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
-import javax.jcr.PropertyType;
-import javax.jcr.ValueFormatException;
import javax.jcr.ValueFactory;
+import javax.jcr.ValueFormatException;
import javax.jcr.query.InvalidQueryException;
+import javax.jcr.query.qom.QueryObjectModelConstants;
-import org.apache.jackrabbit.spi.commons.query.qom.ConstraintImpl;
-import org.apache.jackrabbit.spi.commons.query.qom.QOMTreeVisitor;
+import org.apache.jackrabbit.core.query.lucene.LuceneQueryFactory;
+import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.commons.query.qom.AndImpl;
import org.apache.jackrabbit.spi.commons.query.qom.BindVariableValueImpl;
import org.apache.jackrabbit.spi.commons.query.qom.ChildNodeImpl;
import org.apache.jackrabbit.spi.commons.query.qom.ChildNodeJoinConditionImpl;
import org.apache.jackrabbit.spi.commons.query.qom.ColumnImpl;
import org.apache.jackrabbit.spi.commons.query.qom.ComparisonImpl;
+import org.apache.jackrabbit.spi.commons.query.qom.ConstraintImpl;
import org.apache.jackrabbit.spi.commons.query.qom.DescendantNodeImpl;
import org.apache.jackrabbit.spi.commons.query.qom.DescendantNodeJoinConditionImpl;
+import org.apache.jackrabbit.spi.commons.query.qom.DynamicOperandImpl;
import org.apache.jackrabbit.spi.commons.query.qom.EquiJoinConditionImpl;
import org.apache.jackrabbit.spi.commons.query.qom.FullTextSearchImpl;
import org.apache.jackrabbit.spi.commons.query.qom.FullTextSearchScoreImpl;
@@ -45,20 +48,17 @@
import org.apache.jackrabbit.spi.commons.query.qom.NodeLocalNameImpl;
import org.apache.jackrabbit.spi.commons.query.qom.NodeNameImpl;
import org.apache.jackrabbit.spi.commons.query.qom.NotImpl;
-import org.apache.jackrabbit.spi.commons.query.qom.OrderingImpl;
import org.apache.jackrabbit.spi.commons.query.qom.OrImpl;
+import org.apache.jackrabbit.spi.commons.query.qom.OrderingImpl;
import org.apache.jackrabbit.spi.commons.query.qom.PropertyExistenceImpl;
import org.apache.jackrabbit.spi.commons.query.qom.PropertyValueImpl;
+import org.apache.jackrabbit.spi.commons.query.qom.QOMTreeVisitor;
import org.apache.jackrabbit.spi.commons.query.qom.QueryObjectModelTree;
import org.apache.jackrabbit.spi.commons.query.qom.SameNodeImpl;
import org.apache.jackrabbit.spi.commons.query.qom.SameNodeJoinConditionImpl;
import org.apache.jackrabbit.spi.commons.query.qom.SelectorImpl;
-import org.apache.jackrabbit.spi.commons.query.qom.DynamicOperandImpl;
import org.apache.jackrabbit.spi.commons.query.qom.StaticOperandImpl;
import org.apache.jackrabbit.spi.commons.query.qom.UpperCaseImpl;
-import org.apache.jackrabbit.spi.commons.query.jsr283.qom.QueryObjectModelConstants;
-import org.apache.jackrabbit.spi.Name;
-import org.apache.jackrabbit.core.query.lucene.LuceneQueryFactory;
/**
* <code>ConstraintBuilder</code> builds a {@link Constraint} from a tree of
@@ -173,7 +173,7 @@
DynamicOperand dynOp = (DynamicOperand) op1.accept(this, staticValue);
SelectorImpl selector = getSelector(op1.getSelectorQName());
- if (node.getOperator() == QueryObjectModelConstants.OPERATOR_LIKE) {
+ if (QueryObjectModelConstants.JCR_OPERATOR_LIKE.equals(node.getOperator())) {
return new LikeConstraint(dynOp, staticValue, selector);
} else {
return new ComparisonConstraint(dynOp, node.getOperator(),
@@ -230,7 +230,7 @@
}
public Object visit(LiteralImpl node, Object data) throws Exception {
- return node.getValue();
+ return node.getLiteralValue();
}
public Object visit(LowerCaseImpl node, Object data) throws Exception {
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/LikeConstraint.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/LikeConstraint.java?rev=770284&r1=770283&r2=770284&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/LikeConstraint.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/LikeConstraint.java Thu Apr 30 15:29:09 2009
@@ -46,7 +46,7 @@
public LikeConstraint(DynamicOperand operand1,
Value operand2,
SelectorImpl selector) throws RepositoryException {
- super(operand1, OPERATOR_LIKE, operand2, selector);
+ super(operand1, JCR_OPERATOR_LIKE, operand2, selector);
this.matcher = Util.createRegexp(operand2.getString()).matcher("");
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/Join.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/Join.java?rev=770284&r1=770283&r2=770284&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/Join.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/join/Join.java Thu Apr 30 15:29:09 2009
@@ -21,6 +21,8 @@
import java.util.Arrays;
import java.util.LinkedList;
+import javax.jcr.query.qom.QueryObjectModelConstants;
+
import org.apache.jackrabbit.core.query.lucene.MultiColumnQueryHits;
import org.apache.jackrabbit.core.query.lucene.ScoreNode;
import org.apache.jackrabbit.core.query.lucene.HierarchyResolver;
@@ -32,7 +34,6 @@
import org.apache.jackrabbit.spi.commons.query.qom.EquiJoinConditionImpl;
import org.apache.jackrabbit.spi.commons.query.qom.ChildNodeJoinConditionImpl;
import org.apache.jackrabbit.spi.commons.query.qom.SameNodeJoinConditionImpl;
-import org.apache.jackrabbit.spi.commons.query.jsr283.qom.QueryObjectModelConstants;
import org.apache.lucene.search.SortComparatorSource;
import org.apache.lucene.index.IndexReader;
@@ -119,7 +120,7 @@
*/
public static Join create(final MultiColumnQueryHits left,
final MultiColumnQueryHits right,
- final int joinType,
+ final String joinType,
final JoinConditionImpl condition,
final IndexReader reader,
final HierarchyResolver resolver,
@@ -129,7 +130,8 @@
try {
return (Join) condition.accept(new DefaultQOMTreeVisitor() {
- private boolean isInner = joinType == JOIN_TYPE_INNER;
+ private boolean isInner =
+ JCR_JOIN_TYPE_INNER.equals(joinType);
private MultiColumnQueryHits outer;
private int outerIdx;
@@ -138,8 +140,10 @@
MultiColumnQueryHits ancestor = getSourceWithName(node.getAncestorSelectorQName(), left, right);
MultiColumnQueryHits descendant = getSourceWithName(node.getDescendantSelectorQName(), left, right);
Condition c;
- if (isInner || descendant == left && joinType == JOIN_TYPE_LEFT_OUTER
- || descendant == right && joinType == JOIN_TYPE_RIGHT_OUTER) {
+ if (isInner || descendant == left
+ && JCR_JOIN_TYPE_LEFT_OUTER.equals(joinType)
+ || descendant == right
+ && JCR_JOIN_TYPE_RIGHT_OUTER.equals(joinType)) {
// also applies to inner join
// assumption: DescendantNodeJoin is more
// efficient than AncestorNodeJoin, TODO: verify
@@ -163,8 +167,10 @@
Name innerName;
Name innerPropName;
Name outerPropName;
- if (isInner || src1 == left && joinType == JOIN_TYPE_LEFT_OUTER
- || src1 == right && joinType == JOIN_TYPE_RIGHT_OUTER) {
+ if (isInner || src1 == left
+ && JCR_JOIN_TYPE_LEFT_OUTER.equals(joinType)
+ || src1 == right
+ && JCR_JOIN_TYPE_RIGHT_OUTER.equals(joinType)) {
outer = src1;
outerIdx = getIndex(outer, node.getSelector1QName());
inner = src2;
@@ -190,8 +196,10 @@
MultiColumnQueryHits child = getSourceWithName(node.getChildSelectorQName(), left, right);
MultiColumnQueryHits parent = getSourceWithName(node.getParentSelectorQName(), left, right);
Condition c;
- if (child == left && joinType == JOIN_TYPE_LEFT_OUTER
- || child == right && joinType == JOIN_TYPE_RIGHT_OUTER) {
+ if (child == left
+ && JCR_JOIN_TYPE_LEFT_OUTER.equals(joinType)
+ || child == right
+ && JCR_JOIN_TYPE_RIGHT_OUTER.equals(joinType)) {
outer = child;
outerIdx = getIndex(outer, node.getChildSelectorQName());
c = new ChildNodeJoin(parent, reader, resolver, node);
@@ -211,8 +219,10 @@
MultiColumnQueryHits src1 = getSourceWithName(node.getSelector1QName(), left, right);
MultiColumnQueryHits src2 = getSourceWithName(node.getSelector2QName(), left, right);
Condition c;
- if (isInner || src1 == left && joinType == JOIN_TYPE_LEFT_OUTER
- || src1 == right && joinType == JOIN_TYPE_RIGHT_OUTER) {
+ if (isInner || src1 == left
+ && JCR_JOIN_TYPE_LEFT_OUTER.equals(joinType)
+ || src1 == right
+ && JCR_JOIN_TYPE_RIGHT_OUTER.equals(joinType)) {
outer = src1;
outerIdx = getIndex(outer, node.getSelector1QName());
if (node.getSelector2QPath() != null) {