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/05/01 18:20:43 UTC
svn commit: r770738 - in /jackrabbit/trunk:
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/
jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/query/qom/...
Author: jukka
Date: Fri May 1 16:20:43 2009
New Revision: 770738
URL: http://svn.apache.org/viewvc?rev=770738&view=rev
Log:
JCR-2093: Implement QueryObjectModelFactory.fullTextSearch() in QueryManagerImpl
Fix broken full text search tests
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryManagerImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryFactoryImpl.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/query/qom/QueryObjectModelFactoryTest.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/qom/QueryObjectModelFactoryImpl.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryManagerImpl.java?rev=770738&r1=770737&r2=770738&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryManagerImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryManagerImpl.java Fri May 1 16:20:43 2009
@@ -22,11 +22,9 @@
import javax.jcr.Node;
import javax.jcr.RepositoryException;
-import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.query.InvalidQueryException;
import javax.jcr.query.Query;
import javax.jcr.query.QueryManager;
-import javax.jcr.query.qom.FullTextSearch;
import javax.jcr.query.qom.QueryObjectModel;
import javax.jcr.query.qom.QueryObjectModelFactory;
@@ -81,25 +79,21 @@
* @param itemMgr
* @param searchMgr
*/
- public QueryManagerImpl(final SessionImpl session,
- final ItemManager itemMgr,
- final SearchManager searchMgr) {
+ public QueryManagerImpl(
+ final SessionImpl session,
+ final ItemManager itemMgr,
+ final SearchManager searchMgr)
+ throws RepositoryException {
this.session = session;
this.itemMgr = itemMgr;
this.searchMgr = searchMgr;
- this.qomFactory = new QueryObjectModelFactoryImpl(session) {
+ this.qomFactory = new QueryObjectModelFactoryImpl(
+ session, session.getValueFactory()) {
protected QueryObjectModel createQuery(QueryObjectModelTree qomTree)
throws InvalidQueryException, RepositoryException {
return searchMgr.createQueryObjectModel(
session, qomTree, QueryImpl.JCR_SQL2);
}
-
- public FullTextSearch fullTextSearch(
- String arg0, String arg1, String arg2)
- throws RepositoryException {
- throw new UnsupportedRepositoryOperationException("JCR-1104");
- }
-
};
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryFactoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryFactoryImpl.java?rev=770738&r1=770737&r2=770738&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryFactoryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryFactoryImpl.java Fri May 1 16:20:43 2009
@@ -24,6 +24,8 @@
import javax.jcr.nodetype.NodeTypeManager;
import javax.jcr.nodetype.NodeType;
import javax.jcr.nodetype.NodeTypeIterator;
+import javax.jcr.query.qom.Literal;
+import javax.jcr.query.qom.StaticOperand;
import javax.jcr.RepositoryException;
import org.apache.lucene.search.Query;
@@ -206,8 +208,14 @@
QueryParser parser = new JackrabbitQueryParser(
fieldname, analyzer, synonymProvider);
try {
- // TODO: JCR-2093 How to handle the StaticOperand below?
- return parser.parse(fts.getFullTextSearchExpression().toString());
+ StaticOperand expr = fts.getFullTextSearchExpression();
+ if (expr instanceof Literal) {
+ return parser.parse(
+ ((Literal) expr).getLiteralValue().getString());
+ } else {
+ throw new RepositoryException(
+ "Unknown static operand type: " + expr);
+ }
} catch (ParseException e) {
throw new RepositoryException(e);
}
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/query/qom/QueryObjectModelFactoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/query/qom/QueryObjectModelFactoryTest.java?rev=770738&r1=770737&r2=770738&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/query/qom/QueryObjectModelFactoryTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/query/qom/QueryObjectModelFactoryTest.java Fri May 1 16:20:43 2009
@@ -346,9 +346,9 @@
*/
public void testFullTextSearch() throws RepositoryException {
FullTextSearch ftSearch = qomFactory.fullTextSearch(SELECTOR_NAME1, propertyName1, FULLTEXT_SEARCH_EXPR);
- assertNull("Selector must be null", ftSearch.getSelectorName());
+ assertEquals("Wrong selector name", SELECTOR_NAME1, ftSearch.getSelectorName());
assertEquals("Wrong propertyName", propertyName1, ftSearch.getPropertyName());
- assertEquals("Wrong fulltext search expression", FULLTEXT_SEARCH_EXPR, ftSearch.getFullTextSearchExpression());
+ // TODO is there some way to check the contents of a StaticOperand?
}
/**
@@ -356,9 +356,9 @@
*/
public void testFullTextSearchAllProperties() throws RepositoryException {
FullTextSearch ftSearch = qomFactory.fullTextSearch(SELECTOR_NAME1, null, FULLTEXT_SEARCH_EXPR);
- assertNull("Selector must be null", ftSearch.getSelectorName());
+ assertEquals("Wrong selector name", SELECTOR_NAME1, ftSearch.getSelectorName());
assertNull("Property name must be null", ftSearch.getPropertyName());
- assertEquals("Wrong fulltext search expression", FULLTEXT_SEARCH_EXPR, ftSearch.getFullTextSearchExpression());
+ // TODO is there some way to check the contents of a StaticOperand?
}
/**
@@ -368,7 +368,7 @@
FullTextSearch ftSearch = qomFactory.fullTextSearch(SELECTOR_NAME1, propertyName1, FULLTEXT_SEARCH_EXPR);
assertEquals("Wrong selector name", SELECTOR_NAME1, ftSearch.getSelectorName());
assertEquals("Wrong propertyName", propertyName1, ftSearch.getPropertyName());
- assertEquals("Wrong fulltext search expression", FULLTEXT_SEARCH_EXPR, ftSearch.getFullTextSearchExpression());
+ // TODO is there some way to check the contents of a StaticOperand?
}
/**
Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/qom/QueryObjectModelFactoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/qom/QueryObjectModelFactoryImpl.java?rev=770738&r1=770737&r2=770738&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/qom/QueryObjectModelFactoryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/qom/QueryObjectModelFactoryImpl.java Fri May 1 16:20:43 2009
@@ -58,6 +58,8 @@
import javax.jcr.query.qom.UpperCase;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
+import javax.jcr.ValueFactory;
+
import java.util.HashSet;
import java.util.Set;
@@ -79,8 +81,15 @@
*/
private final NamePathResolver resolver;
- public QueryObjectModelFactoryImpl(NamePathResolver resolver) {
+ /**
+ * Value factory of the current session.
+ */
+ private final ValueFactory factory;
+
+ public QueryObjectModelFactoryImpl(
+ NamePathResolver resolver, ValueFactory factory) {
this.resolver = resolver;
+ this.factory = factory;
}
/**
@@ -533,15 +542,21 @@
*/
public FullTextSearch fullTextSearch(String selectorName,
String propertyName,
- StaticOperand fullTextSearchExpression)
+ String fullTextSearchExpression)
throws InvalidQueryException, RepositoryException {
+ if (fullTextSearchExpression == null) {
+ throw new IllegalArgumentException(
+ "Full text search expression is null");
+ }
Name propName = null;
if (propertyName != null) {
propName = checkPropertyName(propertyName);
}
+ Literal literal =
+ literal(factory.createValue(fullTextSearchExpression));
return new FullTextSearchImpl(resolver,
checkSelectorName(selectorName), propName,
- checkFullTextSearchExpression(fullTextSearchExpression));
+ checkFullTextSearchExpression(literal));
}
/**