common logic extracted

This commit is contained in:
Egor.Ushakov
2016-10-20 20:45:12 +03:00
parent 5c967a5687
commit 1a7e552fa6
4 changed files with 12 additions and 20 deletions
@@ -45,6 +45,7 @@ import com.intellij.xdebugger.breakpoints.XBreakpoint;
import com.intellij.xdebugger.breakpoints.XBreakpointManager;
import com.intellij.xdebugger.breakpoints.XLineBreakpoint;
import com.intellij.xml.CommonXmlStrings;
import com.sun.jdi.Location;
import com.sun.jdi.ReferenceType;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
@@ -259,6 +260,13 @@ public abstract class BreakpointWithHighlighter<P extends JavaBreakpointProperti
return null;
}
protected void createLocationBreakpointRequest(@Nullable Location location, @NotNull DebugProcessImpl debugProcess) {
if (location != null) {
RequestManagerImpl requestsManager = debugProcess.getRequestsManager();
requestsManager.enableRequest(requestsManager.createBreakpointRequest(this, location));
}
}
@Override
public void createRequest(@NotNull DebugProcessImpl debugProcess) {
DebuggerManagerThreadImpl.assertIsManagerThread();
@@ -56,7 +56,6 @@ import com.intellij.xdebugger.breakpoints.XBreakpoint;
import com.intellij.xdebugger.breakpoints.XBreakpointType;
import com.sun.jdi.*;
import com.sun.jdi.event.LocatableEvent;
import com.sun.jdi.request.BreakpointRequest;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -134,8 +133,7 @@ public class LineBreakpoint<P extends JavaBreakpointProperties> extends Breakpoi
if (!acceptLocation(debugProcess, classType, loc)) {
continue;
}
final BreakpointRequest request = debugProcess.getRequestsManager().createBreakpointRequest(this, loc);
debugProcess.getRequestsManager().enableRequest(request);
createLocationBreakpointRequest(loc, debugProcess);
if (LOG.isDebugEnabled()) {
LOG.debug("Created breakpoint request for reference type " + classType.name() + " at line " + getLineIndex() + "; codeIndex=" + loc.codeIndex());
}
@@ -150,7 +150,7 @@ public class MethodBreakpoint extends BreakpointWithHighlighter<JavaMethodBreakp
if (getMethodName().equals(method.name()) && mySignature.getName(debugProcess).equals(method.signature())) {
List<Location> allLineLocations = method.allLineLocations();
if (isWatchEntry()) {
createLocationBreakpoint(ContainerUtil.getFirstItem(allLineLocations), debugProcess);
createLocationBreakpointRequest(ContainerUtil.getFirstItem(allLineLocations), debugProcess);
}
if (isWatchExit()) {
MethodBytecodeUtil.visit(classType, method, new MethodVisitor(Opcodes.API_VERSION) {
@@ -172,7 +172,7 @@ public class MethodBreakpoint extends BreakpointWithHighlighter<JavaMethodBreakp
case Opcodes.ATHROW:
allLineLocations.stream()
.filter(l -> l.lineNumber() == myLastLine)
.findFirst().ifPresent(location -> createLocationBreakpoint(location, debugProcess));
.findFirst().ifPresent(location -> createLocationBreakpointRequest(location, debugProcess));
}
}
});
@@ -190,14 +190,6 @@ public class MethodBreakpoint extends BreakpointWithHighlighter<JavaMethodBreakp
}
}
private void createLocationBreakpoint(@Nullable Location location, @NotNull DebugProcessImpl debugProcess) {
if (location != null) {
RequestManagerImpl requestsManager = debugProcess.getRequestsManager();
requestsManager.enableRequest(requestsManager.createBreakpointRequest(this, location));
}
}
protected void createRequestForPreparedClass(@NotNull DebugProcessImpl debugProcess, @NotNull ReferenceType classType) {
if (isEmulated()) {
createRequestForPreparedClassEmulated(debugProcess, classType, true);
@@ -19,14 +19,12 @@ import com.intellij.debugger.SourcePosition;
import com.intellij.debugger.engine.*;
import com.intellij.debugger.engine.evaluation.EvaluateException;
import com.intellij.debugger.engine.events.SuspendContextCommandImpl;
import com.intellij.debugger.engine.requests.RequestManagerImpl;
import com.intellij.debugger.impl.DebuggerUtilsEx;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.util.containers.MultiMap;
import com.sun.jdi.*;
import com.sun.jdi.event.LocatableEvent;
import com.sun.jdi.request.BreakpointRequest;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -91,11 +89,7 @@ public class StepIntoBreakpoint extends RunToCursorBreakpoint {
}
}
}
if (location != null) {
final RequestManagerImpl requestsManager = debugProcess.getRequestsManager();
final BreakpointRequest request = requestsManager.createBreakpointRequest(this, location);
requestsManager.enableRequest(request);
}
createLocationBreakpointRequest(location, debugProcess);
}
}
catch (ClassNotPreparedException ex) {