You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2009/06/10 19:43:14 UTC
svn commit: r783435 - in /jackrabbit/trunk:
jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/
jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/
jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/ ja...
Author: angela
Date: Wed Jun 10 17:43:13 2009
New Revision: 783435
URL: http://svn.apache.org/viewvc?rev=783435&view=rev
Log:
JCR-2107: JSR 283 Query (work in progress)
Modified:
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryImpl.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/RepositoryServiceLogger.java
jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryService.java
jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java
jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java
Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java?rev=783435&r1=783434&r2=783435&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java Wed Jun 10 17:43:13 2009
@@ -312,12 +312,13 @@
* the query statement.
* @param limit
* @param offset
+ * @param boundValues
* @return
* @throws RepositoryException
*/
public QueryInfo executeQuery(String statement, String language, Map namespaces,
- long limit, long offset) throws RepositoryException {
- return service.executeQuery(sessionInfo, statement, language, namespaces, limit, offset);
+ long limit, long offset, Map<String, QValue> boundValues) throws RepositoryException {
+ return service.executeQuery(sessionInfo, statement, language, namespaces, limit, offset, boundValues);
}
/**
Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryImpl.java?rev=783435&r1=783434&r2=783435&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryImpl.java Wed Jun 10 17:43:13 2009
@@ -39,9 +39,11 @@
import org.apache.jackrabbit.jcr2spi.WorkspaceManager;
import org.apache.jackrabbit.spi.Path;
import org.apache.jackrabbit.spi.QueryInfo;
+import org.apache.jackrabbit.spi.QValue;
import org.apache.jackrabbit.spi.commons.conversion.NameException;
import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
import org.apache.jackrabbit.spi.commons.name.NameConstants;
+import org.apache.jackrabbit.spi.commons.value.ValueFormat;
/**
* Provides the default implementation for a JCR query.
@@ -97,6 +99,11 @@
private long offset = 0;
/**
+ * The name/value pairs collected upon calls to {@link #bindValue(String, Value)}.
+ */
+ private final Map<String, QValue> boundValues = new HashMap();
+
+ /**
* Creates a new query.
*
* @param session the session that created this query.
@@ -163,7 +170,7 @@
*/
public QueryResult execute() throws RepositoryException {
QueryInfo qI = wspManager.executeQuery(
- statement, language, getNamespaceMappings(), limit, offset);
+ statement, language, getNamespaceMappings(), limit, offset, boundValues);
return new QueryResultImpl(itemManager, mgrProvider, qI);
}
@@ -241,8 +248,11 @@
* @see Query#bindValue(String, Value)
*/
public void bindValue(String varName, Value value) throws RepositoryException {
- //TODO implementation missing
- throw new UnsupportedOperationException("JCR-2107: Implementation missing");
+ if (value == null) {
+ boundValues.remove(varName);
+ } else {
+ boundValues.put(varName, ValueFormat.getQValue(value, mgrProvider.getNamePathResolver(), mgrProvider.getQValueFactory()));
+ }
}
/**
Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java?rev=783435&r1=783434&r2=783435&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java Wed Jun 10 17:43:13 2009
@@ -31,6 +31,7 @@
import org.apache.jackrabbit.spi.PropertyId;
import org.apache.jackrabbit.spi.QueryInfo;
import org.apache.jackrabbit.spi.QNodeTypeDefinition;
+import org.apache.jackrabbit.spi.QValue;
import org.apache.jackrabbit.spi.commons.namespace.NamespaceMapping;
import org.apache.jackrabbit.spi.commons.nodetype.compact.CompactNodeTypeDefReader;
import org.apache.jackrabbit.spi.commons.nodetype.compact.QNodeTypeDefinitionsBuilderImpl;
@@ -786,7 +787,7 @@
public QueryInfo executeQuery(SessionInfo sessionInfo, String statement,
String language, Map namespaces, long limit,
- long offset) throws RepositoryException {
+ long offset, Map<String, QValue> values) throws RepositoryException {
throw new UnsupportedRepositoryOperationException();
}
}
Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/RepositoryServiceLogger.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/RepositoryServiceLogger.java?rev=783435&r1=783434&r2=783435&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/RepositoryServiceLogger.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/RepositoryServiceLogger.java Wed Jun 10 17:43:13 2009
@@ -49,6 +49,7 @@
import org.apache.jackrabbit.spi.SessionInfo;
import org.apache.jackrabbit.spi.Subscription;
import org.apache.jackrabbit.spi.QNodeTypeDefinition;
+import org.apache.jackrabbit.spi.QValue;
/**
* Log wrapper for a {@link RepositoryService}.
@@ -565,14 +566,14 @@
}
public QueryInfo executeQuery(final SessionInfo sessionInfo, final String statement,
- final String language, final Map namespaces, final long limit, final long offset) throws RepositoryException {
+ final String language, final Map namespaces, final long limit, final long offset, final Map<String, QValue> values) throws RepositoryException {
return (QueryInfo) execute(new Callable() {
public Object call() throws RepositoryException {
- return service.executeQuery(unwrap(sessionInfo), statement, language, namespaces, limit, offset);
+ return service.executeQuery(unwrap(sessionInfo), statement, language, namespaces, limit, offset, values);
}
- }, "executeQuery(SessionInfo, String, String, Map, long, long)",
- new Object[]{unwrap(sessionInfo), statement, language, namespaces, limit, offset});
+ }, "executeQuery(SessionInfo, String, String, Map, long, long, Map)",
+ new Object[]{unwrap(sessionInfo), statement, language, namespaces, limit, offset, values});
}
public EventFilter createEventFilter(final SessionInfo sessionInfo, final int eventTypes,
Modified: jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryService.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryService.java?rev=783435&r1=783434&r2=783435&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryService.java (original)
+++ jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryService.java Wed Jun 10 17:43:13 2009
@@ -913,11 +913,13 @@
* the query <code>statement</code>.
* @param limit The maximum result size.
* @param offset The offset in the total result set.
+ * @param values A Map of name/value pairs collected upon calls to
+ * {@link javax.jcr.query.Query#bindValue(String, javax.jcr.Value)}.
* @return The query info.
* @throws javax.jcr.RepositoryException
* @see javax.jcr.query.Query#execute()
*/
- public QueryInfo executeQuery(SessionInfo sessionInfo, String statement, String language, Map namespaces, long limit, long offset) throws RepositoryException;
+ public QueryInfo executeQuery(SessionInfo sessionInfo, String statement, String language, Map namespaces, long limit, long offset, Map<String, QValue> values) throws RepositoryException;
//--------------------------------------------------------< Observation >---
/**
Modified: jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java?rev=783435&r1=783434&r2=783435&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java Wed Jun 10 17:43:13 2009
@@ -1703,9 +1703,9 @@
}
/**
- * @see RepositoryService#executeQuery(SessionInfo, String, String, Map, long, long)
+ * @see RepositoryService#executeQuery(SessionInfo, String, String,java.util.Map,long,long,java.util.Map
*/
- public QueryInfo executeQuery(SessionInfo sessionInfo, String statement, String language, Map namespaces, long limit, long offset) throws RepositoryException {
+ public QueryInfo executeQuery(SessionInfo sessionInfo, String statement, String language, Map namespaces, long limit, long offset, Map<String, QValue> values) throws RepositoryException {
SearchMethod method = null;
try {
String uri = uriResolver.getWorkspaceUri(sessionInfo.getWorkspaceName());
@@ -1715,6 +1715,10 @@
sInfo.setNumberResults(limit);
sInfo.setOffset(offset);
+ if (!(values == null || values.isEmpty())) {
+ throw new UnsupportedOperationException("Implementation missing: JCR-2107");
+ }
+
method = new SearchMethod(uri, sInfo);
getClient(sessionInfo).executeMethod(method);
method.checkSuccess();
Modified: jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java?rev=783435&r1=783434&r2=783435&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java Wed Jun 10 17:43:13 2009
@@ -1040,12 +1040,22 @@
sInfo.getNamePathResolver(), getQValueFactory());
}
- public QueryInfo executeQuery(SessionInfo sessionInfo, String statement, String language, Map namespaces, long limit, long offset) throws RepositoryException {
+ /**
+ * {@inheritDoc}
+ */
+ public QueryInfo executeQuery(SessionInfo sessionInfo, String statement, String language, Map namespaces, long limit, long offset, Map<String, QValue> values) throws RepositoryException {
SessionInfoImpl sInfo = getSessionInfoImpl(sessionInfo);
Query query = createQuery(sInfo.getSession(), statement,
language, namespaces);
query.setLimit(limit);
query.setOffset(offset);
+ if (values != null && !values.isEmpty()) {
+ for (Iterator<String> it = values.keySet().iterator(); it.hasNext();) {
+ String varName = it.next();
+ Value value = ValueFormat.getJCRValue(values.get(varName), sInfo.getNamePathResolver(), sInfo.getSession().getValueFactory());
+ query.bindValue(varName, value);
+ }
+ }
return new QueryInfoImpl(query.execute(), idFactory,
sInfo.getNamePathResolver(), getQValueFactory());
}