diff --git a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/store/hibernate/query/HqlQueryExecutor.java b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/store/hibernate/query/HqlQueryExecutor.java index 07eaf97275e4cbadc64d10fdb4406e7589a838e8..7aa34ab0aceb5e1a2558137d1233b7fb459be9c9 100644 --- a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/store/hibernate/query/HqlQueryExecutor.java +++ b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/store/hibernate/query/HqlQueryExecutor.java @@ -41,6 +41,7 @@ import org.xwiki.component.phase.Initializable; import org.xwiki.component.phase.InitializationException; import org.xwiki.context.Execution; +import org.xwiki.job.event.status.JobProgressManager; import org.xwiki.query.Query; import org.xwiki.query.QueryException; import org.xwiki.query.QueryExecutor; @@ -88,6 +89,9 @@ public class HqlQueryExecutor implements QueryExecutor, Initializable @Inject private ContextualAuthorizationManager authorization; + @Inject + private JobProgressManager progress; + private volatile Set<String> allowedNamedQueries; @Override @@ -117,7 +121,7 @@ private Set<String> getAllowedNamedQueries() } } } - + return this.allowedNamedQueries; } @@ -153,6 +157,8 @@ public <T> List<T> execute(final Query query) throws QueryException String oldDatabase = getContext().getWikiId(); try { + this.progress.startStep(query, "query.hql.progress.execute", "Execute HQL query [{}]", query); + if (query.getWiki() != null) { getContext().setWikiId(query.getWiki()); } @@ -178,6 +184,8 @@ public List<T> doInHibernate(Session session) throw new QueryException("Exception while executing query", query, e); } finally { getContext().setWikiId(oldDatabase); + + this.progress.endStep(query); } } diff --git a/xwiki-platform-core/xwiki-platform-query/xwiki-platform-query-manager/src/main/java/org/xwiki/query/internal/DefaultQuery.java b/xwiki-platform-core/xwiki-platform-query/xwiki-platform-query-manager/src/main/java/org/xwiki/query/internal/DefaultQuery.java index b55b9e1076c839d1047f3164294e7e8767dcc56b..bd101da64537e006f15071d6d74b0e398a5e0d46 100644 --- a/xwiki-platform-core/xwiki-platform-query/xwiki-platform-query-manager/src/main/java/org/xwiki/query/internal/DefaultQuery.java +++ b/xwiki-platform-core/xwiki-platform-query/xwiki-platform-query-manager/src/main/java/org/xwiki/query/internal/DefaultQuery.java @@ -103,7 +103,7 @@ public class DefaultQuery implements SecureQuery /** * field for {@link #getExecuter()}. */ - private QueryExecutor executer; + private transient QueryExecutor executer; /** * Create a Query. @@ -294,4 +294,10 @@ protected QueryExecutor getExecuter() { return this.executer; } + + @Override + public String toString() + { + return getStatement(); + } } diff --git a/xwiki-platform-core/xwiki-platform-query/xwiki-platform-query-xwql/src/main/java/org/xwiki/query/xwql/internal/XWQLQueryExecutor.java b/xwiki-platform-core/xwiki-platform-query/xwiki-platform-query-xwql/src/main/java/org/xwiki/query/xwql/internal/XWQLQueryExecutor.java index 91e1b70ab1f9eb724d27bb8e41c7f3b06076f619..c6528fb5121f1732453168c33fc5d2a030fdceaa 100644 --- a/xwiki-platform-core/xwiki-platform-query/xwiki-platform-query-xwql/src/main/java/org/xwiki/query/xwql/internal/XWQLQueryExecutor.java +++ b/xwiki-platform-core/xwiki-platform-query/xwiki-platform-query-xwql/src/main/java/org/xwiki/query/xwql/internal/XWQLQueryExecutor.java @@ -30,6 +30,7 @@ import org.xwiki.component.annotation.Component; import org.xwiki.component.manager.ComponentLookupException; import org.xwiki.component.manager.ComponentManager; +import org.xwiki.job.event.status.JobProgressManager; import org.xwiki.model.EntityType; import org.xwiki.model.ModelContext; import org.xwiki.model.reference.EntityReference; @@ -56,6 +57,9 @@ public class XWQLQueryExecutor implements QueryExecutor @Inject private ModelContext context; + @Inject + private JobProgressManager progress; + public QueryManager getQueryManager() throws ComponentLookupException { // We can't inject QueryManager because of cyclic dependency. @@ -78,6 +82,8 @@ public <T> List<T> execute(Query query) throws QueryException Query nativeQuery; try { + this.progress.startStep(query, "query.xwql.progress.execute", "Execute XWQL query [{}]", query); + if (query.getWiki() != null) { if (currentEntityReference.getType() == EntityType.WIKI) { this.context.setCurrentEntityReference(new WikiReference(query.getWiki())); @@ -124,6 +130,8 @@ public <T> List<T> execute(Query query) throws QueryException + this.translator.getOutputLanguage() + "] language", query, e); } finally { this.context.setCurrentEntityReference(currentEntityReference); + + this.progress.endStep(query); } }