1616
1717import javax .annotation .Nonnull ;
1818import javax .annotation .Nullable ;
19- import java .util .*;
19+ import java .util .ArrayList ;
20+ import java .util .Collections ;
21+ import java .util .List ;
22+ import java .util .Objects ;
23+ import java .util .Optional ;
2024
2125public class BeforeRunTaskAdder implements RunManagerListener , ConnectionTopics .ConnectionChanged , IWebAppRunConfiguration .ModuleChangedListener {
2226 @ Override
@@ -28,11 +32,12 @@ public void runConfigurationAdded(@Nonnull RunnerAndConfigurationSettings settin
2832 return ;
2933 }
3034 final List <Connection <?, ?>> connections = profile .getConnections ();
31- final List <BeforeRunTask <?>> tasks = config .getBeforeRunTasks ();
35+ final List <BeforeRunTask <?>> tasks = new ArrayList <>( config .getBeforeRunTasks () );
3236 tasks .removeIf (t -> t instanceof DotEnvBeforeRunTaskProvider .LoadDotEnvBeforeRunTask );
3337 if (connections .stream ().anyMatch (c -> c .isApplicableFor (config ))) {
34- config . getBeforeRunTasks () .add (new DotEnvBeforeRunTaskProvider .LoadDotEnvBeforeRunTask (config ));
38+ tasks .add (new DotEnvBeforeRunTaskProvider .LoadDotEnvBeforeRunTask (config ));
3539 }
40+ config .setBeforeRunTasks (tasks );
3641 }
3742
3843 @ Override
@@ -42,7 +47,7 @@ public void connectionChanged(Project project, Connection<?, ?> connection, Conn
4247 final RunManagerEx rm = RunManagerEx .getInstanceEx (project );
4348 final List <RunConfiguration > configurations = rm .getAllConfigurationsList ();
4449 for (final RunConfiguration config : configurations ) {
45- final List <BeforeRunTask <?>> tasks = config .getBeforeRunTasks ();
50+ final List <BeforeRunTask <?>> tasks = new ArrayList <>( config .getBeforeRunTasks () );
4651 if (change == ConnectionTopics .Action .ADD ) {
4752 if (connection .isApplicableFor (config ) && tasks .stream ().noneMatch (t -> t instanceof DotEnvBeforeRunTaskProvider .LoadDotEnvBeforeRunTask )) {
4853 tasks .add (new DotEnvBeforeRunTaskProvider .LoadDotEnvBeforeRunTask (config ));
@@ -56,6 +61,7 @@ public void connectionChanged(Project project, Connection<?, ?> connection, Conn
5661 tasks .removeIf (t -> t instanceof DotEnvBeforeRunTaskProvider .LoadDotEnvBeforeRunTask );
5762 }
5863 }
64+ config .setBeforeRunTasks (tasks );
5965 }
6066 }
6167
@@ -70,10 +76,10 @@ public void artifactMayChanged(@Nonnull RunConfiguration config, @Nullable Confi
7076 Optional .ofNullable (editor ).ifPresent (e -> BuildArtifactBeforeRunTaskUtils .removeTasks (e , (t ) -> t instanceof DotEnvBeforeRunTaskProvider .LoadDotEnvBeforeRunTask ));
7177 tasks .removeIf (t -> t instanceof DotEnvBeforeRunTaskProvider .LoadDotEnvBeforeRunTask );
7278 if (connections .stream ().anyMatch (c -> c .isApplicableFor (config ))) {
73- final List <BeforeRunTask > newTasks = new ArrayList <>(tasks );
79+ final List <BeforeRunTask <?> > newTasks = new ArrayList <>(tasks );
7480 final DotEnvBeforeRunTaskProvider .LoadDotEnvBeforeRunTask task = new DotEnvBeforeRunTaskProvider .LoadDotEnvBeforeRunTask (config );
7581 newTasks .add (task );
76- RunManagerEx . getInstanceEx ( config .getProject ()). setBeforeRunTasks (config , newTasks );
82+ config .setBeforeRunTasks (newTasks );
7783 Optional .ofNullable (editor ).ifPresent (e -> e .addBeforeLaunchStep (task ));
7884 }
7985 }
0 commit comments