diff options
Diffstat (limited to 'java/debugger/impl/src/com/intellij/debugger/impl')
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) { |