summaryrefslogtreecommitdiff
path: root/java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerRunner.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerRunner.java')
-rw-r--r--java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerRunner.java77
1 files changed, 34 insertions, 43 deletions
diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerRunner.java b/java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerRunner.java
index 50f525dc5185..c6491a2b8a3f 100644
--- a/java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerRunner.java
+++ b/java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerRunner.java
@@ -30,6 +30,7 @@ import com.intellij.execution.Executor;
import com.intellij.execution.configurations.*;
import com.intellij.execution.executors.DefaultDebugExecutor;
import com.intellij.execution.runners.ExecutionEnvironment;
+import com.intellij.execution.runners.ExecutionEnvironmentBuilder;
import com.intellij.execution.runners.JavaPatchableProgramRunner;
import com.intellij.execution.ui.RunContentDescriptor;
import com.intellij.openapi.fileEditor.FileDocumentManager;
@@ -58,51 +59,43 @@ public class GenericDebuggerRunner extends JavaPatchableProgramRunner<GenericDeb
}
@Override
- protected RunContentDescriptor doExecute(@NotNull final Project project,
- @NotNull final RunProfileState state,
- final RunContentDescriptor contentToReuse,
- @NotNull final ExecutionEnvironment env) throws ExecutionException {
+ protected RunContentDescriptor doExecute(@NotNull Project project,
+ @NotNull RunProfileState state,
+ @Nullable RunContentDescriptor contentToReuse,
+ @NotNull ExecutionEnvironment env) throws ExecutionException {
FileDocumentManager.getInstance().saveAllDocuments();
- return createContentDescriptor(project, state, contentToReuse, env);
+ return createContentDescriptor(state, contentToReuse == null || env.getContentToReuse() == contentToReuse
+ ? env
+ : new ExecutionEnvironmentBuilder(env).contentToReuse(contentToReuse).build());
}
@Nullable
- protected RunContentDescriptor createContentDescriptor(Project project, RunProfileState state,
- RunContentDescriptor contentToReuse,
- ExecutionEnvironment env) throws ExecutionException {
+ protected RunContentDescriptor createContentDescriptor(@NotNull RunProfileState state, @NotNull ExecutionEnvironment environment) throws ExecutionException {
if (state instanceof JavaCommandLine) {
final JavaParameters parameters = ((JavaCommandLine)state).getJavaParameters();
- runCustomPatchers(parameters, env.getExecutor(), env.getRunProfile());
+ runCustomPatchers(parameters, environment.getExecutor(), environment.getRunProfile());
RemoteConnection connection = DebuggerManagerImpl.createDebugParameters(parameters, true, DebuggerSettings.getInstance().DEBUGGER_TRANSPORT, "", false);
- return attachVirtualMachine(project, state, contentToReuse, env, connection, true);
+ return attachVirtualMachine(state, environment, connection, true);
}
if (state instanceof PatchedRunnableState) {
- final RemoteConnection connection = doPatch(new JavaParameters(), env.getRunnerSettings());
- return attachVirtualMachine(project, state, contentToReuse, env, connection, true);
+ final RemoteConnection connection = doPatch(new JavaParameters(), environment.getRunnerSettings());
+ return attachVirtualMachine(state, environment, connection, true);
}
if (state instanceof RemoteState) {
- final RemoteConnection connection = createRemoteDebugConnection((RemoteState)state, env.getRunnerSettings());
- return attachVirtualMachine(project, state, contentToReuse, env, connection, false);
+ final RemoteConnection connection = createRemoteDebugConnection((RemoteState)state, environment.getRunnerSettings());
+ return attachVirtualMachine(state, environment, connection, false);
}
return null;
}
@Nullable
- protected RunContentDescriptor attachVirtualMachine(final Project project, RunProfileState state,
- RunContentDescriptor contentToReuse,
- ExecutionEnvironment env, RemoteConnection connection, boolean pollConnection)
- throws ExecutionException {
- DefaultDebugUIEnvironment debugEnvironment = new DefaultDebugUIEnvironment(project,
- env.getExecutor(),
- this,
- env,
- state,
- contentToReuse,
- connection,
- pollConnection);
- DebugEnvironment environment = debugEnvironment.getEnvironment();
- final DebuggerSession debuggerSession = DebuggerManagerEx.getInstanceEx(project).attachVirtualMachine(environment);
+ protected RunContentDescriptor attachVirtualMachine(RunProfileState state,
+ @NotNull ExecutionEnvironment env,
+ RemoteConnection connection,
+ boolean pollConnection) throws ExecutionException {
+ DebugEnvironment environment = new DefaultDebugUIEnvironment(env, state, connection, pollConnection).getEnvironment();
+ final DebuggerSession debuggerSession = DebuggerManagerEx.getInstanceEx(env.getProject()).attachVirtualMachine(environment);
if (debuggerSession == null) {
return null;
}
@@ -118,22 +111,20 @@ public class GenericDebuggerRunner extends JavaPatchableProgramRunner<GenericDeb
debugProcess.putUserData(BatchEvaluator.REMOTE_SESSION_KEY, Boolean.TRUE);
}
- XDebugSession debugSession =
- XDebuggerManager.getInstance(project).startSession(this, env, contentToReuse, new XDebugProcessStarter() {
- @Override
- @NotNull
- public XDebugProcess start(@NotNull XDebugSession session) {
- XDebugSessionImpl sessionImpl = (XDebugSessionImpl)session;
- ExecutionResult executionResult = debugProcess.getExecutionResult();
- sessionImpl.addExtraActions(executionResult.getActions());
- if (executionResult instanceof DefaultExecutionResult) {
- sessionImpl.addRestartActions(((DefaultExecutionResult)executionResult).getRestartActions());
- sessionImpl.addExtraStopActions(((DefaultExecutionResult)executionResult).getAdditionalStopActions());
- }
- return new JavaDebugProcess(session, debuggerSession);
+ return XDebuggerManager.getInstance(env.getProject()).startSession(env, new XDebugProcessStarter() {
+ @Override
+ @NotNull
+ public XDebugProcess start(@NotNull XDebugSession session) {
+ XDebugSessionImpl sessionImpl = (XDebugSessionImpl)session;
+ ExecutionResult executionResult = debugProcess.getExecutionResult();
+ sessionImpl.addExtraActions(executionResult.getActions());
+ if (executionResult instanceof DefaultExecutionResult) {
+ sessionImpl.addRestartActions(((DefaultExecutionResult)executionResult).getRestartActions());
+ sessionImpl.addExtraStopActions(((DefaultExecutionResult)executionResult).getAdditionalStopActions());
}
- });
- return debugSession.getRunContentDescriptor();
+ return new JavaDebugProcess(session, debuggerSession);
+ }
+ }).getRunContentDescriptor();
}
private static RemoteConnection createRemoteDebugConnection(RemoteState connection, final RunnerSettings settings) {