BuildArtifactsBeforeRunTaskProvider must not assume that returned before run tasks list is mutable

This commit is contained in:
Vladimir Krivosheev
2017-04-10 21:22:26 +02:00
parent 8794e12aa9
commit f85c22eecf
@@ -31,6 +31,7 @@ import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.util.ArrayList;
import java.util.List;
/**
@@ -93,11 +94,11 @@ public class BuildArtifactsBeforeRunTaskProvider extends BuildArtifactsBeforeRun
public static void setBuildArtifactBeforeRun(@NotNull Project project, @NotNull RunConfiguration configuration, @NotNull Artifact artifact) {
RunManagerEx runManager = RunManagerEx.getInstanceEx(project);
final List<BuildArtifactsBeforeRunTask> buildArtifactsTasks = runManager.getBeforeRunTasks(configuration, ID);
if (buildArtifactsTasks.isEmpty()) { //Add new task if absent
final List<BuildArtifactsBeforeRunTask> buildArtifactsTasks = new ArrayList<>(runManager.getBeforeRunTasks(configuration, ID));
if (runManager.getBeforeRunTasks(configuration, ID).isEmpty()) { //Add new task if absent
BuildArtifactsBeforeRunTask task = new BuildArtifactsBeforeRunTask(project);
buildArtifactsTasks.add(task);
List<BeforeRunTask> tasks = runManager.getBeforeRunTasks(configuration);
List<BeforeRunTask> tasks = new ArrayList<>(runManager.getBeforeRunTasks(configuration));
tasks.add(task);
runManager.setBeforeRunTasks(configuration, tasks);
}