Skip to content

Commit 0b7c8d1

Browse files
config.getBeforeRunTasks() may return a readonly list.
1 parent f4f0686 commit 0b7c8d1

File tree

1 file changed

+12
-6
lines changed
  • PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-resource-connector-lib-java/src/main/java/com/microsoft/azure/toolkit/intellij/connector/dotazure

1 file changed

+12
-6
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-resource-connector-lib-java/src/main/java/com/microsoft/azure/toolkit/intellij/connector/dotazure/BeforeRunTaskAdder.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@
1616

1717
import javax.annotation.Nonnull;
1818
import 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

2125
public 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

Comments
 (0)