You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2009/06/15 14:51:42 UTC
svn commit: r784760 - in /jackrabbit/trunk:
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/
jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbi...
Author: mreutegg
Date: Mon Jun 15 12:51:41 2009
New Revision: 784760
URL: http://svn.apache.org/viewvc?rev=784760&view=rev
Log:
JCR-2085: test case (TCK) maintenance for JCR 2.0
- move ValueFactory field to AbstractJCRTest
- more QOM tests
- use RepositoryException instead of IOException in constraints
Added:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/FullTextSearchScoreOperand.java (with props)
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/AndConstraintTest.java (with props)
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/FullTextSearchScoreTest.java (with props)
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/NotConstraintTest.java (with props)
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/OrConstraintTest.java (with props)
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/PropertyValueTest.java (with props)
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/FilterMultiColumnQuery.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Ordering.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ScoreNode.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/DynamicOperand.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/LengthOperand.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/LowerCaseOperand.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/NodeLocalNameOperand.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/NodeNameOperand.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/PropertyValueOperand.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/QueryConstraint.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/UpperCaseOperand.java
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/AbstractJCRTest.java
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetPropertyCalendarTest.java
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractOrderByTest.java
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/BindVariableValueTest.java
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/LengthTest.java
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/NodeNameTest.java
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/PropertyExistenceTest.java
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/TestAll.java
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/UpperLowerCaseTest.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/FilterMultiColumnQuery.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/FilterMultiColumnQuery.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/FilterMultiColumnQuery.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/FilterMultiColumnQuery.java Mon Jun 15 12:51:41 2009
@@ -94,9 +94,7 @@
}
}
};
- if (orderings.length > 0 && hits.getSelectorNames().length > 1) {
- // subsequent ordering is only needed
- // when there is more than one column
+ if (orderings.length > 0) {
hits = new SortedMultiColumnQueryHits(hits, orderings, searcher.getIndexReader());
}
return hits;
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Ordering.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Ordering.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Ordering.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Ordering.java Mon Jun 15 12:51:41 2009
@@ -120,7 +120,7 @@
throws Exception {
selectorName[0] = node.getSelectorQName();
return new SortField(null, SortField.SCORE,
- ordering.isAscending());
+ !ordering.isAscending());
}
public Object visit(NodeLocalNameImpl node, Object data) throws Exception {
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ScoreNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ScoreNode.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ScoreNode.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ScoreNode.java Mon Jun 15 12:51:41 2009
@@ -37,7 +37,7 @@
/**
* The score of the node.
*/
- private final float score;
+ private float score;
/**
* The lucene document number for this score node. Set to <code>-1</code> if
@@ -83,6 +83,15 @@
}
/**
+ * Sets a new score value.
+ *
+ * @param score the score value.
+ */
+ public void setScore(float score) {
+ this.score = score;
+ }
+
+ /**
* Returns the document number for this score node.
*
* @param reader the current index reader to look up the document if
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=784760&r1=784759&r2=784760&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 Mon Jun 15 12:51:41 2009
@@ -76,10 +76,10 @@
if (sn == null) {
return false;
}
- Value[] values = operand1.getValues(sn, context);
try {
- for (int i = 0; i < values.length; i++) {
- if (evaluate(values[i])) {
+ Value[] values = operand1.getValues(sn, context);
+ for (Value value : values) {
+ if (evaluate(value)) {
return true;
}
}
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=784760&r1=784759&r2=784760&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 Mon Jun 15 12:51:41 2009
@@ -31,17 +31,12 @@
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;
-import org.apache.jackrabbit.spi.commons.query.qom.JoinImpl;
import org.apache.jackrabbit.spi.commons.query.qom.LengthImpl;
import org.apache.jackrabbit.spi.commons.query.qom.LiteralImpl;
import org.apache.jackrabbit.spi.commons.query.qom.LowerCaseImpl;
@@ -50,16 +45,13 @@
import org.apache.jackrabbit.spi.commons.query.qom.NotImpl;
import org.apache.jackrabbit.spi.commons.query.qom.Operator;
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.StaticOperandImpl;
import org.apache.jackrabbit.spi.commons.query.qom.UpperCaseImpl;
+import org.apache.jackrabbit.spi.commons.query.qom.DefaultQOMTreeVisitor;
/**
* <code>ConstraintBuilder</code> builds a {@link Constraint} from a tree of
@@ -99,7 +91,7 @@
/**
* A QOM tree visitor that translates the contraints.
*/
- private static final class Visitor implements QOMTreeVisitor {
+ private static final class Visitor extends DefaultQOMTreeVisitor {
/**
* The bind variables and their values.
@@ -156,17 +148,6 @@
getSelector(node.getSelectorQName()));
}
- public Object visit(ChildNodeJoinConditionImpl node, Object data)
- throws Exception {
- // not used
- return null;
- }
-
- public Object visit(ColumnImpl node, Object data) throws Exception {
- // not used
- return null;
- }
-
public Object visit(ComparisonImpl node, Object data) throws Exception {
DynamicOperandImpl op1 = (DynamicOperandImpl) node.getOperand1();
Operator operator = node.getOperatorInstance();
@@ -189,18 +170,6 @@
getSelector(node.getSelectorQName()));
}
- public Object visit(DescendantNodeJoinConditionImpl node, Object data)
- throws Exception {
- // not used
- return null;
- }
-
- public Object visit(EquiJoinConditionImpl node, Object data)
- throws Exception {
- // not used
- return null;
- }
-
public Object visit(FullTextSearchImpl node, Object data)
throws Exception {
return new FullTextConstraint(node,
@@ -209,13 +178,7 @@
public Object visit(FullTextSearchScoreImpl node, Object data)
throws Exception {
- // TODO
- return null;
- }
-
- public Object visit(JoinImpl node, Object data) throws Exception {
- // not used
- return null;
+ return new FullTextSearchScoreOperand();
}
public Object visit(LengthImpl node, Object data) throws Exception {
@@ -288,11 +251,6 @@
return new NotConstraint((Constraint) c.accept(this, null));
}
- public Object visit(OrderingImpl node, Object data) throws Exception {
- // not used
- return null;
- }
-
public Object visit(OrImpl node, Object data) throws Exception {
ConstraintImpl left = (ConstraintImpl) node.getConstraint1();
ConstraintImpl right = (ConstraintImpl) node.getConstraint2();
@@ -310,38 +268,17 @@
return new PropertyValueOperand(node);
}
- public Object visit(QueryObjectModelTree node, Object data)
- throws Exception {
- // not used
- return null;
- }
-
public Object visit(SameNodeImpl node, Object data) throws Exception {
return new SameNodeConstraint(node,
getSelector(node.getSelectorQName()));
}
- public Object visit(SameNodeJoinConditionImpl node, Object data)
- throws Exception {
- // not used
- return null;
- }
-
- public Object visit(SelectorImpl node, Object data) throws Exception {
- // not used
- return null;
- }
-
public Object visit(UpperCaseImpl node, Object data) throws Exception {
DynamicOperandImpl operand = (DynamicOperandImpl) node.getOperand();
return new UpperCaseOperand((DynamicOperand) operand.accept(this, data));
}
private SelectorImpl getSelector(Name name) {
- if (name == null) {
- // assume default selector
- return selectors[0];
- }
for (SelectorImpl selector : selectors) {
if (selector.getSelectorQName().equals(name)) {
return selector;
@@ -349,6 +286,5 @@
}
return null;
}
-
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/DynamicOperand.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/DynamicOperand.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/DynamicOperand.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/DynamicOperand.java Mon Jun 15 12:51:41 2009
@@ -16,9 +16,8 @@
*/
package org.apache.jackrabbit.core.query.lucene.constraint;
-import java.io.IOException;
-
import javax.jcr.Value;
+import javax.jcr.RepositoryException;
import org.apache.jackrabbit.core.query.lucene.ScoreNode;
@@ -40,8 +39,8 @@
* @param sn the current score node.
* @param context the evaluation context.
* @return the values for the given score node.
- * @throws IOException if an error occurs while retrieving the value.
+ * @throws RepositoryException if an error occurs while retrieving the value.
*/
public abstract Value[] getValues(ScoreNode sn, EvaluationContext context)
- throws IOException;
+ throws RepositoryException;
}
Added: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/FullTextSearchScoreOperand.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/FullTextSearchScoreOperand.java?rev=784760&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/FullTextSearchScoreOperand.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/FullTextSearchScoreOperand.java Mon Jun 15 12:51:41 2009
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.core.query.lucene.constraint;
+
+import javax.jcr.Value;
+import javax.jcr.RepositoryException;
+
+import org.apache.jackrabbit.core.query.lucene.ScoreNode;
+
+/**
+ * <code>FullTextSearchScoreOperand</code> implements a full text search score
+ * operand.
+ */
+public class FullTextSearchScoreOperand extends DynamicOperand {
+
+ /**
+ * {@inheritDoc}
+ */
+ public Value[] getValues(ScoreNode sn, EvaluationContext context)
+ throws RepositoryException {
+ return new Value[]{context.getSession().getValueFactory().createValue(sn.getScore())};
+ }
+}
Propchange: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/FullTextSearchScoreOperand.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/LengthOperand.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/LengthOperand.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/LengthOperand.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/LengthOperand.java Mon Jun 15 12:51:41 2009
@@ -16,8 +16,6 @@
*/
package org.apache.jackrabbit.core.query.lucene.constraint;
-import java.io.IOException;
-
import javax.jcr.Value;
import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
@@ -53,7 +51,7 @@
* {@inheritDoc}
*/
public Value[] getValues(ScoreNode sn, EvaluationContext context)
- throws IOException {
+ throws RepositoryException {
PropertyState ps = property.getPropertyState(sn, context);
if (ps == null) {
return EMPTY;
@@ -65,16 +63,12 @@
for (int i = 0; i < lengths.length; i++) {
long len;
int type = values[i].getType();
- try {
- if (type == PropertyType.NAME) {
- len = vf.createValue(qvf.create(values[i].getName())).getString().length();
- } else if (type == PropertyType.PATH) {
- len = vf.createValue(qvf.create(values[i].getPath())).getString().length();
- } else {
- len = Util.getLength(values[i]);
- }
- } catch (RepositoryException e) {
- throw Util.createIOException(e);
+ if (type == PropertyType.NAME) {
+ len = vf.createValue(qvf.create(values[i].getName())).getString().length();
+ } else if (type == PropertyType.PATH) {
+ len = vf.createValue(qvf.create(values[i].getPath())).getString().length();
+ } else {
+ len = Util.getLength(values[i]);
}
lengths[i] = vf.createValue(len);
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/LowerCaseOperand.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/LowerCaseOperand.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/LowerCaseOperand.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/LowerCaseOperand.java Mon Jun 15 12:51:41 2009
@@ -16,14 +16,11 @@
*/
package org.apache.jackrabbit.core.query.lucene.constraint;
-import java.io.IOException;
-
import javax.jcr.Value;
import javax.jcr.ValueFactory;
import javax.jcr.RepositoryException;
import org.apache.jackrabbit.core.query.lucene.ScoreNode;
-import org.apache.jackrabbit.core.query.lucene.Util;
/**
* <code>LowerCaseOperand</code> implements a lower case operand.
@@ -49,16 +46,12 @@
* {@inheritDoc}
*/
public Value[] getValues(ScoreNode sn, EvaluationContext context)
- throws IOException {
- try {
- ValueFactory vf = context.getSession().getValueFactory();
- Value[] values = operand.getValues(sn, context);
- for (int i = 0; i < values.length; i++) {
- values[i] = vf.createValue(values[i].getString().toLowerCase());
- }
- return values;
- } catch (RepositoryException e) {
- throw Util.createIOException(e);
+ throws RepositoryException {
+ ValueFactory vf = context.getSession().getValueFactory();
+ Value[] values = operand.getValues(sn, context);
+ for (int i = 0; i < values.length; i++) {
+ values[i] = vf.createValue(values[i].getString().toLowerCase());
}
+ return values;
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/NodeLocalNameOperand.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/NodeLocalNameOperand.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/NodeLocalNameOperand.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/NodeLocalNameOperand.java Mon Jun 15 12:51:41 2009
@@ -16,13 +16,10 @@
*/
package org.apache.jackrabbit.core.query.lucene.constraint;
-import java.io.IOException;
-
import javax.jcr.RepositoryException;
import javax.jcr.Value;
import org.apache.jackrabbit.core.query.lucene.ScoreNode;
-import org.apache.jackrabbit.core.query.lucene.Util;
import org.apache.jackrabbit.core.SessionImpl;
import org.apache.jackrabbit.util.Text;
@@ -38,17 +35,14 @@
* @param sn the score node.
* @param context the evaluation context.
* @return the local node name.
- * @throws IOException if an error occurs while reading the local name.
+ * @throws RepositoryException if an error occurs while reading the local
+ * name.
*/
public Value[] getValues(ScoreNode sn, EvaluationContext context)
- throws IOException {
- try {
- SessionImpl session = context.getSession();
- String name = session.getNodeById(sn.getNodeId()).getName();
- return new Value[]{session.getValueFactory().createValue(
- Text.getLocalName(name))};
- } catch (RepositoryException e) {
- throw Util.createIOException(e);
- }
+ throws RepositoryException {
+ SessionImpl session = context.getSession();
+ String name = session.getNodeById(sn.getNodeId()).getName();
+ return new Value[]{session.getValueFactory().createValue(
+ Text.getLocalName(name))};
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/NodeNameOperand.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/NodeNameOperand.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/NodeNameOperand.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/NodeNameOperand.java Mon Jun 15 12:51:41 2009
@@ -16,14 +16,11 @@
*/
package org.apache.jackrabbit.core.query.lucene.constraint;
-import java.io.IOException;
-
import javax.jcr.RepositoryException;
import javax.jcr.Value;
import javax.jcr.PropertyType;
import org.apache.jackrabbit.core.query.lucene.ScoreNode;
-import org.apache.jackrabbit.core.query.lucene.Util;
import org.apache.jackrabbit.core.SessionImpl;
/**
@@ -38,16 +35,12 @@
* @param sn the score node.
* @param context the evaluation context.
* @return the node name.
- * @throws IOException if an error occurs while reading the name.
+ * @throws RepositoryException if an error occurs while reading the name.
*/
public Value[] getValues(ScoreNode sn, EvaluationContext context)
- throws IOException {
- try {
- SessionImpl session = context.getSession();
- String name = session.getNodeById(sn.getNodeId()).getName();
- return new Value[]{session.getValueFactory().createValue(name, PropertyType.NAME)};
- } catch (RepositoryException e) {
- throw Util.createIOException(e);
- }
+ throws RepositoryException {
+ SessionImpl session = context.getSession();
+ String name = session.getNodeById(sn.getNodeId()).getName();
+ return new Value[]{session.getValueFactory().createValue(name, PropertyType.NAME)};
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/PropertyValueOperand.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/PropertyValueOperand.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/PropertyValueOperand.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/PropertyValueOperand.java Mon Jun 15 12:51:41 2009
@@ -16,8 +16,6 @@
*/
package org.apache.jackrabbit.core.query.lucene.constraint;
-import java.io.IOException;
-
import javax.jcr.Value;
import javax.jcr.Property;
import javax.jcr.Node;
@@ -26,7 +24,6 @@
import org.apache.jackrabbit.spi.commons.query.qom.PropertyValueImpl;
import org.apache.jackrabbit.core.query.lucene.ScoreNode;
-import org.apache.jackrabbit.core.query.lucene.Util;
import org.apache.jackrabbit.core.state.ItemStateManager;
import org.apache.jackrabbit.core.state.PropertyState;
import org.apache.jackrabbit.core.state.ItemStateException;
@@ -61,11 +58,11 @@
* @param sn the current score node.
* @param context the evaluation context.
* @return the property state or <code>null</code>.
- * @throws IOException if an error occurs while reading.
+ * @throws RepositoryException if an error occurs while reading.
*/
public final PropertyState getPropertyState(ScoreNode sn,
- EvaluationContext context)
- throws IOException {
+ EvaluationContext context)
+ throws RepositoryException {
ItemStateManager ism = context.getItemStateManager();
PropertyId propId = new PropertyId(sn.getNodeId(), operand.getPropertyQName());
try {
@@ -73,7 +70,7 @@
} catch (NoSuchItemStateException e) {
return null;
} catch (ItemStateException e) {
- throw Util.createIOException(e);
+ throw new RepositoryException(e);
}
}
@@ -84,19 +81,17 @@
* @param sn the current score node.
* @param context the evaluation context.
* @return the property or <code>null</code>.
- * @throws IOException if an error occurs while reading.
+ * @throws RepositoryException if an error occurs while reading.
*/
public final Property getProperty(ScoreNode sn,
EvaluationContext context)
- throws IOException {
+ throws RepositoryException {
SessionImpl session = context.getSession();
try {
Node n = session.getNodeById(sn.getNodeId());
return n.getProperty(operand.getPropertyName());
} catch (PathNotFoundException e) {
return null;
- } catch (RepositoryException e) {
- throw Util.createIOException(e);
}
}
@@ -104,19 +99,15 @@
* {@inheritDoc}
*/
public Value[] getValues(ScoreNode sn, EvaluationContext context)
- throws IOException {
+ throws RepositoryException {
Property prop = getProperty(sn, context);
if (prop == null) {
return EMPTY;
} else {
- try {
- if (prop.getDefinition().isMultiple()) {
- return prop.getValues();
- } else {
- return new Value[]{prop.getValue()};
- }
- } catch (RepositoryException e) {
- throw Util.createIOException(e);
+ if (prop.getDefinition().isMultiple()) {
+ return prop.getValues();
+ } else {
+ return new Value[]{prop.getValue()};
}
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/QueryConstraint.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/QueryConstraint.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/QueryConstraint.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/QueryConstraint.java Mon Jun 15 12:51:41 2009
@@ -17,7 +17,8 @@
package org.apache.jackrabbit.core.query.lucene.constraint;
import java.io.IOException;
-import java.util.BitSet;
+import java.util.Map;
+import java.util.HashMap;
import javax.jcr.RepositoryException;
@@ -49,9 +50,10 @@
private final LuceneQueryFactory factory;
/**
- * The bitset with the matching document numbers.
+ * Map of document numbers with their respective score value that match the
+ * query constraint.
*/
- private BitSet matches;
+ private Map<Integer, Float> matches;
/**
* Creates a new query constraint using the given lucene query.
@@ -95,7 +97,11 @@
private boolean evaluate(ScoreNode sn, EvaluationContext context)
throws IOException {
initMatches(context);
- return matches.get(sn.getDoc(context.getIndexReader()));
+ Float score = matches.get(sn.getDoc(context.getIndexReader()));
+ if (score != null) {
+ sn.setScore(score);
+ }
+ return score != null;
}
/**
@@ -120,10 +126,10 @@
IndexReader reader = context.getIndexReader();
QueryHits hits = context.evaluate(and);
try {
- matches = new BitSet();
+ matches = new HashMap<Integer, Float>();
ScoreNode sn;
while ((sn = hits.nextScoreNode()) != null) {
- matches.set(sn.getDoc(reader));
+ matches.put(sn.getDoc(reader), sn.getScore());
}
} finally {
hits.close();
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/UpperCaseOperand.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/UpperCaseOperand.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/UpperCaseOperand.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/UpperCaseOperand.java Mon Jun 15 12:51:41 2009
@@ -16,14 +16,11 @@
*/
package org.apache.jackrabbit.core.query.lucene.constraint;
-import java.io.IOException;
-
import javax.jcr.Value;
import javax.jcr.ValueFactory;
import javax.jcr.RepositoryException;
import org.apache.jackrabbit.core.query.lucene.ScoreNode;
-import org.apache.jackrabbit.core.query.lucene.Util;
/**
* <code>UpperCaseOperand</code> implements an upper case operand.
@@ -49,16 +46,12 @@
* {@inheritDoc}
*/
public Value[] getValues(ScoreNode sn, EvaluationContext context)
- throws IOException {
- try {
- ValueFactory vf = context.getSession().getValueFactory();
- Value[] values = operand.getValues(sn, context);
- for (int i = 0; i < values.length; i++) {
- values[i] = vf.createValue(values[i].getString().toUpperCase());
- }
- return values;
- } catch (RepositoryException e) {
- throw Util.createIOException(e);
+ throws RepositoryException {
+ ValueFactory vf = context.getSession().getValueFactory();
+ Value[] values = operand.getValues(sn, context);
+ for (int i = 0; i < values.length; i++) {
+ values[i] = vf.createValue(values[i].getString().toUpperCase());
}
+ return values;
}
}
Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/AbstractJCRTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/AbstractJCRTest.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/AbstractJCRTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/AbstractJCRTest.java Mon Jun 15 12:51:41 2009
@@ -284,6 +284,11 @@
*/
protected Node testRootNode;
+ /**
+ * The value factory for {@link #superuser}.
+ */
+ protected ValueFactory vf;
+
protected void setUp() throws Exception {
super.setUp();
testRoot = getProperty(RepositoryStub.PROP_TESTROOT);
@@ -375,6 +380,7 @@
}
}
}
+ vf = superuser.getValueFactory();
}
if (isReadOnly) {
@@ -413,6 +419,7 @@
} finally {
superuser.logout();
superuser = null;
+ vf = null;
}
}
testRootNode = null;
Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetPropertyCalendarTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetPropertyCalendarTest.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetPropertyCalendarTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetPropertyCalendarTest.java Mon Jun 15 12:51:41 2009
@@ -19,7 +19,6 @@
import org.apache.jackrabbit.test.AbstractJCRTest;
import javax.jcr.Node;
-import javax.jcr.ValueFactory;
import java.util.Calendar;
import java.util.GregorianCalendar;
@@ -37,20 +36,16 @@
private Node testNode;
- private ValueFactory vFactory;
-
private Calendar c1 = new GregorianCalendar(2005, 1, 10, 14, 8, 56);
private Calendar c2 = new GregorianCalendar(1945, 1, 6, 16, 20, 0);
protected void setUp() throws Exception {
super.setUp();
testNode = testRootNode.addNode(nodeName1, testNodeType);
- vFactory = superuser.getValueFactory();
}
protected void tearDown() throws Exception {
testNode = null;
- vFactory = null;
super.tearDown();
}
@@ -62,7 +57,7 @@
testNode.setProperty(propertyName1, c1);
superuser.save();
assertEquals("Setting property with Node.setProperty(String, Calendar) and Session.save() not working",
- vFactory.createValue(c1),
+ vf.createValue(c1),
testNode.getProperty(propertyName1).getValue());
}
@@ -76,7 +71,7 @@
testNode.setProperty(propertyName1, c2);
superuser.save();
assertEquals("Modifying property with Node.setProperty(String, Calendar) and Session.save() not working",
- vFactory.createValue(c2),
+ vf.createValue(c2),
testNode.getProperty(propertyName1).getValue());
}
@@ -88,7 +83,7 @@
testNode.setProperty(propertyName1, c1);
testRootNode.save();
assertEquals("Setting property with Node.setProperty(String, Calendar) and parentNode.save() not working",
- vFactory.createValue(c1),
+ vf.createValue(c1),
testNode.getProperty(propertyName1).getValue());
}
@@ -102,7 +97,7 @@
testNode.setProperty(propertyName1, c2);
testRootNode.save();
assertEquals("Modifying property with Node.setProperty(String, Calendar) and parentNode.save() not working",
- vFactory.createValue(c2),
+ vf.createValue(c2),
testNode.getProperty(propertyName1).getValue());
}
Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractOrderByTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractOrderByTest.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractOrderByTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractOrderByTest.java Mon Jun 15 12:51:41 2009
@@ -20,7 +20,6 @@
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.Repository;
-import javax.jcr.ValueFactory;
import javax.jcr.query.Query;
import javax.jcr.query.QueryResult;
import javax.jcr.query.qom.QueryObjectModel;
@@ -42,15 +41,12 @@
/** If <code>true</code> this repository supports sql queries */
protected boolean checkSQL;
- protected ValueFactory vf;
-
private String[] nodeNames;
protected void setUp() throws Exception {
super.setUp();
checkSQL = isSupported(Repository.OPTION_QUERY_SQL_SUPPORTED);
nodeNames = new String[]{nodeName1, nodeName2, nodeName3, nodeName4};
- vf = superuser.getValueFactory();
}
/**
Added: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/AndConstraintTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/AndConstraintTest.java?rev=784760&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/AndConstraintTest.java (added)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/AndConstraintTest.java Mon Jun 15 12:51:41 2009
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.test.api.query.qom;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.Node;
+import javax.jcr.query.QueryResult;
+
+/**
+ * <code>AndConstraintTest</code> contains tests that check AND constraints.
+ */
+public class AndConstraintTest extends AbstractQOMTest {
+
+ public void testAnd() throws RepositoryException {
+ Node n1 = testRootNode.addNode(nodeName1, testNodeType);
+ n1.setProperty(propertyName1, "foo");
+ n1.setProperty(propertyName2, "bar");
+ Node n2 = testRootNode.addNode(nodeName2, testNodeType);
+ n2.setProperty(propertyName2, "bar");
+ superuser.save();
+
+ QueryResult result = qf.createQuery(
+ qf.selector(testNodeType, "s"),
+ qf.and(
+ qf.descendantNode("s", testRootNode.getPath()),
+ qf.and(
+ qf.propertyExistence("s", propertyName1),
+ qf.propertyExistence("s", propertyName2)
+ )
+ ),
+ null,
+ null
+ ).execute();
+ checkResult(result, new Node[]{n1});
+ }
+}
Propchange: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/AndConstraintTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/BindVariableValueTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/BindVariableValueTest.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/BindVariableValueTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/BindVariableValueTest.java Mon Jun 15 12:51:41 2009
@@ -22,7 +22,6 @@
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
-import javax.jcr.ValueFactory;
import javax.jcr.PropertyType;
import javax.jcr.query.Query;
import javax.jcr.query.qom.QueryObjectModelConstants;
@@ -48,11 +47,8 @@
private Query query;
- private ValueFactory vf;
-
protected void setUp() throws Exception {
super.setUp();
- vf = superuser.getValueFactory();
query = qf.createQuery(
qf.selector(testNodeType, "s"),
qf.and(
@@ -66,7 +62,6 @@
}
protected void tearDown() throws Exception {
- vf = null;
query = null;
super.tearDown();
}
Added: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/FullTextSearchScoreTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/FullTextSearchScoreTest.java?rev=784760&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/FullTextSearchScoreTest.java (added)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/FullTextSearchScoreTest.java Mon Jun 15 12:51:41 2009
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.test.api.query.qom;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.Node;
+import javax.jcr.query.qom.Ordering;
+import javax.jcr.query.qom.QueryObjectModelFactory;
+import javax.jcr.query.QueryResult;
+import javax.jcr.query.RowIterator;
+
+/**
+ * <code>FullTextSearchScoreTest</code> contains fulltext search score tests.
+ */
+public class FullTextSearchScoreTest extends AbstractQOMTest {
+
+ private static final String TEXT = "the quick brown fox jumps over the lazy dog.";
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ Node n1 = testRootNode.addNode(nodeName1, testNodeType);
+ n1.setProperty(propertyName1, TEXT);
+ Node n2 = testRootNode.addNode(nodeName2, testNodeType);
+ n2.setProperty(propertyName1, TEXT);
+ n2.setProperty(propertyName2, TEXT);
+ superuser.save();
+ }
+
+ public void testOrdering() throws RepositoryException {
+ QueryResult result = qf.createQuery(
+ qf.selector(testNodeType, "s"),
+ qf.and(
+ qf.fullTextSearch("s", null, "fox"),
+ qf.descendantNode("s", testRootNode.getPath())
+ ),
+ new Ordering[]{qf.ascending(qf.fullTextSearchScore("s"))},
+ null
+ ).execute();
+
+ RowIterator rows = result.getRows();
+ double previousScore = Double.NaN;
+ while (rows.hasNext()) {
+ double score = rows.nextRow().getScore("s");
+ if (!Double.isNaN(previousScore)) {
+ assertTrue("wrong order", previousScore <= score);
+ }
+ previousScore = score;
+ }
+ }
+
+ public void testConstraint() throws RepositoryException {
+ QueryResult result = qf.createQuery(
+ qf.selector(testNodeType, "s"),
+ qf.and(
+ qf.and(
+ qf.fullTextSearch("s", null, "fox"),
+ qf.comparison(
+ qf.fullTextSearchScore("s"),
+ QueryObjectModelFactory.JCR_OPERATOR_GREATER_THAN,
+ qf.literal(vf.createValue(Double.MIN_VALUE))
+ )
+ ),
+ qf.descendantNode("s", testRootNode.getPath())
+ ),
+ new Ordering[]{qf.descending(qf.fullTextSearchScore("s"))},
+ null
+ ).execute();
+
+ RowIterator rows = result.getRows();
+ while (rows.hasNext()) {
+ double score = rows.nextRow().getScore("s");
+ if (!Double.isNaN(score)) {
+ assertTrue("wrong full text search score", Double.MIN_VALUE < score);
+ }
+ }
+ }
+}
Propchange: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/FullTextSearchScoreTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/LengthTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/LengthTest.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/LengthTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/LengthTest.java Mon Jun 15 12:51:41 2009
@@ -21,7 +21,6 @@
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
-import javax.jcr.ValueFactory;
import javax.jcr.PropertyType;
import javax.jcr.Binary;
import javax.jcr.query.QueryResult;
@@ -40,18 +39,15 @@
private Node node;
- private ValueFactory vf;
protected void setUp() throws Exception {
super.setUp();
node = testRootNode.addNode(nodeName1, testNodeType);
superuser.save();
- vf = superuser.getValueFactory();
}
protected void tearDown() throws Exception {
node = null;
- vf = null;
super.tearDown();
}
Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/NodeNameTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/NodeNameTest.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/NodeNameTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/NodeNameTest.java Mon Jun 15 12:51:41 2009
@@ -20,7 +20,6 @@
import javax.jcr.Value;
import javax.jcr.Node;
import javax.jcr.PropertyType;
-import javax.jcr.ValueFactory;
import javax.jcr.query.Query;
import javax.jcr.query.InvalidQueryException;
import javax.jcr.query.qom.QueryObjectModelConstants;
@@ -36,13 +35,10 @@
private Node node1;
- private ValueFactory vf;
-
protected void setUp() throws Exception {
super.setUp();
node1 = testRootNode.addNode(nodeName1, testNodeType);
superuser.save();
- vf = superuser.getValueFactory();
}
protected void tearDown() throws Exception {
Added: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/NotConstraintTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/NotConstraintTest.java?rev=784760&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/NotConstraintTest.java (added)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/NotConstraintTest.java Mon Jun 15 12:51:41 2009
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.test.api.query.qom;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.Node;
+import javax.jcr.query.QueryResult;
+
+/**
+ * <code>NotConstraintTest</code> contains tests that check NOT constraints.
+ */
+public class NotConstraintTest extends AbstractQOMTest {
+
+ public void testNot() throws RepositoryException {
+ Node n1 = testRootNode.addNode(nodeName1, testNodeType);
+ n1.setProperty(propertyName1, "foo");
+ Node n2 = testRootNode.addNode(nodeName2, testNodeType);
+ n2.setProperty(propertyName2, "bar");
+ superuser.save();
+
+ QueryResult result = qf.createQuery(
+ qf.selector(testNodeType, "s"),
+ qf.and(
+ qf.descendantNode("s", testRootNode.getPath()),
+ qf.not(
+ qf.propertyExistence("s", propertyName1)
+ )
+ ),
+ null,
+ null
+ ).execute();
+ checkResult(result, new Node[]{n2});
+ }
+}
Propchange: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/NotConstraintTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/OrConstraintTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/OrConstraintTest.java?rev=784760&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/OrConstraintTest.java (added)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/OrConstraintTest.java Mon Jun 15 12:51:41 2009
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.test.api.query.qom;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.Node;
+import javax.jcr.query.QueryResult;
+
+/**
+ * <code>OrConstraintTest</code> contains tests that check OR constraints.
+ */
+public class OrConstraintTest extends AbstractQOMTest {
+
+ public void testOr() throws RepositoryException {
+ Node n1 = testRootNode.addNode(nodeName1, testNodeType);
+ n1.setProperty(propertyName1, "foo");
+ Node n2 = testRootNode.addNode(nodeName2, testNodeType);
+ n2.setProperty(propertyName2, "bar");
+ superuser.save();
+
+ QueryResult result = qf.createQuery(
+ qf.selector(testNodeType, "s"),
+ qf.and(
+ qf.descendantNode("s", testRootNode.getPath()),
+ qf.or(
+ qf.propertyExistence("s", propertyName1),
+ qf.propertyExistence("s", propertyName2)
+ )
+ ),
+ null,
+ null
+ ).execute();
+ checkResult(result, new Node[]{n1, n2});
+ }
+}
Propchange: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/OrConstraintTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/PropertyExistenceTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/PropertyExistenceTest.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/PropertyExistenceTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/PropertyExistenceTest.java Mon Jun 15 12:51:41 2009
@@ -31,7 +31,7 @@
n1.setProperty(propertyName1, "abc");
Node n2 = testRootNode.addNode(nodeName2, testNodeType);
n2.setProperty(propertyName2, "abc");
- testRootNode.save();
+ superuser.save();
QueryResult result = qf.createQuery(
qf.selector(testNodeType, "s"),
Added: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/PropertyValueTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/PropertyValueTest.java?rev=784760&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/PropertyValueTest.java (added)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/PropertyValueTest.java Mon Jun 15 12:51:41 2009
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.test.api.query.qom;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.Node;
+import javax.jcr.query.QueryResult;
+import javax.jcr.query.qom.QueryObjectModelFactory;
+
+/**
+ * <code>PropertyValueTest</code> performs a test with property value
+ * comparision.
+ */
+public class PropertyValueTest extends AbstractQOMTest {
+
+ private static final String TEXT = "abc";
+
+ public void testPropertyExistence() throws RepositoryException {
+ Node n1 = testRootNode.addNode(nodeName1, testNodeType);
+ n1.setProperty(propertyName1, TEXT);
+ Node n2 = testRootNode.addNode(nodeName2, testNodeType);
+ n2.setProperty(propertyName2, TEXT);
+ superuser.save();
+
+ QueryResult result = qf.createQuery(
+ qf.selector(testNodeType, "s"),
+ qf.and(
+ qf.childNode("s", testRoot),
+ qf.comparison(
+ qf.propertyValue("s", propertyName1),
+ QueryObjectModelFactory.JCR_OPERATOR_EQUAL_TO,
+ qf.literal(vf.createValue(TEXT))
+ )
+ ), null, null).execute();
+ checkResult(result, new Node[]{n1});
+
+ result = qf.createQuery(
+ qf.selector(testNodeType, "s"),
+ qf.and(
+ qf.childNode("s", testRoot),
+ qf.comparison(
+ qf.propertyValue("s", propertyName2),
+ QueryObjectModelFactory.JCR_OPERATOR_EQUAL_TO,
+ qf.literal(vf.createValue(TEXT))
+ )
+ ), null, null).execute();
+ checkResult(result, new Node[]{n2});
+ }
+}
Propchange: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/PropertyValueTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/TestAll.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/TestAll.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/TestAll.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/TestAll.java Mon Jun 15 12:51:41 2009
@@ -29,6 +29,7 @@
public static Test suite() {
TestSuite suite = new TestSuite("QOM tests");
+ suite.addTestSuite(AndConstraintTest.class);
suite.addTestSuite(BindVariableValueTest.class);
suite.addTestSuite(ChildNodeJoinConditionTest.class);
suite.addTestSuite(ChildNodeTest.class);
@@ -36,11 +37,15 @@
suite.addTestSuite(DescendantNodeJoinConditionTest.class);
suite.addTestSuite(DescendantNodeTest.class);
suite.addTestSuite(EquiJoinConditionTest.class);
+ suite.addTestSuite(FullTextSearchScoreTest.class);
suite.addTestSuite(LengthTest.class);
suite.addTestSuite(NodeLocalNameTest.class);
suite.addTestSuite(NodeNameTest.class);
+ suite.addTestSuite(NotConstraintTest.class);
+ suite.addTestSuite(OrConstraintTest.class);
suite.addTestSuite(OrderingTest.class);
suite.addTestSuite(PropertyExistenceTest.class);
+ suite.addTestSuite(PropertyValueTest.class);
suite.addTestSuite(QueryObjectModelFactoryTest.class);
suite.addTestSuite(RowTest.class);
suite.addTestSuite(SameNodeJoinConditionTest.class);
Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/UpperLowerCaseTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/UpperLowerCaseTest.java?rev=784760&r1=784759&r2=784760&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/UpperLowerCaseTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/qom/UpperLowerCaseTest.java Mon Jun 15 12:51:41 2009
@@ -20,7 +20,6 @@
import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
-import javax.jcr.ValueFactory;
import javax.jcr.query.Query;
import javax.jcr.query.qom.DynamicOperand;
import javax.jcr.query.qom.QueryObjectModelConstants;
@@ -31,13 +30,10 @@
*/
public class UpperLowerCaseTest extends AbstractQOMTest {
- private ValueFactory vf;
-
private Node node;
protected void setUp() throws Exception {
super.setUp();
- vf = superuser.getValueFactory();
node = testRootNode.addNode(nodeName1, testNodeType);
node.setProperty(propertyName1, "abc");
node.setProperty(propertyName2, "ABC");
@@ -45,7 +41,6 @@
}
protected void tearDown() throws Exception {
- vf = null;
node = null;
super.tearDown();
}