Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Fedorenko2013-06-14 10:39:35 +0000
committerIgor Fedorenko2013-06-14 10:39:35 +0000
commit5635b22992332e11e88d95eea267d5bb679506d9 (patch)
treefdb2508133d3126745fd1005f9c101eac4f3fbf2 /org.eclipse.m2e.core
parent073ee9daf7613bd0ec83b00f5f0bfa615f796e0d (diff)
downloadm2e-core-5635b22992332e11e88d95eea267d5bb679506d9.tar.gz
m2e-core-5635b22992332e11e88d95eea267d5bb679506d9.tar.xz
m2e-core-5635b22992332e11e88d95eea267d5bb679506d9.zip
Suspend execution context during JobHelpers#flushProcessingQueues
JobHelpers#flushProcessingQueues was bypassing normal background jobs schedulling in some cases, which masked problems with Maven execution context use in background processing queues. To prevent test execution context from "leaking" into background processing queue flushing code, suspend/resume the context when flushing test queues. Signed-off-by: Igor Fedorenko <igor@ifedorenko.com>
Diffstat (limited to 'org.eclipse.m2e.core')
-rw-r--r--org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenExecutionContext.java26
1 files changed, 26 insertions, 0 deletions
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenExecutionContext.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenExecutionContext.java
index 4e5d19b9..032153a2 100644
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenExecutionContext.java
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenExecutionContext.java
@@ -225,4 +225,30 @@ public class MavenExecutionContext implements IMavenExecutionContext {
return projectBuildingRequest;
}
+ /**
+ * Suspends current Maven execution context, if any. Returns suspended context or {@code null} if there was no context
+ * associated with the current thread.
+ *
+ * @see #resume(Deque)
+ * @since 1.5
+ */
+ public static Deque<MavenExecutionContext> suspend() {
+ Deque<MavenExecutionContext> queue = context.get();
+ context.set(null);
+ return queue;
+ }
+
+ /**
+ * Resumes Maven execution context suspended with {@link #suspend()}.
+ *
+ * @see #resume(Deque)
+ * @since 1.5
+ */
+ public static void resume(Deque<MavenExecutionContext> queue) {
+ if(context.get() != null) {
+ throw new IllegalStateException();
+ }
+ context.set(queue);
+ }
+
}

Back to the top