summaryrefslogtreecommitdiff
path: root/java/debugger/impl/src/com/intellij/debugger/impl
diff options
context:
space:
mode:
Diffstat (limited to 'java/debugger/impl/src/com/intellij/debugger/impl')
-rw-r--r--java/debugger/impl/src/com/intellij/debugger/impl/DebuggerManagerImpl.java29
-rw-r--r--java/debugger/impl/src/com/intellij/debugger/impl/DebuggerSession.java18
-rw-r--r--java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerRunner.java77
3 files changed, 46 insertions, 78 deletions
diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerManagerImpl.java b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerManagerImpl.java
index 79c1db31db3c..60c0d2dded3d 100644
--- a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerManagerImpl.java
+++ b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerManagerImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,16 +23,13 @@ import com.intellij.debugger.ui.GetJPDADialog;
import com.intellij.debugger.ui.breakpoints.BreakpointManager;
import com.intellij.execution.ExecutionException;
import com.intellij.execution.ExecutionResult;
-import com.intellij.execution.Executor;
import com.intellij.execution.configurations.JavaParameters;
-import com.intellij.execution.configurations.ModuleRunProfile;
import com.intellij.execution.configurations.RemoteConnection;
import com.intellij.execution.configurations.RunProfileState;
import com.intellij.execution.process.KillableColoredProcessHandler;
import com.intellij.execution.process.ProcessAdapter;
import com.intellij.execution.process.ProcessEvent;
import com.intellij.execution.process.ProcessHandler;
-import com.intellij.execution.runners.ProgramRunner;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.components.PersistentStateComponent;
import com.intellij.openapi.components.State;
@@ -208,24 +205,8 @@ public class DebuggerManagerImpl extends DebuggerManagerEx implements Persistent
}
@Override
- public DebuggerSession attachVirtualMachine(Executor executor,
- ProgramRunner runner,
- ModuleRunProfile profile,
- RunProfileState state,
- RemoteConnection remoteConnection,
- boolean pollConnection
- ) throws ExecutionException {
- return attachVirtualMachine(new DefaultDebugEnvironment(myProject,
- executor,
- runner,
- profile,
- state,
- remoteConnection,
- pollConnection));
- }
-
- @Override
- public DebuggerSession attachVirtualMachine(DebugEnvironment environment) throws ExecutionException {
+ @Nullable
+ public DebuggerSession attachVirtualMachine(@NotNull DebugEnvironment environment) throws ExecutionException {
ApplicationManager.getApplication().assertIsDispatchThread();
final DebugProcessEvents debugProcess = new DebugProcessEvents(myProject);
debugProcess.addDebugProcessListener(new DebugProcessAdapter() {
@@ -258,8 +239,7 @@ public class DebuggerManagerImpl extends DebuggerManagerEx implements Persistent
debugProcess.removeDebugProcessListener(this);
}
});
- final DebuggerSession session = new DebuggerSession(environment.getSessionName(), debugProcess);
-
+ DebuggerSession session = new DebuggerSession(environment.getSessionName(), debugProcess);
final ExecutionResult executionResult = session.attach(environment);
if (executionResult == null) {
return null;
@@ -303,7 +283,6 @@ public class DebuggerManagerImpl extends DebuggerManagerEx implements Persistent
return session;
}
-
@Override
public DebugProcessImpl getDebugProcess(final ProcessHandler processHandler) {
synchronized (mySessions) {
diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerSession.java b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerSession.java
index 344406bb141c..0a5210f16c36 100644
--- a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerSession.java
+++ b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerSession.java
@@ -35,6 +35,7 @@ import com.intellij.execution.configurations.RemoteConnection;
import com.intellij.execution.configurations.RemoteState;
import com.intellij.execution.configurations.RunProfileState;
import com.intellij.execution.process.ProcessOutputTypes;
+import com.intellij.execution.runners.ExecutionEnvironmentBuilder;
import com.intellij.execution.runners.ProgramRunner;
import com.intellij.idea.ActionsBundle;
import com.intellij.openapi.application.ApplicationManager;
@@ -379,16 +380,13 @@ public class DebuggerSession implements AbstractDebuggerSession {
}
@Nullable
- protected ExecutionResult attach(@NotNull final Executor executor,
- @NotNull final ProgramRunner runner,
- final ModuleRunProfile profile,
- final RunProfileState state,
- final RemoteConnection remoteConnection,
- final boolean pollConnection) throws ExecutionException {
- return attach(new DefaultDebugEnvironment(myDebugProcess.getProject(),
- executor,
- runner,
- profile,
+ protected ExecutionResult attach(@NotNull Executor executor,
+ @NotNull ProgramRunner runner,
+ @NotNull ModuleRunProfile profile,
+ @NotNull RunProfileState state,
+ RemoteConnection remoteConnection,
+ boolean pollConnection) throws ExecutionException {
+ return attach(new DefaultDebugEnvironment(new ExecutionEnvironmentBuilder(myDebugProcess.getProject(), executor).runProfile(profile).runner(runner).build(),
state,
remoteConnection,
pollConnection));
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) {