From a0b765115f4ffbd7a7bc4cafbc774e308fea1ddd Mon Sep 17 00:00:00 2001 From: Vassiliy Kudryashov Date: Wed, 25 Apr 2012 15:57:06 +0400 Subject: [PATCH] IDEA-79934 Run Configurations: Ability to specify another Run configuration as a 'before run' task Fixes about ConcurrentModificationException and wrong behavior on "before launch" steps removing --- .../src/com/intellij/execution/impl/RunManagerImpl.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.java b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.java index f5b7eea5f973..151c9307cb83 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.java @@ -712,7 +712,8 @@ public class RunManagerImpl extends RunManagerEx implements JDOMExternalizable, final List tasks = new ArrayList(); if (includeOnlyActiveTasks) { final List checkedTemplates = new ArrayList(); - for (RunnerAndConfigurationSettings settings : myConfigurations.values()) { + List settingsList = new ArrayList(myConfigurations.values()); + for (RunnerAndConfigurationSettings settings : settingsList) { final List runTasks = getBeforeRunTasks(settings.getConfiguration()); for (BeforeRunTask task : runTasks) { if (task != null && task.isEnabled() && task.getProviderId() == taskProviderID) { @@ -822,7 +823,10 @@ public class RunManagerImpl extends RunManagerEx implements JDOMExternalizable, if (tasks != null) { return getCopies(tasks, includeOnlyActiveTasks); } + return getTemplateBeforeRunTask(settings, includeOnlyActiveTasks); + } + private List getTemplateBeforeRunTask(RunConfiguration settings, boolean includeOnlyActiveTasks) { final RunnerAndConfigurationSettings template = getConfigurationTemplate(settings.getFactory()); final List templateTasks = myConfigurationToBeforeTasksMap.get(template.getConfiguration()); if (templateTasks != null) { @@ -868,7 +872,7 @@ public class RunManagerImpl extends RunManagerEx implements JDOMExternalizable, } public final void setBeforeRunTasks(final RunConfiguration runConfiguration, List tasks) { - List templates = getBeforeRunTasks(runConfiguration);//here may be some disabled templates + List templates = getTemplateBeforeRunTask(runConfiguration, false); Set> idsToSet = new HashSet>(); List result = new ArrayList(tasks); for (BeforeRunTask task : tasks) {