You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by al...@apache.org on 2011/10/19 16:53:07 UTC

svn commit: r1186248 - /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryObjectModelImpl.java

Author: alexparvulescu
Date: Wed Oct 19 14:53:07 2011
New Revision: 1186248

URL: http://svn.apache.org/viewvc?rev=1186248&view=rev
Log:
JCR-3122 QueryObjectModelImpl should execute queries as SessionOperation(s)

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryObjectModelImpl.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryObjectModelImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryObjectModelImpl.java?rev=1186248&r1=1186247&r2=1186248&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryObjectModelImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryObjectModelImpl.java Wed Oct 19 14:53:07 2011
@@ -35,6 +35,7 @@ import org.apache.jackrabbit.core.query.
 import org.apache.jackrabbit.core.query.lucene.SearchIndex;
 import org.apache.jackrabbit.core.query.lucene.join.QueryEngine;
 import org.apache.jackrabbit.core.session.SessionContext;
+import org.apache.jackrabbit.core.session.SessionOperation;
 import org.apache.jackrabbit.spi.commons.query.qom.BindVariableValueImpl;
 import org.apache.jackrabbit.spi.commons.query.qom.DefaultTraversingQOMTreeVisitor;
 import org.apache.jackrabbit.spi.commons.query.qom.QueryObjectModelTree;
@@ -116,16 +117,25 @@ public class QueryObjectModelImpl extend
     }
 
     public QueryResult execute() throws RepositoryException {
-        QueryEngine engine = new QueryEngine(sessionContext.getSessionImpl(),
-                lqf, variables);
         long time = System.currentTimeMillis();
-        QueryResult qr = engine.execute(getColumns(), getSource(),
-                getConstraint(), getOrderings(), offset, limit);
+        final QueryResult result = sessionContext.getSessionState().perform(
+                new SessionOperation<QueryResult>() {
+                    public QueryResult perform(SessionContext context)
+                            throws RepositoryException {
+                        final QueryEngine engine = new QueryEngine(
+                                sessionContext.getSessionImpl(), lqf, variables);
+                        return engine.execute(getColumns(), getSource(),
+                                getConstraint(), getOrderings(), offset, limit);
+                    }
+                    public String toString() {
+                        return "query.execute(" + statement + ")";
+                    }
+                });
         if (log.isDebugEnabled()) {
             time = System.currentTimeMillis() - time;
             log.debug("executed in {} ms. ({})", time, statement);
         }
-        return qr;
+        return result;
     }
 
     @Override