get rid of DataContext in ExecutionEnvironment

This commit is contained in:
nik
2010-06-03 11:49:16 +04:00
parent 353a5c8f80
commit b3b20f7dd5
16 changed files with 69 additions and 53 deletions
@@ -99,7 +99,8 @@ public class AbstractRerunFailedTestsAction extends AnAction {
final Executor executor = isDebug ? DefaultDebugExecutor.getDebugExecutorInstance() : DefaultRunExecutor.getRunExecutorInstance();
final ProgramRunner runner = RunnerRegistry.getInstance().getRunner(executor.getId(), profile);
assert runner != null;
runner.execute(executor, new ExecutionEnvironment(profile, myRunnerSettings, myConfigurationPerRunnerSettings, dataContext));
runner.execute(executor, new ExecutionEnvironment(profile, profile.getProject(), myRunnerSettings, myConfigurationPerRunnerSettings,
null));
}
catch (ExecutionException e1) {
LOG.error(e1);
@@ -54,7 +54,7 @@ public class JavaExecutionUtil {
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(DefaultRunExecutor.getRunExecutorInstance(), new ExecutionEnvironment(profile, dataContext));
runner.execute(DefaultRunExecutor.getRunExecutorInstance(), new ExecutionEnvironment(profile, project, null, null, null));
return true;
}
@@ -23,7 +23,6 @@ import com.intellij.execution.executors.DefaultRunExecutor;
import com.intellij.execution.runners.ExecutionEnvironment;
import com.intellij.execution.runners.ProgramRunner;
import com.intellij.execution.util.ExecutionErrorDialog;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.components.AbstractProjectComponent;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.InvalidDataException;
@@ -61,12 +60,12 @@ public final class JavadocGenerationManager extends AbstractProjectComponent imp
return myConfiguration;
}
public void generateJavadoc(AnalysisScope scope, DataContext dataContext) {
public void generateJavadoc(AnalysisScope scope) {
myConfiguration.setGenerationScope(scope);
try {
final ProgramRunner runner = RunnerRegistry.getInstance().getRunner(DefaultRunExecutor.EXECUTOR_ID, myConfiguration);
assert runner != null;
runner.execute(DefaultRunExecutor.getRunExecutorInstance(), new ExecutionEnvironment(myConfiguration, dataContext));
runner.execute(DefaultRunExecutor.getRunExecutorInstance(), new ExecutionEnvironment(myConfiguration, myProject, null, null, null));
}
catch (ExecutionException e) {
ExecutionErrorDialog.show(e, CommonBundle.getErrorTitle(), myProject);
@@ -18,7 +18,6 @@ package com.intellij.javadoc.actions;
import com.intellij.analysis.AnalysisScope;
import com.intellij.analysis.BaseAnalysisAction;
import com.intellij.analysis.BaseAnalysisActionDialog;
import com.intellij.ide.DataManager;
import com.intellij.javadoc.JavadocBundle;
import com.intellij.javadoc.JavadocConfigurable;
import com.intellij.javadoc.JavadocGenerationManager;
@@ -37,7 +36,7 @@ public final class GenerateJavadocAction extends BaseAnalysisAction{
@Override
protected void analyze(@NotNull Project project, AnalysisScope scope) {
myConfigurable.apply();
JavadocGenerationManager.getInstance(project).generateJavadoc(scope, DataManager.getInstance().getDataContext());
JavadocGenerationManager.getInstance(project).generateJavadoc(scope);
dispose();
}
@@ -27,6 +27,7 @@ import com.intellij.execution.ui.RunContentDescriptor;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.TestOnly;
@@ -35,31 +36,61 @@ import org.jetbrains.annotations.TestOnly;
* @author spleaner
*/
public class ExecutionEnvironment {
private DataContext myDataContext;
private final Project myProject;
private final RunContentDescriptor myContentToReuse;
private RunProfile myRunProfile;
private RunnerSettings myRunnerSettings;
private ConfigurationPerRunnerSettings myConfigurationSettings;
@TestOnly
public ExecutionEnvironment() {
myProject = null;
myContentToReuse = null;
}
public ExecutionEnvironment(@NotNull final ProgramRunner runner,
@NotNull final RunnerAndConfigurationSettings configuration,
Project project) {
this(configuration.getConfiguration(), project, configuration.getRunnerSettings(runner), configuration.getConfigurationSettings(runner),
null);
}
public ExecutionEnvironment(@NotNull RunProfile runProfile,
Project project,
RunnerSettings runnerSettings,
ConfigurationPerRunnerSettings configurationSettings, @Nullable RunContentDescriptor contentToReuse) {
myRunProfile = runProfile;
myRunnerSettings = runnerSettings;
myConfigurationSettings = configurationSettings;
myProject = project;
myContentToReuse = contentToReuse;
}
/**
* @deprecated use {@link #ExecutionEnvironment(ProgramRunner, com.intellij.execution.RunnerAndConfigurationSettings, com.intellij.openapi.project.Project)}
*/
@Deprecated
public ExecutionEnvironment(@NotNull final ProgramRunner runner, @NotNull final RunnerAndConfigurationSettings configuration, final DataContext context) {
this(configuration.getConfiguration(), configuration.getRunnerSettings(runner), configuration.getConfigurationSettings(runner), context);
this(configuration.getConfiguration(), PlatformDataKeys.PROJECT.getData(context), configuration.getRunnerSettings(runner), configuration.getConfigurationSettings(runner), null);
}
/**
* @deprecated use {@link #ExecutionEnvironment(com.intellij.execution.configurations.RunProfile, com.intellij.openapi.project.Project, com.intellij.execution.configurations.RunnerSettings, com.intellij.execution.configurations.ConfigurationPerRunnerSettings, com.intellij.execution.ui.RunContentDescriptor)}
*/
@Deprecated
public ExecutionEnvironment(@NotNull final RunProfile profile, final DataContext dataContext) {
myRunProfile = profile;
myDataContext = dataContext;
this(profile, PlatformDataKeys.PROJECT.getData(dataContext), null, null, null);
}
/**
* @deprecated use {@link #ExecutionEnvironment(com.intellij.execution.configurations.RunProfile, com.intellij.openapi.project.Project, com.intellij.execution.configurations.RunnerSettings, com.intellij.execution.configurations.ConfigurationPerRunnerSettings, com.intellij.execution.ui.RunContentDescriptor)}
*/
@Deprecated
public ExecutionEnvironment(@NotNull final RunProfile runProfile,
final RunnerSettings runnerSettings,
final ConfigurationPerRunnerSettings configurationSettings,
final DataContext dataContext) {
this(runProfile, dataContext);
myRunnerSettings = runnerSettings;
myConfigurationSettings = configurationSettings;
this(runProfile, PlatformDataKeys.PROJECT.getData(dataContext), runnerSettings, configurationSettings, null);
}
@NotNull
@@ -69,17 +100,24 @@ public class ExecutionEnvironment {
@Nullable
public Project getProject() {
return PlatformDataKeys.PROJECT.getData(myDataContext);
return myProject;
}
/**
* @deprecated use {@link #getProject()} and {@link #getContentToReuse()}
*/
@Deprecated
public DataContext getDataContext() {
return myDataContext;
return new DataContext() {
public Object getData(@NonNls String dataId) {
return PlatformDataKeys.PROJECT.is(dataId) ? myProject : null;
}
};
}
@Nullable
public RunContentDescriptor getContentToReuse() {
return GenericProgramRunner.CONTENT_TO_REUSE_DATA_KEY.getData(myDataContext);
return myContentToReuse;
}
@Nullable
@@ -20,7 +20,6 @@ import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.execution.configurations.RuntimeConfigurationException;
import com.intellij.execution.impl.RunDialog;
import com.intellij.execution.impl.RunManagerImpl;
import com.intellij.execution.impl.RunnerAndConfigurationSettingsImpl;
import com.intellij.execution.runners.ExecutionEnvironment;
import com.intellij.execution.runners.ExecutionUtil;
import com.intellij.execution.runners.ProgramRunner;
@@ -75,7 +74,7 @@ public class ProgramRunnerUtil {
}
try {
runner.execute(executor, new ExecutionEnvironment(runner, configuration, dataContext));
runner.execute(executor, new ExecutionEnvironment(runner, configuration, project));
}
catch (ExecutionException e) {
ExecutionUtil.handleExecutionError(project, configuration.getConfiguration(), e);
@@ -47,7 +47,7 @@ public class RunContextAction extends BaseRunConfigurationAction {
final ProgramRunner runner = getRunner(configuration.getConfiguration());
if (runner != null) {
try {
runner.execute(myExecutor, new ExecutionEnvironment(runner, configuration, context.getDataContext()));
runner.execute(myExecutor, new ExecutionEnvironment(runner, configuration, context.getProject()));
}
catch (ExecutionException e) {
Messages.showErrorDialog(context.getProject(), e.getMessage(), ExecutionBundle.message("error.common.title"));
@@ -60,12 +60,8 @@ public class RestartAction extends AnAction implements DumbAware {
final Project project = PlatformDataKeys.PROJECT.getData(dataContext);
try {
final ExecutionEnvironment old = myEnvironment;
myRunner.execute(myExecutor, new ExecutionEnvironment(old.getRunProfile(), old.getRunnerSettings(), old.getConfigurationSettings(), new DataContext() {
public Object getData(final String dataId) {
if (GenericProgramRunner.CONTENT_TO_REUSE_DATA_KEY.is(dataId)) return myDescriptor;
return dataContext.getData(dataId);
}
}));
myRunner.execute(myExecutor, new ExecutionEnvironment(old.getRunProfile(), project, old.getRunnerSettings(),
old.getConfigurationSettings(), myDescriptor));
}
catch (RunCanceledByUserException ignore) {
}
@@ -243,7 +243,7 @@ public class Tool implements SchemeElement {
final ProgramRunner runner = RunnerRegistry.getInstance().getRunner(DefaultRunExecutor.EXECUTOR_ID, profile);
assert runner != null;
runner.execute(new DefaultRunExecutor(), new ExecutionEnvironment(profile, dataContext));
runner.execute(new DefaultRunExecutor(), new ExecutionEnvironment(profile, project, null, null, null));
}
else {
GeneralCommandLine commandLine = createCommandLine(dataContext);
@@ -15,7 +15,6 @@ import com.intellij.execution.process.ProcessOutputTypes;
import com.intellij.execution.runners.ExecutionEnvironment;
import com.intellij.execution.runners.ProgramRunner;
import com.intellij.execution.ui.RunContentDescriptor;
import com.intellij.ide.DataManager;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ModalityState;
@@ -186,8 +185,8 @@ public abstract class GroovyCompilerTestCase extends JavaCodeInsightFixtureTestC
configuration.setModule(module);
configuration.setMainClassName(className);
final DefaultRunExecutor extension = Executor.EXECUTOR_EXTENSION_NAME.findExtension(DefaultRunExecutor.class);
final ExecutionEnvironment environment = new ExecutionEnvironment(configuration, new RunnerSettings<JDOMExternalizable>(null, null),null, DataManager
.getInstance().getDataContext());
final ExecutionEnvironment environment = new ExecutionEnvironment(configuration, getProject(),
new RunnerSettings<JDOMExternalizable>(null, null), null, null);
final DefaultJavaProgramRunner runner = ProgramRunner.PROGRAM_RUNNER_EP.findExtension(DefaultJavaProgramRunner.class);
final StringBuffer sb = new StringBuffer();
final Semaphore semaphore = new Semaphore();
@@ -24,7 +24,6 @@ import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.execution.executors.DefaultRunExecutor;
import com.intellij.execution.runners.ExecutionEnvironment;
import com.intellij.execution.runners.ProgramRunner;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.IconLoader;
import com.intellij.openapi.util.Key;
@@ -148,18 +147,16 @@ public class MavenRunConfigurationType implements ConfigurationType {
public static void runConfiguration(Project project,
MavenRunnerParameters params,
DataContext dataContext,
@Nullable ProgramRunner.Callback callback) {
MavenGeneralSettings settings = MavenProjectsManager.getInstance(project).getGeneralSettings();
MavenRunnerSettings runnerSettings = MavenRunner.getInstance(project).getState();
runConfiguration(project, params, settings, runnerSettings, dataContext, callback);
runConfiguration(project, params, settings, runnerSettings, callback);
}
public static void runConfiguration(Project project,
MavenRunnerParameters params,
MavenGeneralSettings settings,
MavenRunnerSettings runnerSettings,
DataContext context,
@Nullable ProgramRunner.Callback callback) {
RunnerAndConfigurationSettings configSettings = createRunnerAndConfigurationSettings(settings,
runnerSettings,
@@ -167,7 +164,7 @@ public class MavenRunConfigurationType implements ConfigurationType {
project);
ProgramRunner runner = RunnerRegistry.getInstance().findRunnerById(DefaultRunExecutor.EXECUTOR_ID);
ExecutionEnvironment env = new ExecutionEnvironment(runner, configSettings, context);
ExecutionEnvironment env = new ExecutionEnvironment(runner, configSettings, project);
Executor executor = DefaultRunExecutor.getRunExecutorInstance();
try {
@@ -50,7 +50,7 @@ public class RunBuildAction extends MavenAction {
project.getDirectory(),
goals,
MavenActionUtil.getProjectsManager(context).getExplicitProfiles());
MavenRunConfigurationType.runConfiguration(MavenActionUtil.getProject(context), params, context, null);
MavenRunConfigurationType.runConfiguration(MavenActionUtil.getProject(context), params, null);
return true;
}
@@ -25,7 +25,6 @@ import com.intellij.openapi.util.Pair;
import org.jetbrains.annotations.TestOnly;
import org.jetbrains.idea.maven.execution.MavenRunConfigurationType;
import org.jetbrains.idea.maven.execution.MavenRunnerParameters;
import org.jetbrains.idea.maven.facade.MavenEmbedderWrapper;
import org.jetbrains.idea.maven.model.MavenConstants;
import org.jetbrains.idea.maven.model.MavenPlugin;
import org.jetbrains.idea.maven.project.MavenProject;
@@ -185,7 +184,7 @@ public class MavenKeymapExtension implements KeymapExtension {
myMavenProject.getDirectory(),
Arrays.asList(myGoal),
MavenActionUtil.getProjectsManager(context).getExplicitProfiles());
MavenRunConfigurationType.runConfiguration(MavenActionUtil.getProject(context), params, context, null);
MavenRunConfigurationType.runConfiguration(MavenActionUtil.getProject(context), params, null);
}
public MavenProject getMavenProject() {
@@ -19,11 +19,9 @@ import com.intellij.execution.process.ProcessAdapter;
import com.intellij.execution.process.ProcessEvent;
import com.intellij.execution.runners.ProgramRunner;
import com.intellij.execution.ui.RunContentDescriptor;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.application.Result;
import com.intellij.openapi.application.WriteAction;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.testFramework.MapDataContext;
import com.intellij.util.concurrency.Semaphore;
import org.jetbrains.idea.maven.MavenImportingTestCase;
@@ -95,11 +93,9 @@ public class MavenExecutionTest extends MavenImportingTestCase {
private void execute(MavenRunnerParameters params) {
final Semaphore sema = new Semaphore();
sema.down();
MapDataContext context = new MapDataContext();
context.put(PlatformDataKeys.PROJECT, myProject);
MavenRunConfigurationType.runConfiguration(myProject, params, getMavenGeneralSettings(),
new MavenRunnerSettings(),
context, new ProgramRunner.Callback() {
new ProgramRunner.Callback() {
public void processStarted(final RunContentDescriptor descriptor) {
descriptor.getProcessHandler().addProcessListener(new ProcessAdapter() {
@Override
@@ -30,7 +30,6 @@ import com.intellij.lang.properties.psi.PropertiesFile;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.compiler.CompileContext;
import com.intellij.openapi.compiler.CompileStatusNotification;
@@ -292,14 +291,8 @@ public final class PreviewFormAction extends AnAction{
final RunProfile profile = new MyRunProfile(module, parameters, UIDesignerBundle.message("progress.preview.started", formFile.getPresentableUrl()));
ProgramRunner defaultRunner = RunnerRegistry.getInstance().getRunner(DefaultRunExecutor.EXECUTOR_ID, profile);
LOG.assertTrue(defaultRunner != null);
defaultRunner.execute(DefaultRunExecutor.getRunExecutorInstance(), new ExecutionEnvironment(profile, new DataContext() { // IDEADEV-3596
public Object getData(String dataId) {
if (PlatformDataKeys.PROJECT.is(dataId)) {
return module.getProject();
}
return dataContext.getData(dataId);
}
}));
defaultRunner.execute(DefaultRunExecutor.getRunExecutorInstance(), new ExecutionEnvironment(profile, module.getProject(), null, null,
null));
}
catch (ExecutionException e) {
Messages.showErrorDialog(
@@ -174,7 +174,7 @@ public class CreateSnapShotAction extends AnAction {
final ProgramRunner runner = RunnerRegistry.getInstance().getRunner(DefaultRunExecutor.EXECUTOR_ID, appConfig);
LOG.assertTrue(runner != null, "Runner MUST not be null!");
runner.execute(DefaultRunExecutor.getRunExecutorInstance(),
new ExecutionEnvironment(runner, snapshotConfiguration, e.getDataContext()));
new ExecutionEnvironment(runner, snapshotConfiguration, project));
}
catch (ExecutionException ex) {
Messages.showMessageDialog(project, UIDesignerBundle.message("snapshot.run.error", ex.getMessage()),