From db2ce678ddaea834d12f77257ff1aee283d13f28 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Mon, 31 Mar 2014 20:06:52 +0400 Subject: [PATCH] minor refactoring to avoid NPEs --- .../debugger/actions/JumpToObjectAction.java | 2 +- .../com/intellij/debugger/engine/JVMNameUtil.java | 12 ++++++------ .../intellij/debugger/ui/PositionHighlighter.java | 4 ++-- .../intellij/debugger/ui/breakpoints/Breakpoint.java | 2 ++ .../ui/breakpoints/BreakpointWithHighlighter.java | 9 +++++++-- .../debugger/ui/breakpoints/FieldBreakpoint.java | 2 +- .../debugger/ui/breakpoints/LineBreakpoint.java | 5 +++-- .../debugger/ui/breakpoints/MethodBreakpoint.java | 2 +- .../ui/breakpoints/RunToCursorBreakpoint.java | 3 ++- .../debugger/ui/breakpoints/StepIntoBreakpoint.java | 7 +++---- .../debugger/ui/impl/watch/FieldDescriptorImpl.java | 4 +--- 11 files changed, 29 insertions(+), 23 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/actions/JumpToObjectAction.java b/java/debugger/impl/src/com/intellij/debugger/actions/JumpToObjectAction.java index 498ee6d44417..17379560e107 100644 --- a/java/debugger/impl/src/com/intellij/debugger/actions/JumpToObjectAction.java +++ b/java/debugger/impl/src/com/intellij/debugger/actions/JumpToObjectAction.java @@ -110,7 +110,7 @@ public class JumpToObjectAction extends DebuggerAction{ SourcePosition position = debugProcess.getPositionManager().getSourcePosition(location); // adjust position for non-anonymous classes if (clsType.name().indexOf('$') < 0) { - final PsiClass classAt = position != null? JVMNameUtil.getClassAt(position) : null; + final PsiClass classAt = JVMNameUtil.getClassAt(position); if (classAt != null) { final SourcePosition classPosition = SourcePosition.createFromElement(classAt); if (classPosition != null) { diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/JVMNameUtil.java b/java/debugger/impl/src/com/intellij/debugger/engine/JVMNameUtil.java index e1a28f705d66..13e8f155dff4 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/JVMNameUtil.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/JVMNameUtil.java @@ -259,9 +259,6 @@ public class JVMNameUtil { @Nullable public static JVMName getContextClassJVMQualifiedName(@Nullable SourcePosition pos) { - if (pos == null) { - return null; - } final PsiClass psiClass = getClassAt(pos); if (psiClass == null) { return null; @@ -319,13 +316,16 @@ public class JVMNameUtil { } @Nullable - public static PsiClass getClassAt(SourcePosition position) { + public static PsiClass getClassAt(@Nullable SourcePosition position) { + if (position == null) { + return null; + } final PsiElement element = position.getElementAt(); return (element != null) ? PsiTreeUtil.getParentOfType(element, PsiClass.class, false) : null; } @Nullable - public static String getSourcePositionClassDisplayName(DebugProcessImpl debugProcess, SourcePosition position) { + public static String getSourcePositionClassDisplayName(DebugProcessImpl debugProcess, @Nullable SourcePosition position) { if (position == null) { return null; } @@ -391,7 +391,7 @@ public class JVMNameUtil { } @Nullable - public static String getSourcePositionPackageDisplayName(DebugProcessImpl debugProcess, SourcePosition position) { + public static String getSourcePositionPackageDisplayName(DebugProcessImpl debugProcess, @Nullable SourcePosition position) { if (position == null) { return null; } diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/PositionHighlighter.java b/java/debugger/impl/src/com/intellij/debugger/ui/PositionHighlighter.java index dd0b0de43151..6386fb41314e 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/PositionHighlighter.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/PositionHighlighter.java @@ -240,8 +240,8 @@ public class PositionHighlighter { if (breakpoint instanceof BreakpointWithHighlighter) { if (((BreakpointWithHighlighter)breakpoint).isVisible() && breakpoint.isValid()) { breakpoint.reload(); - final SourcePosition sourcePosition = ((BreakpointWithHighlighter)breakpoint).getSourcePosition(); - if (sourcePosition == null || sourcePosition.getLine() != lineIndex) { + int bptLine = ((BreakpointWithHighlighter)breakpoint).getLineIndex(); + if (bptLine < 0 || bptLine != lineIndex) { eventsOutOfLine.add(eventDescriptor); } } diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/Breakpoint.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/Breakpoint.java index e25a39463143..bd74d0ff6d90 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/Breakpoint.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/Breakpoint.java @@ -91,6 +91,7 @@ public abstract class Breakpoint

implements return myXBreakpoint.getProperties(); } + @Nullable public abstract PsiClass getPsiClass(); /** * Request for creating all needed JPDA requests in the specified VM @@ -474,6 +475,7 @@ public abstract class Breakpoint

implements // myLogMessage = logMessage; //} + @Nullable public abstract PsiElement getEvaluationElement(); protected TextWithImports getLogMessage() { diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointWithHighlighter.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointWithHighlighter.java index 522cebce04f0..cf918d384456 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointWithHighlighter.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointWithHighlighter.java @@ -418,7 +418,7 @@ public abstract class BreakpointWithHighlighter

() { @Nullable @Override @@ -507,10 +507,15 @@ public abstract class BreakpointWithHighlighter

= document.getLineCount()) { diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/FieldBreakpoint.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/FieldBreakpoint.java index e89adfdac186..707b1851f630 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/FieldBreakpoint.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/FieldBreakpoint.java @@ -218,7 +218,7 @@ public class FieldBreakpoint extends BreakpointWithHighlighter locations = positionManager.locationsOfLine(classType, startPosition); + List locations = positionManager.locationsOfLine(classType, myCustomPosition); if (locations.isEmpty()) { // sometimes first statements are mapped to some weird line number, or there are no executable instructions at first statement's line // so if lambda or method body spans for more than one lines, try get some locations from these lines final int lastLine = myFilter.getLastStatementLine(); if (lastLine >= 0) { - int nextLine = startPosition.getLine() + 1; + int nextLine = myCustomPosition.getLine() + 1; while (nextLine <= lastLine && locations.isEmpty()) { - locations = positionManager.locationsOfLine(classType, SourcePosition.createFromLine(startPosition.getFile(), nextLine++)); + locations = positionManager.locationsOfLine(classType, SourcePosition.createFromLine(myCustomPosition.getFile(), nextLine++)); } } } diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/FieldDescriptorImpl.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/FieldDescriptorImpl.java index e059e789254b..223b3cc8fcc4 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/FieldDescriptorImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/FieldDescriptorImpl.java @@ -109,9 +109,7 @@ public class FieldDescriptorImpl extends ValueDescriptorImpl implements FieldDes // important: use the last location to be sure the position will be within the anonymous class final Location lastLocation = locations.get(locations.size() - 1); final SourcePosition position = debugProcess.getPositionManager().getSourcePosition(lastLocation); - if (position != null) { - aClass = JVMNameUtil.getClassAt(position); - } + aClass = JVMNameUtil.getClassAt(position); } } catch (AbsentInformationException ignored) {