You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by sk...@apache.org on 2021/07/22 11:15:09 UTC
[netbeans] branch master updated: Remove a possibly staled debugger
listener on finish.
This is an automated email from the ASF dual-hosted git repository.
skygo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 3927637 Remove a possibly staled debugger listener on finish.
new 5ef015f Merge pull request #3048 from entlicher/lsp_StaledDebuggerListener
3927637 is described below
commit 3927637f1ab20e202bb7eecd07a507ab56af9337
Author: Martin Entlicher <ma...@oracle.com>
AuthorDate: Wed Jul 14 02:50:13 2021 +0200
Remove a possibly staled debugger listener on finish.
---
.../lsp/server/debugging/launch/NbLaunchDelegate.java | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/debugging/launch/NbLaunchDelegate.java b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/debugging/launch/NbLaunchDelegate.java
index c6304c0..fda979e 100644
--- a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/debugging/launch/NbLaunchDelegate.java
+++ b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/debugging/launch/NbLaunchDelegate.java
@@ -31,6 +31,7 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.CancellationException;
import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
@@ -49,6 +50,7 @@ import org.netbeans.api.annotations.common.NonNull;
import org.netbeans.api.annotations.common.NullAllowed;
import org.netbeans.api.debugger.DebuggerManager;
import org.netbeans.api.debugger.DebuggerManagerAdapter;
+import org.netbeans.api.debugger.DebuggerManagerListener;
import org.netbeans.api.debugger.Session;
import org.netbeans.api.debugger.jpda.JPDADebugger;
import org.netbeans.api.extexecution.base.ExplicitProcessParameters;
@@ -104,13 +106,18 @@ import org.openide.util.lookup.ProxyLookup;
public abstract class NbLaunchDelegate {
private final RequestProcessor requestProcessor = new RequestProcessor(NbLaunchDelegate.class);
+ private final Map<DebugAdapterContext, DebuggerManagerListener> debuggerListeners = new ConcurrentHashMap<>();
public abstract void preLaunch(Map<String, Object> launchArguments, DebugAdapterContext context);
public abstract void postLaunch(Map<String, Object> launchArguments, DebugAdapterContext context);
protected void notifyFinished(DebugAdapterContext ctx, boolean success) {
- // no op.
+ // Remove a possibly staled debugger listener
+ DebuggerManagerListener listener = debuggerListeners.remove(ctx);
+ if (listener != null) {
+ DebuggerManager.getDebuggerManager().removeDebuggerListener(listener);
+ }
}
public final CompletableFuture<Void> nbLaunch(FileObject toRun, File nativeImageFile, String method, Map<String, Object> launchArguments, DebugAdapterContext context, boolean debug, boolean testRun, Consumer<NbProcessConsole.ConsoleMessage> consoleMessages) {
@@ -266,12 +273,13 @@ public abstract class NbLaunchDelegate {
context.setInputSinkProvider(() -> writer);
if (debug) {
- DebuggerManager.getDebuggerManager().addDebuggerListener(new DebuggerManagerAdapter() {
+ DebuggerManagerListener listener = new DebuggerManagerAdapter() {
@Override
public void sessionAdded(Session session) {
JPDADebugger debugger = session.lookupFirst(null, JPDADebugger.class);
if (debugger != null) {
DebuggerManager.getDebuggerManager().removeDebuggerListener(this);
+ debuggerListeners.remove(context);
Map properties = session.lookupFirst(null, Map.class);
NbSourceProvider sourceProvider = context.getSourceProvider();
sourceProvider.setSourcePath(properties != null ? (ClassPath) properties.getOrDefault("sourcepath", ClassPath.EMPTY) : ClassPath.EMPTY);
@@ -290,7 +298,9 @@ public abstract class NbLaunchDelegate {
});
}
}
- });
+ };
+ DebuggerManager.getDebuggerManager().addDebuggerListener(listener);
+ debuggerListeners.put(context, listener);
}
Lookups.executeWith(launchCtx, () -> {
providerAndCommand.first().invokeAction(providerAndCommand.second(), lookup);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists