diff --git a/java/execution/openapi/src/com/intellij/execution/JavaExecutionUtil.java b/java/execution/openapi/src/com/intellij/execution/JavaExecutionUtil.java index f816c9014a42..3c75e2fb381e 100644 --- a/java/execution/openapi/src/com/intellij/execution/JavaExecutionUtil.java +++ b/java/execution/openapi/src/com/intellij/execution/JavaExecutionUtil.java @@ -22,7 +22,7 @@ import com.intellij.execution.filters.TextConsoleBuilder; import com.intellij.execution.filters.TextConsoleBuilderFactory; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.runners.ExecutionEnvironmentBuilder; -import com.intellij.execution.runners.ProgramRunner; +import com.intellij.execution.runners.ExecutionUtil; import com.intellij.execution.util.ExecutionErrorDialog; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.module.Module; @@ -57,12 +57,11 @@ public class JavaExecutionUtil { public static boolean executeRun(@NotNull final Project project, String contentName, Icon icon, DataContext dataContext, Filter[] filters) throws ExecutionException { final JavaParameters cmdLine = JavaParameters.JAVA_PARAMETERS.getData(dataContext); final DefaultRunProfile profile = new DefaultRunProfile(project, cmdLine, contentName, icon, filters); - final ProgramRunner runner = RunnerRegistry.getInstance().getRunner(DefaultRunExecutor.EXECUTOR_ID, profile); - if (runner != null) { - runner.execute(new ExecutionEnvironmentBuilder(project, DefaultRunExecutor.getRunExecutorInstance()).runProfile(profile).build()); + ExecutionEnvironmentBuilder builder = ExecutionEnvironmentBuilder.createOrNull(project, DefaultRunExecutor.getRunExecutorInstance(), profile); + if (builder != null) { + ExecutionUtil.execute(builder.build()); return true; } - return false; } @@ -114,7 +113,7 @@ public class JavaExecutionUtil { } @Override - public RunProfileState getState(@NotNull final Executor executor, @NotNull final ExecutionEnvironment env) throws ExecutionException { + public RunProfileState getState(@NotNull final Executor executor, @NotNull final ExecutionEnvironment env) { final JavaCommandLineState state = new JavaCommandLineState(env) { @Override protected JavaParameters createJavaParameters() { @@ -146,7 +145,7 @@ public class JavaExecutionUtil { } /** - * {@link JavaExecutionUtil#getPresentableClassName(java.lang.String)} + * {@link JavaExecutionUtil#getPresentableClassName(java.lang.String)} */ @Deprecated @Nullable diff --git a/java/java-impl/src/com/intellij/javadoc/JavadocGenerationManager.java b/java/java-impl/src/com/intellij/javadoc/JavadocGenerationManager.java index 4e7a0941acdf..927e95678724 100644 --- a/java/java-impl/src/com/intellij/javadoc/JavadocGenerationManager.java +++ b/java/java-impl/src/com/intellij/javadoc/JavadocGenerationManager.java @@ -18,11 +18,9 @@ package com.intellij.javadoc; import com.intellij.CommonBundle; import com.intellij.analysis.AnalysisScope; import com.intellij.execution.ExecutionException; -import com.intellij.execution.Executor; -import com.intellij.execution.RunnerRegistry; import com.intellij.execution.executors.DefaultRunExecutor; import com.intellij.execution.runners.ExecutionEnvironmentBuilder; -import com.intellij.execution.runners.ProgramRunner; +import com.intellij.execution.runners.ExecutionUtil; import com.intellij.execution.util.ExecutionErrorDialog; import com.intellij.openapi.components.*; import com.intellij.openapi.diagnostic.Logger; @@ -82,10 +80,7 @@ public final class JavadocGenerationManager implements PersistentStateComponent< public void generateJavadoc(AnalysisScope scope) { myConfiguration.setGenerationScope(scope); try { - final ProgramRunner runner = RunnerRegistry.getInstance().getRunner(DefaultRunExecutor.EXECUTOR_ID, myConfiguration); - assert runner != null; - Executor executor = DefaultRunExecutor.getRunExecutorInstance(); - runner.execute(new ExecutionEnvironmentBuilder(myProject, executor).runProfile(myConfiguration).build()); + ExecutionUtil.execute(ExecutionEnvironmentBuilder.create(myProject, DefaultRunExecutor.getRunExecutorInstance(), myConfiguration).build()); } catch (ExecutionException e) { ExecutionErrorDialog.show(e, CommonBundle.getErrorTitle(), myProject); 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 ae45632459aa..c2e8da97988f 100644 --- a/platform/lang-api/src/com/intellij/execution/runners/ExecutionEnvironmentBuilder.java +++ b/platform/lang-api/src/com/intellij/execution/runners/ExecutionEnvironmentBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2013 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. @@ -51,13 +51,28 @@ public final class ExecutionEnvironmentBuilder { @NotNull public static ExecutionEnvironmentBuilder create(@NotNull Project project, @NotNull Executor executor, @NotNull RunProfile runProfile) throws ExecutionException { - ProgramRunner runner = RunnerRegistry.getInstance().getRunner(executor.getId(), runProfile); - if (runner == null) { + ExecutionEnvironmentBuilder builder = createOrNull(project, executor, runProfile); + if (builder == null) { throw new ExecutionException("Cannot find runner for " + runProfile.getName()); } + return builder; + } + + @Nullable + public static ExecutionEnvironmentBuilder createOrNull(@NotNull Project project, @NotNull Executor executor, @NotNull RunProfile runProfile) { + ProgramRunner runner = RunnerRegistry.getInstance().getRunner(executor.getId(), runProfile); + if (runner == null) { + return null; + } return new ExecutionEnvironmentBuilder(project, executor).runner(runner).runProfile(runProfile); } + @Nullable + public static ExecutionEnvironmentBuilder createOrNull(@NotNull Executor executor, @NotNull RunnerAndConfigurationSettings settings) { + ExecutionEnvironmentBuilder builder = createOrNull(settings.getConfiguration().getProject(), executor, settings.getConfiguration()); + return builder == null ? null : builder.runnerAndSettings(builder.myRunner, settings); + } + @NotNull public static ExecutionEnvironmentBuilder create(@NotNull Executor executor, @NotNull RunnerAndConfigurationSettings settings) throws ExecutionException { ExecutionEnvironmentBuilder builder = create(settings.getConfiguration().getProject(), executor, settings.getConfiguration()); diff --git a/platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java b/platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java index 9ff501f7715a..30237d3106be 100644 --- a/platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java +++ b/platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java @@ -166,8 +166,12 @@ public class ExecutionUtil { } catch (ExecutionException e) { handleExecutionError(settings.getConfiguration().getProject(), executor.getToolWindowId(), settings.getConfiguration().getName(), e); - LOG.info(e); return null; } } + + public static void execute(@NotNull ExecutionEnvironment environment) throws ExecutionException { + //noinspection ConstantConditions + environment.getRunner().execute(environment); + } } diff --git a/platform/lang-impl/src/com/intellij/execution/ExecutorRegistryImpl.java b/platform/lang-impl/src/com/intellij/execution/ExecutorRegistryImpl.java index 06ecc022df97..201973b1b85b 100644 --- a/platform/lang-impl/src/com/intellij/execution/ExecutorRegistryImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/ExecutorRegistryImpl.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. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.intellij.execution; import com.intellij.execution.actions.RunContextAction; @@ -35,12 +34,8 @@ import org.jetbrains.annotations.Nullable; import java.util.*; -/** - * @author spleaner - */ public class ExecutorRegistryImpl extends ExecutorRegistry { - private static final Logger LOG = Logger.getInstance("#com.intellij.execution.ExecutorRegistryImpl"); - + private static final Logger LOG = Logger.getInstance(ExecutorRegistryImpl.class); @NonNls public static final String RUNNERS_GROUP = "RunnerActions"; @NonNls public static final String RUN_CONTEXT_GROUP = "RunContextGroup"; @@ -84,8 +79,7 @@ public class ExecutorRegistryImpl extends ExecutorRegistry { action = anAction; } - final DefaultActionGroup group = (DefaultActionGroup) myActionManager.getAction(groupId); - group.add(action); + ((DefaultActionGroup)myActionManager.getAction(groupId)).add(action); } synchronized void deinitExecutor(@NotNull final Executor executor) { @@ -189,15 +183,12 @@ public class ExecutorRegistryImpl extends ExecutorRegistry { @Override public synchronized void disposeComponent() { - if (myExecutors.size() > 0) { - List executors = new ArrayList(myExecutors); - for (Executor executor : executors) { + if (!myExecutors.isEmpty()) { + for (Executor executor : new ArrayList(myExecutors)) { deinitExecutor(executor); } - - myExecutors = null; } - + myExecutors = null; myActionManager = null; } @@ -250,25 +241,17 @@ public class ExecutorRegistryImpl extends ExecutorRegistry { @Override public void actionPerformed(final AnActionEvent e) { - final DataContext dataContext = e.getDataContext(); final Project project = e.getProject(); if (project == null || project.isDisposed()) { return; } - final RunnerAndConfigurationSettings configuration = getConfiguration(project); - if (configuration == null) { + + RunnerAndConfigurationSettings configuration = getConfiguration(project); + ExecutionEnvironmentBuilder builder = configuration == null ? null : ExecutionEnvironmentBuilder.createOrNull(myExecutor, configuration); + if (builder == null) { return; } - - ExecutionTarget target = ExecutionTargetManager.getActiveTarget(project); - ExecutionEnvironmentBuilder builder = new ExecutionEnvironmentBuilder(project, myExecutor); - ProgramRunner runner = ProgramRunnerUtil.getRunner(myExecutor.getId(), configuration); - if (runner == null) { - return; - } - - builder.dataContext(dataContext).target(target).runnerAndSettings(runner, configuration); - ExecutionManager.getInstance(project).restartRunProfile(builder.build()); + ExecutionManager.getInstance(project).restartRunProfile(builder.activeTarget().dataContext(e.getDataContext()).build()); } } } diff --git a/platform/lang-impl/src/com/intellij/execution/actions/ChooseRunConfigurationPopup.java b/platform/lang-impl/src/com/intellij/execution/actions/ChooseRunConfigurationPopup.java index 42dd4aff979c..a4764dae0036 100644 --- a/platform/lang-impl/src/com/intellij/execution/actions/ChooseRunConfigurationPopup.java +++ b/platform/lang-impl/src/com/intellij/execution/actions/ChooseRunConfigurationPopup.java @@ -399,7 +399,7 @@ public class ChooseRunConfigurationPopup implements ExecutorProvider { @Override public boolean available(Executor executor) { - return null != ProgramRunnerUtil.getRunner(executor.getId(), getValue()); + return ProgramRunnerUtil.getRunner(executor.getId(), getValue()) != null; } @Override 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 45b65a75a3cc..335b522e2eb6 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/ExecutionManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/ExecutionManagerImpl.java @@ -280,7 +280,6 @@ public class ExecutionManagerImpl extends ExecutionManager implements Disposable assert configuration != null; builder.runnerAndSettings(runner, configuration); } - return builder; } diff --git a/platform/lang-impl/src/com/intellij/execution/impl/ProjectRunConfigurationManager.java b/platform/lang-impl/src/com/intellij/execution/impl/ProjectRunConfigurationManager.java index deadaad0a0d1..42b9be79890e 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/ProjectRunConfigurationManager.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/ProjectRunConfigurationManager.java @@ -50,7 +50,7 @@ import java.util.Set; } ) public class ProjectRunConfigurationManager implements ProjectComponent, PersistentStateComponent { - private static final Logger LOG = Logger.getInstance("#com.intellij.execution.impl.ProjectRunConfigurationManager"); + private static final Logger LOG = Logger.getInstance(ProjectRunConfigurationManager.class); private final RunManagerImpl myManager; private List myUnloadedElements = null; @@ -150,7 +150,7 @@ public class ProjectRunConfigurationManager implements ProjectComponent, Persist } if (myUnloadedElements != null) { for (Element unloadedElement : myUnloadedElements) { - element.addContent((Element)unloadedElement.clone()); + element.addContent(unloadedElement.clone()); } } } diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurationBeforeRunProvider.java b/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurationBeforeRunProvider.java index edf1352a760c..97f36a8fd2b4 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurationBeforeRunProvider.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurationBeforeRunProvider.java @@ -23,6 +23,7 @@ import com.intellij.execution.process.ProcessAdapter; import com.intellij.execution.process.ProcessEvent; import com.intellij.execution.process.ProcessHandler; import com.intellij.execution.runners.ExecutionEnvironment; +import com.intellij.execution.runners.ExecutionEnvironmentBuilder; import com.intellij.execution.runners.ProgramRunner; import com.intellij.icons.AllIcons; import com.intellij.openapi.Disposable; @@ -137,7 +138,7 @@ extends BeforeRunTaskProvider getAvailableConfigurations(RunConfiguration runConfiguration) { + private static List getAvailableConfigurations(RunConfiguration runConfiguration) { Project project = runConfiguration.getProject(); if (project == null || !project.isInitialized()) return Collections.emptyList(); @@ -164,9 +165,7 @@ extends BeforeRunTaskProvider= 0; ) { final ProgramRunner runner = RunnerRegistry.getInstance().getRunner(executors[i].getId(), settings.getConfiguration()); - AnAction action = new ExecuteMavenRunConfigurationAction(executors[i], runner != null, project, settings); - addAction(action, Constraints.FIRST); } diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/actions/PreviewFormAction.java b/plugins/ui-designer/src/com/intellij/uiDesigner/actions/PreviewFormAction.java index 2d92d00a7c61..4c39d778ad3c 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/actions/PreviewFormAction.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/actions/PreviewFormAction.java @@ -26,6 +26,7 @@ import com.intellij.execution.process.ProcessAdapter; import com.intellij.execution.process.ProcessEvent; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.runners.ExecutionEnvironmentBuilder; +import com.intellij.execution.runners.ExecutionUtil; import com.intellij.execution.runners.ProgramRunner; import com.intellij.lang.properties.PropertiesFileType; import com.intellij.lang.properties.PropertiesReferenceManager; @@ -313,12 +314,9 @@ public final class PreviewFormAction extends AnAction{ } try { - final RunProfile profile = new MyRunProfile(module, parameters, tempPath, - UIDesignerBundle.message("progress.preview.started", formFile.getPresentableUrl())); - ProgramRunner defaultRunner = RunnerRegistry.getInstance().getRunner(DefaultRunExecutor.EXECUTOR_ID, profile); - LOG.assertTrue(defaultRunner != null); - Executor executor = DefaultRunExecutor.getRunExecutorInstance(); - defaultRunner.execute(new ExecutionEnvironmentBuilder(module.getProject(), executor).runProfile(profile).build()); + RunProfile profile = new MyRunProfile(module, parameters, tempPath, + UIDesignerBundle.message("progress.preview.started", formFile.getPresentableUrl())); + ExecutionUtil.execute(ExecutionEnvironmentBuilder.create(module.getProject(), DefaultRunExecutor.getRunExecutorInstance(), profile).build()); } catch (ExecutionException e) { Messages.showErrorDialog( diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/snapShooter/CreateSnapShotAction.java b/plugins/ui-designer/src/com/intellij/uiDesigner/snapShooter/CreateSnapShotAction.java index 284ce42ec867..09f7c2b51063 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/snapShooter/CreateSnapShotAction.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/snapShooter/CreateSnapShotAction.java @@ -16,12 +16,14 @@ package com.intellij.uiDesigner.snapShooter; -import com.intellij.execution.*; +import com.intellij.execution.ExecutionException; +import com.intellij.execution.RunManager; +import com.intellij.execution.RunnerAndConfigurationSettings; import com.intellij.execution.application.ApplicationConfiguration; import com.intellij.execution.application.ApplicationConfigurationType; import com.intellij.execution.executors.DefaultRunExecutor; -import com.intellij.execution.runners.ExecutionEnvironment; -import com.intellij.execution.runners.ProgramRunner; +import com.intellij.execution.runners.ExecutionEnvironmentBuilder; +import com.intellij.execution.runners.ExecutionUtil; import com.intellij.execution.util.JreVersionDetector; import com.intellij.icons.AllIcons; import com.intellij.ide.IdeView; @@ -168,13 +170,9 @@ public class CreateSnapShotAction extends AnAction { }); } }); - + try { - final ProgramRunner runner = RunnerRegistry.getInstance().getRunner(DefaultRunExecutor.EXECUTOR_ID, appConfig); - LOG.assertTrue(runner != null, "Runner MUST not be null!"); - Executor executor = DefaultRunExecutor.getRunExecutorInstance(); - runner.execute( - new ExecutionEnvironment(executor, runner, snapshotConfiguration, project)); + ExecutionUtil.execute(ExecutionEnvironmentBuilder.create(DefaultRunExecutor.getRunExecutorInstance(), snapshotConfiguration).build()); } catch (ExecutionException ex) { Messages.showMessageDialog(project, UIDesignerBundle.message("snapshot.run.error", ex.getMessage()), diff --git a/python/testSrc/com/jetbrains/env/ut/PyUnitTestTask.java b/python/testSrc/com/jetbrains/env/ut/PyUnitTestTask.java index 2a2edc97a404..01401ca1ca9a 100644 --- a/python/testSrc/com/jetbrains/env/ut/PyUnitTestTask.java +++ b/python/testSrc/com/jetbrains/env/ut/PyUnitTestTask.java @@ -8,6 +8,7 @@ import com.intellij.execution.process.ProcessAdapter; import com.intellij.execution.process.ProcessEvent; import com.intellij.execution.process.ProcessHandler; import com.intellij.execution.runners.ExecutionEnvironment; +import com.intellij.execution.runners.ExecutionEnvironmentBuilder; import com.intellij.execution.runners.ProgramRunner; import com.intellij.execution.testframework.Filter; import com.intellij.execution.testframework.sm.runner.SMTestProxy; @@ -82,6 +83,7 @@ public abstract class PyUnitTestTask extends PyExecutionFixtureTestTask { @Override public void tearDown() throws Exception { UIUtil.invokeAndWaitIfNeeded(new Runnable() { + @Override public void run() { try { if (mySetUp) { @@ -109,6 +111,7 @@ public abstract class PyUnitTestTask extends PyExecutionFixtureTestTask { ); } + @Override public void runTestOn(String sdkHome) throws Exception { final Project project = getProject(); final ConfigurationFactory factory = PythonTestConfigurationType.getInstance().PY_UNITTEST_FACTORY; @@ -141,19 +144,16 @@ public abstract class PyUnitTestTask extends PyExecutionFixtureTestTask { new WriteAction() { @Override - protected void run(Result result) throws Throwable { + protected void run(@NotNull Result result) throws Throwable { RunManagerEx.getInstanceEx(project).addConfiguration(settings, false); RunManagerEx.getInstanceEx(project).setSelectedConfiguration(settings); Assert.assertSame(settings, RunManagerEx.getInstanceEx(project).getSelectedConfiguration()); } }.execute(); - final ProgramRunner runner = ProgramRunnerUtil.getRunner(DefaultRunExecutor.EXECUTOR_ID, settings); - - Assert.assertTrue(runner.canRun(DefaultRunExecutor.EXECUTOR_ID, config)); - - final Executor executor = DefaultRunExecutor.getRunExecutorInstance(); - final ExecutionEnvironment env = new ExecutionEnvironment(executor, runner, settings, project); + final ExecutionEnvironment environment = ExecutionEnvironmentBuilder.create(DefaultRunExecutor.getRunExecutorInstance(), settings).build(); + //noinspection ConstantConditions + Assert.assertTrue(environment.getRunner().canRun(DefaultRunExecutor.EXECUTOR_ID, config)); before(); @@ -163,9 +163,10 @@ public abstract class PyUnitTestTask extends PyExecutionFixtureTestTask { myOutput = new StringBuilder(); UIUtil.invokeAndWaitIfNeeded(new Runnable() { + @Override public void run() { try { - runner.execute(env, new ProgramRunner.Callback() { + environment.getRunner().execute(environment, new ProgramRunner.Callback() { @Override public void processStarted(RunContentDescriptor descriptor) { myDescriptor = descriptor;