From 92a3a2b490c0cc0987c69047b8ecfdc2e3e7bade Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Fri, 8 Aug 2014 12:55:02 +0200 Subject: [PATCH] =?UTF-8?q?simplify=20API=20=E2=80=94=20ExecutionEnvironme?= =?UTF-8?q?nt=20is=20enough?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DefaultJavaProgramRunner.java | 2 +- .../runners/ExecutionEnvironmentBuilder.java | 10 ++++++++ .../runners/GenericProgramRunner.java | 3 ++- .../execution/impl/ExecutionManagerImpl.java | 4 +-- .../runners/DefaultProgramRunner.java | 8 +++--- .../execution/runners/RunContentBuilder.java | 25 +++++++++---------- .../xdebugger/impl/XDebuggerManagerImpl.java | 6 +---- 7 files changed, 32 insertions(+), 26 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/impl/DefaultJavaProgramRunner.java b/java/execution/impl/src/com/intellij/execution/impl/DefaultJavaProgramRunner.java index 3190e19dcee4..6da3ea91e37c 100644 --- a/java/execution/impl/src/com/intellij/execution/impl/DefaultJavaProgramRunner.java +++ b/java/execution/impl/src/com/intellij/execution/impl/DefaultJavaProgramRunner.java @@ -99,7 +99,7 @@ public class DefaultJavaProgramRunner extends JavaPatchableProgramRunner { onProcessStarted(env.getRunnerSettings(), executionResult); - final RunContentBuilder contentBuilder = new RunContentBuilder(this, executionResult, env); + final RunContentBuilder contentBuilder = new RunContentBuilder(executionResult, env); Disposer.register(project, contentBuilder); if (shouldAddDefaultActions) { addDefaultActions(contentBuilder); diff --git a/platform/lang-api/src/com/intellij/execution/runners/ExecutionEnvironmentBuilder.java b/platform/lang-api/src/com/intellij/execution/runners/ExecutionEnvironmentBuilder.java index 0a962079c611..b958f7ac9f7a 100644 --- a/platform/lang-api/src/com/intellij/execution/runners/ExecutionEnvironmentBuilder.java +++ b/platform/lang-api/src/com/intellij/execution/runners/ExecutionEnvironmentBuilder.java @@ -78,6 +78,16 @@ public final class ExecutionEnvironmentBuilder { } } + @NotNull + public static ExecutionEnvironment fix(@NotNull ExecutionEnvironment environment, @NotNull ProgramRunner runner) { + if (runner.getRunnerId().equals(environment.getRunnerId())) { + return environment; + } + else { + return new ExecutionEnvironmentBuilder(environment).runnerId(runner.getRunnerId()).build(); + } + } + @SuppressWarnings("UnusedDeclaration") @Deprecated /** diff --git a/platform/lang-api/src/com/intellij/execution/runners/GenericProgramRunner.java b/platform/lang-api/src/com/intellij/execution/runners/GenericProgramRunner.java index ec8ec49a790b..adbd04e822e6 100644 --- a/platform/lang-api/src/com/intellij/execution/runners/GenericProgramRunner.java +++ b/platform/lang-api/src/com/intellij/execution/runners/GenericProgramRunner.java @@ -51,7 +51,8 @@ public abstract class GenericProgramRunner exte } @Nullable - protected abstract RunContentDescriptor doExecute(@NotNull Project project, @NotNull RunProfileState state, + protected abstract RunContentDescriptor doExecute(@NotNull Project project, + @NotNull RunProfileState state, @Nullable RunContentDescriptor contentToReuse, @NotNull ExecutionEnvironment environment) throws ExecutionException; diff --git a/platform/lang-impl/src/com/intellij/execution/impl/ExecutionManagerImpl.java b/platform/lang-impl/src/com/intellij/execution/impl/ExecutionManagerImpl.java index 965a753a0369..8d7489761d0c 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/ExecutionManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/ExecutionManagerImpl.java @@ -192,11 +192,11 @@ public class ExecutionManagerImpl extends ExecutionManager implements ProjectCom @Override public void startRunProfile(@NotNull final RunProfileStarter starter, @NotNull final RunProfileState state, @NotNull final Project project, @NotNull final Executor executor, @NotNull final ExecutionEnvironment env) { - final RunContentDescriptor reuseContent = - ExecutionManager.getInstance(project).getContentManager().getReuseContent(env); + final RunContentDescriptor reuseContent = ExecutionManager.getInstance(project).getContentManager().getReuseContent(env); if (reuseContent != null) { reuseContent.setExecutionId(env.getExecutionId()); } + final RunProfile profile = env.getRunProfile(); project.getMessageBus().syncPublisher(EXECUTION_TOPIC).processStartScheduled(executor.getId(), env); diff --git a/platform/lang-impl/src/com/intellij/execution/runners/DefaultProgramRunner.java b/platform/lang-impl/src/com/intellij/execution/runners/DefaultProgramRunner.java index e2f8a5a717fe..5f7321aa8068 100644 --- a/platform/lang-impl/src/com/intellij/execution/runners/DefaultProgramRunner.java +++ b/platform/lang-impl/src/com/intellij/execution/runners/DefaultProgramRunner.java @@ -36,10 +36,10 @@ public abstract class DefaultProgramRunner extends GenericProgramRunner { @NotNull final ExecutionEnvironment env) throws ExecutionException { FileDocumentManager.getInstance().saveAllDocuments(); ExecutionResult executionResult = state.execute(env.getExecutor(), this); - if (executionResult == null) return null; - - final RunContentBuilder contentBuilder = new RunContentBuilder(this, executionResult, env); - return contentBuilder.showRunContent(contentToReuse); + if (executionResult == null) { + return null; + } + return new RunContentBuilder(executionResult, env).showRunContent(contentToReuse); } } diff --git a/platform/lang-impl/src/com/intellij/execution/runners/RunContentBuilder.java b/platform/lang-impl/src/com/intellij/execution/runners/RunContentBuilder.java index 97d8e38d49a0..712956bd670d 100644 --- a/platform/lang-impl/src/com/intellij/execution/runners/RunContentBuilder.java +++ b/platform/lang-impl/src/com/intellij/execution/runners/RunContentBuilder.java @@ -54,7 +54,6 @@ import java.util.Collection; public class RunContentBuilder extends LogConsoleManagerBase { @NonNls private static final String JAVA_RUNNER = "JavaRunner"; - private final ProgramRunner myRunner; private final ArrayList myRunnerActions = new ArrayList(); private ExecutionResult myExecutionResult; @@ -66,35 +65,35 @@ public class RunContentBuilder extends LogConsoleManagerBase { /** * @deprecated use {@link #RunContentBuilder(ProgramRunner, com.intellij.execution.ExecutionResult, ExecutionEnvironment)} */ + @SuppressWarnings("UnusedParameters") public RunContentBuilder(@NotNull Project project, ProgramRunner runner, Executor executor, ExecutionResult executionResult, @NotNull ExecutionEnvironment environment) { + //noinspection deprecation this(runner, executionResult, environment); } + /** + * @deprecated use {@link #RunContentBuilder(com.intellij.execution.ExecutionResult, ExecutionEnvironment)} + * to remove in IDEA 15 + */ public RunContentBuilder(ProgramRunner runner, ExecutionResult executionResult, @NotNull ExecutionEnvironment environment) { + this(executionResult, ExecutionEnvironmentBuilder.fix(environment, runner)); + } + + public RunContentBuilder(ExecutionResult executionResult, @NotNull ExecutionEnvironment environment) { super(environment.getProject(), SearchScopeProvider.createSearchScope(environment.getProject(), environment.getRunProfile())); - myRunner = runner; + myExecutor = environment.getExecutor(); myManager = new LogFilesManager(environment.getProject(), this, this); myExecutionResult = executionResult; setEnvironment(environment); } - /** - * @deprecated use {@link #RunContentBuilder(com.intellij.openapi.project.Project, ProgramRunner, com.intellij.execution.Executor, com.intellij.execution.ExecutionResult, ExecutionEnvironment)} - */ - public RunContentBuilder(final Project project, final ProgramRunner runner, Executor executor) { - super(project); - myRunner = runner; - myExecutor = executor; - myManager = new LogFilesManager(project, this, this); - } - @Deprecated @NotNull public static GlobalSearchScope createSearchScope(Project project, RunProfile runProfile) { @@ -204,7 +203,7 @@ public class RunContentBuilder extends LogConsoleManagerBase { private ActionGroup createActionToolbar(final RunContentDescriptor contentDescriptor, final JComponent component) { final DefaultActionGroup actionGroup = new DefaultActionGroup(); - final RestartAction restartAction = new RestartAction(myExecutor, myRunner, contentDescriptor, getEnvironment()); + final RestartAction restartAction = new RestartAction(myExecutor, contentDescriptor, getEnvironment()); restartAction.registerShortcut(component); actionGroup.add(restartAction); diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerManagerImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerManagerImpl.java index 5b605cb66fd0..37baa02ca74e 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerManagerImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerManagerImpl.java @@ -174,11 +174,7 @@ public class XDebuggerManagerImpl extends XDebuggerManager @NotNull ExecutionEnvironment environment, @Nullable RunContentDescriptor contentToReuse, @NotNull XDebugProcessStarter processStarter) throws ExecutionException { - if (!runner.getRunnerId().equals(environment.getRunnerId())) { - // fix invalid environment - environment = new ExecutionEnvironmentBuilder(environment).runnerId(runner.getRunnerId()).build(); - } - return startSession(contentToReuse, processStarter, new XDebugSessionImpl(environment, this)); + return startSession(contentToReuse, processStarter, new XDebugSessionImpl(ExecutionEnvironmentBuilder.fix(environment, runner), this)); } @Override