Skip to content

Commit e82ae38

Browse files
Merge pull request #7667 from microsoft/hanli/fixes-202306
Get environment variables from connection directly in azure connectio…
2 parents a3ae27c + 02190d5 commit e82ae38

File tree

4 files changed

+30
-23
lines changed

4 files changed

+30
-23
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ public class DotEnvRunConfigurationExtension extends RunConfigurationExtension {
1616
@ExceptionNotification
1717
@AzureOperation(name = "platform/connector.inject_env.config", params = {"config.getName()"})
1818
public <T extends RunConfigurationBase<?>> void updateJavaParameters(@Nonnull T config, @Nonnull JavaParameters params, RunnerSettings s) {
19-
AzureTaskManager.getInstance().runLater(() -> config.getBeforeRunTasks().stream()
19+
config.getBeforeRunTasks().stream()
2020
.filter(t -> t instanceof DotEnvBeforeRunTaskProvider.LoadDotEnvBeforeRunTask)
2121
.map(t -> (DotEnvBeforeRunTaskProvider.LoadDotEnvBeforeRunTask) t)
2222
.flatMap(t -> t.loadEnv().stream())
23-
.forEach(p -> params.addEnv(p.getKey(), p.getValue())));
23+
.forEach(p -> params.addEnv(p.getKey(), p.getValue()));
2424
}
2525

2626
@Override

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,11 +171,11 @@ private void saveConnectionToDotAzure(Connection<?, ?> connection) {
171171
if (Objects.nonNull(m)) {
172172
final AzureModule module = AzureModule.from(m);
173173
final AzureTaskManager taskManager = AzureTaskManager.getInstance();
174-
taskManager.write(() -> {
174+
taskManager.runLater(() -> taskManager.write(() -> {
175175
final Profile profile = module.initializeWithDefaultProfileIfNot();
176176
this.future = profile.createOrUpdateConnection(connection);
177177
profile.save();
178-
});
178+
}));
179179
}
180180
}
181181
}

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

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.google.common.util.concurrent.Futures;
99
import com.intellij.ide.projectView.ProjectView;
1010
import com.intellij.ide.util.PropertiesComponent;
11+
import com.google.common.util.concurrent.SettableFuture;
1112
import com.intellij.openapi.actionSystem.AnActionEvent;
1213
import com.intellij.openapi.module.Module;
1314
import com.intellij.openapi.module.ModuleManager;
@@ -21,6 +22,7 @@
2122
import com.microsoft.azure.toolkit.lib.common.action.AzureActionManager;
2223
import com.microsoft.azure.toolkit.lib.common.bundle.AzureString;
2324
import com.microsoft.azure.toolkit.lib.common.event.AzureEventBus;
25+
import com.microsoft.azure.toolkit.lib.common.exception.AzureToolkitRuntimeException;
2426
import com.microsoft.azure.toolkit.lib.common.messager.AzureMessager;
2527
import com.microsoft.azure.toolkit.lib.common.operation.AzureOperation;
2628
import com.microsoft.azure.toolkit.lib.common.task.AzureTaskManager;
@@ -30,6 +32,7 @@
3032
import java.util.List;
3133
import java.util.Objects;
3234
import java.util.Optional;
35+
import java.util.concurrent.ExecutionException;
3336
import java.util.concurrent.Future;
3437
import java.util.stream.Collectors;
3538
import java.util.stream.Stream;
@@ -173,9 +176,9 @@ public void registerActions(AzureActionManager am) {
173176
.register(am);
174177
}
175178

176-
public static Future<?> fixResourceConnection(Connection<?, ?> c, Project project) {
177-
final Future<?>[] result = new Future<?>[1];
178-
AzureTaskManager.getInstance().runAndWait(() -> {
179+
public static Connection<?, ?> fixResourceConnection(Connection<?, ?> c, Project project) {
180+
final SettableFuture<Connection<?, ?>> result = SettableFuture.create();
181+
AzureTaskManager.getInstance().runLater(() -> {
179182
final String invalidResourceName = c.getResource().isValidResource() ? null : c.getResource().getDefinition().getTitle();
180183
final String invalidConsumerName = c.getConsumer().isValidResource() ? null : c.getConsumer().getDefinition().getTitle();
181184
final String invalidProperties = Stream.of(invalidResourceName, invalidConsumerName)
@@ -187,10 +190,17 @@ public static Future<?> fixResourceConnection(Connection<?, ?> c, Project projec
187190
dialog.setFixedEnvPrefix(c.getEnvPrefix());
188191
dialog.setFixedConnectionDefinition(c.getDefinition());
189192
dialog.setValue(c);
190-
dialog.show();
191-
result[0] = dialog.getFuture();
193+
if (dialog.showAndGet()) {
194+
result.set(dialog.getValue());
195+
} else {
196+
result.set(null);
197+
}
192198
});
193-
return Optional.ofNullable(result[0]).orElse(Futures.immediateFuture(null));
199+
try {
200+
return result.get();
201+
} catch (InterruptedException | ExecutionException | RuntimeException e) {
202+
throw new AzureToolkitRuntimeException(e);
203+
}
194204
}
195205

196206
private void refreshModuleConnections(AzureModule module) {

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

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,7 @@
3939
import javax.annotation.Nullable;
4040
import javax.swing.*;
4141
import java.nio.file.Path;
42-
import java.util.Collections;
43-
import java.util.List;
44-
import java.util.Objects;
45-
import java.util.Optional;
42+
import java.util.*;
4643
import java.util.stream.Collectors;
4744

4845
/**
@@ -134,20 +131,20 @@ public LoadDotEnvBeforeRunTask(RunConfiguration configuration) {
134131
public List<Pair<String, String>> loadEnv() {
135132
final AzureModule azureModule = AzureModule.createIfSupport(this.config).orElse(null);
136133
final Project project = Optional.ofNullable(azureModule).map(AzureModule::getProject).orElse(null);
137-
final List<Completable> completables = Optional.ofNullable(azureModule).map(AzureModule::getDefaultProfile)
134+
final List<Pair<String, String>> exists = Optional.ofNullable(this.file)
135+
.or(() -> AzureModule.createIfSupport(this.config).map(AzureModule::getDefaultProfile).map(Profile::getDotEnvFile))
136+
.map(Profile::load)
137+
.orElse(Collections.emptyList());
138+
final List<Pair<String, String>> result = new ArrayList<>(exists);
139+
Optional.ofNullable(azureModule).map(AzureModule::getDefaultProfile)
138140
.map(Profile::getConnections)
139141
.stream().flatMap(List::stream)
140142
.filter(c -> !c.isValidConnection())
141143
.map(c -> ResourceConnectionActionsContributor.fixResourceConnection(c, project))
142144
.filter(Objects::nonNull)
143-
.map(Completable::fromFuture)
144-
.collect(Collectors.toList());
145-
// wait for all connection has been saved to .env)
146-
Completable.merge(completables).await();
147-
return Optional.ofNullable(this.file)
148-
.or(() -> AzureModule.createIfSupport(this.config).map(AzureModule::getDefaultProfile).map(Profile::getDotEnvFile))
149-
.map(Profile::load)
150-
.orElse(Collections.emptyList());
145+
.forEach(connection -> connection.getEnvironmentVariables(project)
146+
.forEach((key, value) -> result.add(Pair.of(key, value))));
147+
return result;
151148
}
152149

153150
@Override

0 commit comments

Comments
 (0)