summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/git/WorkQueue.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/git/WorkQueue.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/WorkQueue.java23
1 files changed, 20 insertions, 3 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/WorkQueue.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/WorkQueue.java
index bb11e6252e..66f01f611b 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/WorkQueue.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/WorkQueue.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.git;
+import com.google.common.collect.Lists;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.lifecycle.LifecycleModule;
import com.google.gerrit.reviewdb.client.Project.NameKey;
@@ -26,6 +27,7 @@ import org.slf4j.LoggerFactory;
import java.lang.Thread.UncaughtExceptionHandler;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
@@ -115,6 +117,16 @@ public class WorkQueue {
return r;
}
+ public <T> List<T> getTaskInfos(TaskInfoFactory<T> factory) {
+ List<T> taskInfos = Lists.newArrayList();
+ for (Executor exe : queues) {
+ for (Task<?> task : exe.getTasks()) {
+ taskInfos.add(factory.getTaskInfo(task));
+ }
+ }
+ return taskInfos;
+ }
+
/** Locate a task by its unique id, null if no task matches. */
public Task<?> getTask(final int id) {
Task<?> result = null;
@@ -186,7 +198,7 @@ public class WorkQueue {
Task<V> task;
if (runnable instanceof ProjectRunnable) {
- task = new ProjectTask<V>((ProjectRunnable)runnable, r, this, id);
+ task = new ProjectTask<V>((ProjectRunnable) runnable, r, this, id);
} else {
task = new Task<V>(runnable, r, this, id);
}
@@ -214,6 +226,10 @@ public class WorkQueue {
void addAllTo(final List<Task<?>> list) {
list.addAll(all.values()); // iterator is thread safe
}
+
+ Collection<Task<?>> getTasks() {
+ return all.values();
+ }
}
/** Runnable needing to know it was canceled. */
@@ -351,8 +367,9 @@ public class WorkQueue {
}
}
- /** Same as Task class, but with a reference to ProjectRunnable, used to retrieve
- * the project name from the operation queued
+ /**
+ * Same as Task class, but with a reference to ProjectRunnable, used to
+ * retrieve the project name from the operation queued
**/
public static class ProjectTask<V> extends Task<V> implements ProjectRunnable {