Skip to content

Commit d58e49d

Browse files
committed
Merge branch 'release'
2 parents 6bffbc0 + 4efb677 commit d58e49d

File tree

11 files changed

+81
-21
lines changed

11 files changed

+81
-21
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/resources/whatsnew/whatsnew.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!-- Version: 3.47.0 -->
1+
<!-- Version: 3.50.0 -->
22
# What's new in Azure Toolkit for IntelliJ
33

44
## 3.50.0

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/function/runner/IntelliJFunctionContext.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88
import com.microsoft.azure.common.project.IProject;
99
import com.microsoft.azure.management.Azure;
10-
import com.microsoft.azuretools.authmanage.AuthMethodManager;
1110
import com.microsoft.azure.toolkit.intellij.function.runner.library.IFunctionContext;
11+
import com.microsoft.azuretools.authmanage.AuthMethodManager;
1212
import lombok.Data;
1313

1414
import java.util.HashMap;
@@ -37,8 +37,12 @@ public class IntelliJFunctionContext implements IFunctionContext {
3737

3838
private String deployment;
3939

40+
// todo: remove app settings and related codes
41+
@Deprecated
4042
private Map<String, String> appSettings = new HashMap<>();
4143

44+
private String appSettingsKey;
45+
4246
private String moduleName;
4347

4448
private String insightsName;

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/function/runner/core/FunctionUtils.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import com.microsoft.azuretools.azurecommons.helpers.Nullable;
3535
import com.microsoft.azuretools.utils.JsonUtils;
3636
import com.microsoft.azuretools.utils.WebAppUtils;
37+
import com.microsoft.intellij.secure.IdeaSecureStore;
3738
import com.sun.tools.sjavac.Log;
3839
import org.apache.commons.collections.MapUtils;
3940
import org.apache.commons.io.FileUtils;
@@ -75,6 +76,22 @@ public class FunctionUtils {
7576
REQUIRED_ATTRIBUTE_MAP.put(BindingEnum.HttpTrigger, Arrays.asList("authLevel"));
7677
}
7778

79+
public static void saveAppSettingsToSecurityStorage(String key, Map<String, String> appSettings) {
80+
if (StringUtils.isEmpty(key)) {
81+
return;
82+
}
83+
final String appSettingsJsonValue = JsonUtils.toJsonString(appSettings);
84+
IdeaSecureStore.getInstance().savePassword(FunctionApp.class.getName(), key, appSettingsJsonValue);
85+
}
86+
87+
public static Map<String, String> loadAppSettingsFromSecurityStorage(String key) {
88+
if (StringUtils.isEmpty(key)) {
89+
return new HashMap<>();
90+
}
91+
final String value = IdeaSecureStore.getInstance().loadPassword(FunctionApp.class.getName(), key);
92+
return StringUtils.isEmpty(value) ? new HashMap<>() : JsonUtils.fromJson(value, Map.class);
93+
}
94+
7895
public static String getFunctionJavaVersion(FunctionApp functionApp) {
7996
if (!WebAppUtils.isJavaWebApp(functionApp)) {
8097
return null;

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/function/runner/deploy/FunctionDeployConfiguration.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,14 @@ public String getInsightsName() {
216216
return functionDeployModel.getInsightsName();
217217
}
218218

219+
public String getAppSettingsKey() {
220+
return functionDeployModel.getAppSettingsKey();
221+
}
222+
223+
public void setAppSettingsKey(String appSettingsStorageKey) {
224+
functionDeployModel.setAppSettingsKey(appSettingsStorageKey);
225+
}
226+
219227
public void saveModel(FunctionAppComboBoxModel functionAppComboBoxModel) {
220228
if (functionAppComboBoxModel.getFunctionDeployModel() != null) {
221229
setFunctionDeployModel(functionAppComboBoxModel.getFunctionDeployModel());

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/function/runner/deploy/ui/FunctionDeploymentPanel.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.util.Arrays;
3030
import java.util.Collections;
3131
import java.util.Map;
32+
import java.util.UUID;
3233

3334
import static com.microsoft.intellij.CommonConst.EMPTY_TEXT;
3435
import static com.microsoft.intellij.CommonConst.LOADING_TEXT;
@@ -46,6 +47,7 @@ public class FunctionDeploymentPanel extends AzureSettingPanel<FunctionDeployCon
4647
private FunctionAppComboBox functionAppComboBox;
4748
private AppSettingsTable appSettingsTable;
4849
private FunctionAppComboBoxModel appSettingsFunctionApp;
50+
private String appSettingsKey = UUID.randomUUID().toString();
4951

5052

5153
public FunctionDeploymentPanel(@NotNull Project project, @NotNull FunctionDeployConfiguration functionDeployConfiguration) {
@@ -124,6 +126,10 @@ protected void resetFromConfig(@NotNull FunctionDeployConfiguration configuratio
124126
if (MapUtils.isNotEmpty(configuration.getAppSettings())) {
125127
appSettingsTable.setAppSettings(configuration.getAppSettings());
126128
}
129+
if (StringUtils.isNotEmpty(configuration.getAppSettingsKey())) {
130+
this.appSettingsKey = configuration.getAppSettingsKey();
131+
appSettingsTable.setAppSettings(FunctionUtils.loadAppSettingsFromSecurityStorage(appSettingsKey));
132+
}
127133
if (StringUtils.isAllEmpty(configuration.getFunctionId(), configuration.getAppName())) {
128134
functionAppComboBox.refreshItems();
129135
} else {
@@ -147,7 +153,10 @@ protected void resetFromConfig(@NotNull FunctionDeployConfiguration configuratio
147153
@Override
148154
protected void apply(@NotNull FunctionDeployConfiguration configuration) {
149155
configuration.saveTargetModule((Module) cbFunctionModule.getSelectedItem());
150-
configuration.setAppSettings(appSettingsTable.getAppSettings());
156+
FunctionUtils.saveAppSettingsToSecurityStorage(appSettingsKey, appSettingsTable.getAppSettings());
157+
// save app settings storage key instead of real value
158+
configuration.setAppSettings(Collections.EMPTY_MAP);
159+
configuration.setAppSettingsKey(appSettingsKey);
151160
final FunctionAppComboBoxModel functionModel = functionAppComboBox.getValue();
152161
if (functionModel != null) {
153162
configuration.saveModel(functionModel);

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/function/runner/library/function/CreateFunctionHandler.java

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@
3030
import org.apache.commons.lang3.StringUtils;
3131

3232
import java.io.IOException;
33+
import java.util.Collections;
3334
import java.util.Map;
34-
import java.util.function.Consumer;
3535

3636
import static com.microsoft.intellij.ui.messages.AzureBundle.message;
3737

@@ -85,9 +85,12 @@ private FunctionApp createFunctionApp() {
8585
final String action = "confirm if the web app is properly configured";
8686
throw new AzureToolkitRuntimeException(error, e, action);
8787
}
88-
bindingApplicationInsights();
8988
configureApplicationLog(withCreate);
90-
configureAppSettings(withCreate::withAppSettings, getAppSettingsWithDefaultValue());
89+
90+
final Map<String, String> appSettings = getAppSettingsWithDefaultValue();
91+
appSettings.putAll(bindingApplicationInsights());
92+
withCreate.withAppSettings(appSettings);
93+
9194
FunctionApp result = withCreate.create();
9295
Log.prompt(message("function.create.hint.functionCreated", ctx.getAppName()));
9396
return result;
@@ -108,9 +111,9 @@ private WithCreate configureApplicationLog(WithCreate withCreate) {
108111
params = {"@ctx.getAppName()"},
109112
type = AzureOperation.Type.SERVICE
110113
)
111-
private void bindingApplicationInsights() {
114+
private Map<String, String> bindingApplicationInsights() {
112115
if (StringUtils.isAllEmpty(ctx.getInsightsName(), ctx.getInstrumentationKey())) {
113-
return;
116+
return Collections.emptyMap();
114117
}
115118
String instrumentationKey = ctx.getInstrumentationKey();
116119
if (StringUtils.isEmpty(instrumentationKey)) {
@@ -123,13 +126,7 @@ private void bindingApplicationInsights() {
123126
Log.prompt(message("function.create.error.createApplicationInsightsFailed", ctx.getAppName()));
124127
}
125128
}
126-
ctx.getAppSettings().put(APP_INSIGHTS_INSTRUMENTATION_KEY, instrumentationKey);
127-
}
128-
129-
private void configureAppSettings(final Consumer<Map> withAppSettings, final Map appSettings) {
130-
if (appSettings != null && !appSettings.isEmpty()) {
131-
withAppSettings.accept(appSettings);
132-
}
129+
return Collections.singletonMap(APP_INSIGHTS_INSTRUMENTATION_KEY, instrumentationKey);
133130
}
134131

135132
// endregion
@@ -215,11 +212,12 @@ private FunctionExtensionVersion getFunctionExtensionVersion() throws AzureExecu
215212

216213
// region get App Settings
217214
private Map getAppSettingsWithDefaultValue() {
218-
final Map settings = ctx.getAppSettings();
215+
final Map settings =
216+
com.microsoft.azure.toolkit.intellij.function.runner.core.FunctionUtils.loadAppSettingsFromSecurityStorage(ctx.getAppSettingsKey());
219217
overrideDefaultAppSetting(settings, FUNCTIONS_WORKER_RUNTIME_NAME, message("function.hint.setFunctionWorker"),
220-
FUNCTIONS_WORKER_RUNTIME_VALUE, message("function.hint.changeFunctionWorker"));
218+
FUNCTIONS_WORKER_RUNTIME_VALUE, message("function.hint.changeFunctionWorker"));
221219
setDefaultAppSetting(settings, FUNCTIONS_EXTENSION_VERSION_NAME, message("function.hint.setFunctionVersion"),
222-
FUNCTIONS_EXTENSION_VERSION_VALUE);
220+
FUNCTIONS_EXTENSION_VERSION_VALUE);
223221
return settings;
224222
}
225223
}

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/function/runner/library/function/DeployFunctionHandler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,8 @@ private FunctionApp getFunctionApp() {
194194

195195
// region get App Settings
196196
private Map getAppSettingsWithDefaultValue() {
197-
final Map settings = model.getAppSettings();
197+
final Map settings =
198+
com.microsoft.azure.toolkit.intellij.function.runner.core.FunctionUtils.loadAppSettingsFromSecurityStorage(model.getAppSettingsKey());
198199
overrideDefaultAppSetting(settings, FUNCTIONS_WORKER_RUNTIME_NAME, message("function.hint.setFunctionWorker"),
199200
FUNCTIONS_WORKER_RUNTIME_VALUE, message("function.hint.changeFunctionWorker"));
200201
setDefaultAppSetting(settings, FUNCTIONS_EXTENSION_VERSION_NAME, message("function.hint.setFunctionVersion"),

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/function/runner/localrun/FunctionRunConfiguration.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,14 @@ public void setAppSettingsJsonObject(JsonObject appSettingsJsonObject) {
149149
this.appSettingsJsonObject = appSettingsJsonObject;
150150
}
151151

152+
public String getAppSettingsKey() {
153+
return functionRunModel.getAppSettingsKey();
154+
}
155+
156+
public void setAppSettingsKey(String appSettingsStorageKey) {
157+
functionRunModel.setAppSettingsKey(appSettingsStorageKey);
158+
}
159+
152160
public void saveModule(Module module) {
153161
if (module == null) {
154162
return;

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/function/runner/localrun/FunctionRunState.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,8 @@ private void prepareStagingFolder(File stagingFolder, RunProcessHandler processH
284284
try {
285285
Map<String, FunctionConfiguration> configMap =
286286
FunctionUtils.prepareStagingFolder(folder, hostJsonPath, functionRunConfiguration.getModule(), methods);
287-
FunctionUtils.copyLocalSettingsToStagingFolder(folder, localSettingsJson, functionRunConfiguration.getAppSettings());
287+
final Map<String, String> appSettings = FunctionUtils.loadAppSettingsFromSecurityStorage(functionRunConfiguration.getAppSettingsKey());
288+
FunctionUtils.copyLocalSettingsToStagingFolder(folder, localSettingsJson, appSettings);
288289

289290
final Set<BindingEnum> bindingClasses = getFunctionBindingEnums(configMap);
290291
if (isInstallingExtensionNeeded(bindingClasses, processHandler)) {

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/function/runner/localrun/ui/FunctionRunPanel.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import java.io.IOException;
3131
import java.nio.file.Paths;
3232
import java.util.Arrays;
33+
import java.util.Collections;
34+
import java.util.UUID;
3335

3436
import static com.microsoft.intellij.ui.messages.AzureBundle.message;
3537

@@ -41,6 +43,7 @@ public class FunctionRunPanel extends AzureSettingPanel<FunctionRunConfiguration
4143
private JPanel pnlAppSettings;
4244
private JComboBox<Module> cbFunctionModule;
4345
private AppSettingsTable appSettingsTable;
46+
private String appSettingsKey = UUID.randomUUID().toString();
4447

4548
private FunctionRunConfiguration functionRunConfiguration;
4649

@@ -85,6 +88,10 @@ protected void resetFromConfig(@NotNull FunctionRunConfiguration configuration)
8588
if (MapUtils.isNotEmpty(configuration.getAppSettings())) {
8689
appSettingsTable.setAppSettings(configuration.getAppSettings());
8790
}
91+
if (StringUtils.isNotEmpty(configuration.getAppSettingsKey())) {
92+
this.appSettingsKey = configuration.getAppSettingsKey();
93+
appSettingsTable.setAppSettings(FunctionUtils.loadAppSettingsFromSecurityStorage(appSettingsKey));
94+
}
8895
// In case `FUNCTIONS_WORKER_RUNTIME` or `AZURE_WEB_JOB_STORAGE_KEY` was missed in configuration
8996
appSettingsTable.loadRequiredSettings();
9097
if (StringUtils.isNotEmpty(configuration.getFuncPath())) {
@@ -102,8 +109,11 @@ protected void resetFromConfig(@NotNull FunctionRunConfiguration configuration)
102109
@Override
103110
protected void apply(@NotNull FunctionRunConfiguration configuration) {
104111
configuration.setFuncPath(txtFunc.getText());
105-
configuration.setAppSettings(appSettingsTable.getAppSettings());
106112
configuration.saveModule((Module) cbFunctionModule.getSelectedItem());
113+
FunctionUtils.saveAppSettingsToSecurityStorage(appSettingsKey, appSettingsTable.getAppSettings());
114+
// save app settings storage key instead of real value
115+
configuration.setAppSettings(Collections.EMPTY_MAP);
116+
configuration.setAppSettingsKey(appSettingsKey);
107117
}
108118

109119
@NotNull

0 commit comments

Comments
 (0)