diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/CompoundPositionManager.java b/java/debugger/impl/src/com/intellij/debugger/engine/CompoundPositionManager.java index c66c4ecb56a2..3f869c7dd24b 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/CompoundPositionManager.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/CompoundPositionManager.java @@ -44,6 +44,8 @@ import java.util.*; public class CompoundPositionManager extends PositionManagerEx implements MultiRequestPositionManager{ private static final Logger LOG = Logger.getInstance(CompoundPositionManager.class); + public static final CompoundPositionManager EMPTY = new CompoundPositionManager(); + private final ArrayList myPositionManagers = new ArrayList<>(); @SuppressWarnings("UnusedDeclaration") diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/ContextUtil.java b/java/debugger/impl/src/com/intellij/debugger/engine/ContextUtil.java index 9b486ab8db0c..63d5f4844985 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/ContextUtil.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/ContextUtil.java @@ -60,11 +60,7 @@ public class ContextUtil { if (location == null) { return null; } - CompoundPositionManager positionManager = debugProcess.getPositionManager(); - if (positionManager == null) { // process already closed - return null; - } - return positionManager.getSourcePosition(location); + return debugProcess.getPositionManager().getSourcePosition(location); } @Nullable diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java index 209b43bfe7da..f8f8c4a3b026 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java @@ -129,7 +129,7 @@ public abstract class DebugProcessImpl extends UserDataHolderBase implements Deb private final Map myNodeRenderersMap = new HashMap<>(); private final SuspendManagerImpl mySuspendManager = new SuspendManagerImpl(this); - protected CompoundPositionManager myPositionManager = null; + protected CompoundPositionManager myPositionManager = CompoundPositionManager.EMPTY; private final DebuggerManagerThreadImpl myDebuggerManagerThread; private final Semaphore myWaitFor = new Semaphore(); @@ -777,7 +777,7 @@ public abstract class DebugProcessImpl extends UserDataHolderBase implements Deb finally { final VirtualMachineProxyImpl vm = myVirtualMachineProxy; myVirtualMachineProxy = null; - myPositionManager = null; + myPositionManager = CompoundPositionManager.EMPTY; myReturnValueWatcher = null; myNodeRenderersMap.clear(); myRenderers.clear(); @@ -1453,6 +1453,7 @@ public abstract class DebugProcessImpl extends UserDataHolderBase implements Deb return mySuspendManager; } + @NotNull @Override public CompoundPositionManager getPositionManager() { return myPositionManager; diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java index 3cc157092ea1..fc09b147c279 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java @@ -109,9 +109,7 @@ public class PositionManagerImpl implements PositionManager, MultiRequestPositio classPattern = parentQName + "*"; prepareRequestor = new ClassPrepareRequestor() { public void processClassPrepare(DebugProcess debuggerProcess, ReferenceType referenceType) { - final CompoundPositionManager positionManager = ((DebugProcessImpl)debuggerProcess).getPositionManager(); - final List positionClasses = positionManager.getAllClasses(position); - if (positionClasses.contains(referenceType)) { + if (((DebugProcessImpl)debuggerProcess).getPositionManager().getAllClasses(position).contains(referenceType)) { requestor.processClassPrepare(debuggerProcess, referenceType); } } diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/ReloadClassesWorker.java b/java/debugger/impl/src/com/intellij/debugger/impl/ReloadClassesWorker.java index 04088e5947ff..0553ff977fc6 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/ReloadClassesWorker.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/ReloadClassesWorker.java @@ -165,10 +165,7 @@ class ReloadClassesWorker { processException(e); } - CompoundPositionManager positionManager = debugProcess.getPositionManager(); - if (positionManager != null) { - positionManager.clearCache(); - } + debugProcess.getPositionManager().clearCache(); DebuggerContextImpl context = myDebuggerSession.getContextManager().getContext(); SuspendContextImpl suspendContext = context.getSuspendContext(); diff --git a/java/debugger/openapi/src/com/intellij/debugger/engine/DebugProcess.java b/java/debugger/openapi/src/com/intellij/debugger/engine/DebugProcess.java index c672028b6db4..a914699da205 100644 --- a/java/debugger/openapi/src/com/intellij/debugger/engine/DebugProcess.java +++ b/java/debugger/openapi/src/com/intellij/debugger/engine/DebugProcess.java @@ -45,6 +45,7 @@ public interface DebugProcess { RequestManager getRequestsManager(); + @NotNull PositionManager getPositionManager(); VirtualMachineProxy getVirtualMachineProxy();