From d6a072ba1352b73d8a5ccf03b461a74a3607eb7f Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Fri, 9 Sep 2016 17:12:16 +0700 Subject: [PATCH] IDEA-CR-13656: JavaStackFrame reverted; JSR45PositionManager: toList() used --- .../debugger/engine/JavaStackFrame.java | 21 ++++++++++++------- .../debugger/engine/JSR45PositionManager.java | 3 +-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java b/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java index fe3b1c0bc7bc..cbc098a1c6b5 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java @@ -31,6 +31,7 @@ import com.intellij.debugger.jdi.LocalVariablesUtil; import com.intellij.debugger.jdi.StackFrameProxyImpl; import com.intellij.debugger.settings.DebuggerSettings; import com.intellij.debugger.settings.NodeRendererSettings; +import com.intellij.debugger.ui.breakpoints.Breakpoint; import com.intellij.debugger.ui.impl.watch.*; import com.intellij.debugger.ui.tree.render.DescriptorLabelListener; import com.intellij.lang.java.JavaLanguage; @@ -54,6 +55,7 @@ import com.intellij.xdebugger.frame.presentation.XValuePresentation; import com.intellij.xdebugger.impl.ui.XDebuggerUIConstants; import com.intellij.xdebugger.settings.XDebuggerSettingsManager; import com.sun.jdi.*; +import com.sun.jdi.event.Event; import com.sun.jdi.event.ExceptionEvent; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -199,13 +201,18 @@ public class JavaStackFrame extends XStackFrame { children.add(JavaValue.create(returnValueDescriptor, evaluationContext, myNodeManager)); } // add context exceptions - - DebuggerUtilsEx.getEventDescriptors(debuggerContext.getSuspendContext()).stream() - .map(pair -> pair.getSecond()) - .filter(debugEvent -> debugEvent instanceof ExceptionEvent).map(debugEvent -> ((ExceptionEvent)debugEvent).exception()) - .filter(Objects::nonNull).distinct() - .forEach(e -> children.add( - JavaValue.create(myNodeManager.getThrownExceptionObjectDescriptor(myDescriptor, e), evaluationContext, myNodeManager))); + Set exceptions = new HashSet<>(); + for (Pair pair : DebuggerUtilsEx.getEventDescriptors(debuggerContext.getSuspendContext())) { + Event debugEvent = pair.getSecond(); + if (debugEvent instanceof ExceptionEvent) { + ObjectReference exception = ((ExceptionEvent)debugEvent).exception(); + if (exception != null) { + exceptions.add(exception); + } + } + } + exceptions.forEach(e -> children.add( + JavaValue.create(myNodeManager.getThrownExceptionObjectDescriptor(myDescriptor, e), evaluationContext, myNodeManager))); try { buildVariables(debuggerContext, evaluationContext, debugProcess, children, thisObjectReference, location); diff --git a/java/debugger/openapi/src/com/intellij/debugger/engine/JSR45PositionManager.java b/java/debugger/openapi/src/com/intellij/debugger/engine/JSR45PositionManager.java index d014bba10af9..8f1a298e5240 100644 --- a/java/debugger/openapi/src/com/intellij/debugger/engine/JSR45PositionManager.java +++ b/java/debugger/openapi/src/com/intellij/debugger/engine/JSR45PositionManager.java @@ -196,8 +196,7 @@ public abstract class JSR45PositionManager implements PositionManager { } protected List getRelativeSourePathsByType(final ReferenceType type) throws AbsentInformationException { - final List paths = type.sourcePaths(myStratumId); - return paths.stream().map(this::getRelativePath).collect(Collectors.toCollection(ArrayList::new)); + return type.sourcePaths(myStratumId).stream().map(this::getRelativePath).collect(Collectors.toList()); } protected List getLocationsOfLine(final ReferenceType type, final String fileName,