mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-202659 Impossible to start the Debug session for the Tomcat config with Ant/Bash configs in the Before launch
This commit is contained in:
+4
-1
@@ -164,7 +164,10 @@ extends BeforeRunTaskProvider<RunConfigurationBeforeRunProvider.RunConfigurableB
|
||||
public static boolean doExecuteTask(@NotNull final ExecutionEnvironment env,
|
||||
@NotNull final RunnerAndConfigurationSettings settings,
|
||||
@Nullable final ExecutionTarget target) {
|
||||
final Executor executor = env.getExecutor();
|
||||
// Here we fallback to default executor when the main one is not applicable for the task (for example 'debug')
|
||||
final Executor executor = RunManagerImpl.canRunConfiguration(settings, env.getExecutor())
|
||||
? env.getExecutor()
|
||||
: DefaultRunExecutor.getRunExecutorInstance();
|
||||
final String executorId = executor.getId();
|
||||
ExecutionEnvironmentBuilder builder = ExecutionEnvironmentBuilder.createOrNull(executor, settings);
|
||||
if (builder == null) {
|
||||
|
||||
+10
-2
@@ -11,8 +11,8 @@ import com.intellij.execution.ExecutorRegistry
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings
|
||||
import com.intellij.execution.configuration.PersistentAwareRunConfiguration
|
||||
import com.intellij.execution.configurations.*
|
||||
import com.intellij.execution.executors.DefaultRunExecutor
|
||||
import com.intellij.execution.runners.ProgramRunner
|
||||
import com.intellij.ide.plugins.PluginManagerCore
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.components.PathMacroManager
|
||||
import com.intellij.openapi.components.PersistentStateComponent
|
||||
@@ -318,12 +318,20 @@ class RunnerAndConfigurationSettingsImpl @JvmOverloads constructor(val manager:
|
||||
val runners = THashSet<ProgramRunner<*>>()
|
||||
runners.addAll(runnerSettings.settings.keys)
|
||||
runners.addAll(configurationPerRunnerSettings.settings.keys)
|
||||
var runnerFound = false
|
||||
for (runner in runners) {
|
||||
if (executor == null || runner.canRun(executor.id, configuration)) {
|
||||
val runnerWarning = doCheck { configuration.checkRunnerSettings(runner, runnerSettings.settings[runner], configurationPerRunnerSettings.settings[runner]) }
|
||||
if (warning == null && runnerWarning != null) warning = runnerWarning
|
||||
if (runnerWarning != null) {
|
||||
if (warning == null) warning = runnerWarning
|
||||
} else {
|
||||
runnerFound = true // there is at least one runner to run specified configuration
|
||||
}
|
||||
}
|
||||
}
|
||||
if (executor != null && executor != DefaultRunExecutor.getRunExecutorInstance() && !runnerFound) {
|
||||
throw RuntimeConfigurationError(executor.id + ": there are no runners for " + configuration)
|
||||
}
|
||||
if (executor != null) {
|
||||
val beforeRunWarning = doCheck { configuration.checkSettingsBeforeRun() }
|
||||
if (warning == null && beforeRunWarning != null) warning = beforeRunWarning
|
||||
|
||||
@@ -23,11 +23,16 @@ import com.intellij.execution.configurations.RunProfileState;
|
||||
import com.intellij.execution.process.ProcessHandler;
|
||||
import com.intellij.execution.runners.ExecutionEnvironment;
|
||||
import com.intellij.execution.runners.ProgramRunner;
|
||||
import com.intellij.execution.ui.ExecutionConsole;
|
||||
import com.intellij.lang.ant.config.AntBuildListener;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
public class AntRunProfileState implements RunProfileState {
|
||||
static final Key<AntBuildMessageView> MESSAGE_VIEW = Key.create("ANT_MESSAGE_VIEW");
|
||||
private final ExecutionEnvironment myEnvironment;
|
||||
|
||||
public AntRunProfileState(ExecutionEnvironment environment) {
|
||||
@@ -47,7 +52,23 @@ public class AntRunProfileState implements RunProfileState {
|
||||
if (processHandler == null) {
|
||||
return null;
|
||||
}
|
||||
return new DefaultExecutionResult(null, processHandler);
|
||||
|
||||
return new DefaultExecutionResult(new ExecutionConsole() {
|
||||
@Override
|
||||
public JComponent getComponent() {
|
||||
return processHandler.getUserData(MESSAGE_VIEW);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JComponent getPreferredFocusableComponent() {
|
||||
return processHandler.getUserData(MESSAGE_VIEW);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
processHandler.putUserData(MESSAGE_VIEW, null);
|
||||
}
|
||||
}, processHandler);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package com.intellij.lang.ant.config.execution;
|
||||
|
||||
import com.intellij.execution.ExecutionException;
|
||||
import com.intellij.execution.ExecutionResult;
|
||||
import com.intellij.execution.configurations.RunProfile;
|
||||
import com.intellij.execution.configurations.RunProfileState;
|
||||
import com.intellij.execution.executors.DefaultRunExecutor;
|
||||
@@ -33,8 +34,11 @@ public class AntRunner extends GenericProgramRunner {
|
||||
@Override
|
||||
protected RunContentDescriptor doExecute(@NotNull RunProfileState state, @NotNull ExecutionEnvironment environment) throws ExecutionException {
|
||||
FileDocumentManager.getInstance().saveAllDocuments();
|
||||
state.execute(environment.getExecutor(), this);
|
||||
return null;
|
||||
ExecutionResult executionResult = state.execute(environment.getExecutor(), this);
|
||||
if (executionResult == null) {
|
||||
return null;
|
||||
}
|
||||
return new RunContentDescriptor(executionResult.getExecutionConsole(), executionResult.getProcessHandler(), executionResult.getExecutionConsole().getComponent(), environment.getRunProfile().getName());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -228,6 +228,7 @@ public final class ExecutionHandler {
|
||||
|
||||
final OutputParser parser = OutputParser2.attachParser(project, handler, errorView, progress, buildFile);
|
||||
|
||||
handler.putUserData(AntRunProfileState.MESSAGE_VIEW, errorView);
|
||||
handler.addProcessListener(new ProcessAdapter() {
|
||||
private final StringBuilder myUnprocessedStdErr = new StringBuilder();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user