diff options
author | Igor Fedorenko | 2013-06-14 10:39:35 +0000 |
---|---|---|
committer | Igor Fedorenko | 2013-06-14 10:39:35 +0000 |
commit | 5635b22992332e11e88d95eea267d5bb679506d9 (patch) | |
tree | fdb2508133d3126745fd1005f9c101eac4f3fbf2 /org.eclipse.m2e.core | |
parent | 073ee9daf7613bd0ec83b00f5f0bfa615f796e0d (diff) | |
download | m2e-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.java | 26 |
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); + } + } |