mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
common logic extracted
This commit is contained in:
+8
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user