Return-Path: Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: (qmail 15912 invoked from network); 10 Jun 2009 17:43:27 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 10 Jun 2009 17:43:27 -0000 Received: (qmail 68725 invoked by uid 500); 10 Jun 2009 17:43:39 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 68679 invoked by uid 500); 10 Jun 2009 17:43:39 -0000 Mailing-List: contact commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list commits@jackrabbit.apache.org Received: (qmail 68670 invoked by uid 99); 10 Jun 2009 17:43:39 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 10 Jun 2009 17:43:39 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 10 Jun 2009 17:43:35 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 7AB20238887A; Wed, 10 Jun 2009 17:43:14 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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... Date: Wed, 10 Jun 2009 17:43:14 -0000 To: commits@jackrabbit.apache.org From: angela@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090610174314.7AB20238887A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 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 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 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 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 statement. * @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 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 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 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 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()); }