simplify API — ExecutionEnvironment is enough

This commit is contained in:
Vladimir Krivosheev
2014-08-08 12:56:06 +02:00
parent 453fd55d66
commit 92a3a2b490
7 changed files with 32 additions and 26 deletions
@@ -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);
@@ -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
/**
@@ -51,7 +51,8 @@ public abstract class GenericProgramRunner<Settings extends RunnerSettings> 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;
@@ -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);
@@ -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);
}
}
@@ -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<AnAction> myRunnerActions = new ArrayList<AnAction>();
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);
@@ -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