mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fixed NPE in read only mode
This commit is contained in:
+12
-4
@@ -291,10 +291,7 @@ public class RequestManagerImpl extends DebugProcessAdapterImpl implements Reque
|
||||
public void callbackOnPrepareClasses(final ClassPrepareRequestor requestor, final SourcePosition classPosition) {
|
||||
DebuggerManagerThreadImpl.assertIsManagerThread();
|
||||
|
||||
if (!myDebugProcess.getVirtualMachineProxy().canBeModified()) {
|
||||
setInvalid(requestor, "Not available in read only mode");
|
||||
return;
|
||||
}
|
||||
if (checkReadOnly(requestor)) return;
|
||||
|
||||
List<ClassPrepareRequest> prepareRequests = myDebugProcess.getPositionManager().createPrepareRequests(requestor, classPosition);
|
||||
if(prepareRequests.isEmpty()) {
|
||||
@@ -313,6 +310,9 @@ public class RequestManagerImpl extends DebugProcessAdapterImpl implements Reque
|
||||
@Override
|
||||
public void callbackOnPrepareClasses(ClassPrepareRequestor requestor, String classOrPatternToBeLoaded) {
|
||||
DebuggerManagerThreadImpl.assertIsManagerThread();
|
||||
|
||||
if (checkReadOnly(requestor)) return;
|
||||
|
||||
ClassPrepareRequest classPrepareRequest = createClassPrepareRequest(requestor, classOrPatternToBeLoaded);
|
||||
|
||||
if (classPrepareRequest != null) {
|
||||
@@ -415,4 +415,12 @@ public class RequestManagerImpl extends DebugProcessAdapterImpl implements Reque
|
||||
public void clearWarnings() {
|
||||
myRequestWarnings.clear();
|
||||
}
|
||||
|
||||
public boolean checkReadOnly(Requestor requestor) {
|
||||
if (!myDebugProcess.getVirtualMachineProxy().canBeModified()) {
|
||||
setInvalid(requestor, "Not available in read only mode");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ import com.intellij.debugger.engine.events.SuspendContextCommandImpl;
|
||||
import com.intellij.debugger.impl.DebuggerUtilsEx;
|
||||
import com.intellij.debugger.jdi.StackFrameProxyImpl;
|
||||
import com.intellij.debugger.jdi.ThreadReferenceProxyImpl;
|
||||
import com.intellij.debugger.jdi.VirtualMachineProxyImpl;
|
||||
import com.intellij.debugger.requests.ClassPrepareRequestor;
|
||||
import com.intellij.debugger.requests.Requestor;
|
||||
import com.intellij.debugger.settings.DebuggerSettings;
|
||||
@@ -208,12 +209,17 @@ public abstract class Breakpoint<P extends JavaBreakpointProperties> implements
|
||||
*/
|
||||
protected void createOrWaitPrepare(DebugProcessImpl debugProcess, String classToBeLoaded) {
|
||||
debugProcess.getRequestsManager().callbackOnPrepareClasses(this, classToBeLoaded);
|
||||
processClassesPrepare(debugProcess, debugProcess.getVirtualMachineProxy().classesByName(classToBeLoaded).stream());
|
||||
VirtualMachineProxyImpl virtualMachineProxy = debugProcess.getVirtualMachineProxy();
|
||||
if (virtualMachineProxy.canBeModified()) {
|
||||
processClassesPrepare(debugProcess, virtualMachineProxy.classesByName(classToBeLoaded).stream());
|
||||
}
|
||||
}
|
||||
|
||||
protected void createOrWaitPrepare(final DebugProcessImpl debugProcess, @NotNull final SourcePosition classPosition) {
|
||||
debugProcess.getRequestsManager().callbackOnPrepareClasses(this, classPosition);
|
||||
processClassesPrepare(debugProcess, debugProcess.getPositionManager().getAllClasses(classPosition).stream().distinct());
|
||||
if (debugProcess.getVirtualMachineProxy().canBeModified()) {
|
||||
processClassesPrepare(debugProcess, debugProcess.getPositionManager().getAllClasses(classPosition).stream().distinct());
|
||||
}
|
||||
}
|
||||
|
||||
private void processClassesPrepare(DebugProcessImpl debugProcess, Stream<ReferenceType> classes) {
|
||||
|
||||
+1
-1
@@ -125,7 +125,7 @@ public class ExceptionBreakpoint extends Breakpoint<JavaExceptionBreakpointPrope
|
||||
@Override
|
||||
public void processClassPrepare(DebugProcess process, ReferenceType refType) {
|
||||
DebugProcessImpl debugProcess = (DebugProcessImpl)process;
|
||||
if (shouldCreateRequest(debugProcess, true)) {
|
||||
if (shouldCreateRequest(debugProcess, true) && !debugProcess.getRequestsManager().checkReadOnly(this)) {
|
||||
// trying to create a request
|
||||
RequestManagerImpl manager = debugProcess.getRequestsManager();
|
||||
manager.enableRequest(manager.createExceptionRequest(this, refType, isNotifyCaught(), isNotifyUncaught()));
|
||||
|
||||
Reference in New Issue
Block a user