Skip to content

Commit f70018a

Browse files
Flanker-MSFTFlanker-MSFT
Flanker-MSFT
authored and
Flanker-MSFT
committed
Refactor azure settings save logic, using jackson to save all configuration instead of save them individual
1 parent 09dec15 commit f70018a

File tree

7 files changed

+49
-50
lines changed

7 files changed

+49
-50
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/src/main/java/com/microsoft/intellij/AzureInitializer.java

-4
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@
2525
public class AzureInitializer {
2626
public static void initialize() {
2727
ProxyUtils.initProxy();
28-
initializeAzureConfiguration();
29-
}
30-
31-
private static void initializeAzureConfiguration() {
3228
IntellijConfigInitializer.initialize();
3329
initializeTelemetry();
3430
}

PluginsAndFeatures/azure-toolkit-for-intellij/src/main/java/com/microsoft/intellij/IntellijConfigInitializer.java

+1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ public static void initialize() {
5151

5252
AzureConfigInitializer.initialize(installId, "Azure Toolkit for IntelliJ", AzurePlugin.PLUGIN_VERSION);
5353
CommonSettings.setUserAgent(Azure.az().config().getUserAgent());
54+
Azure.az().setSaveConfigurationHandler(c -> AzureConfigInitializer.saveAzConfig());
5455
if (StringUtils.isNotBlank(Azure.az().config().getCloud())) {
5556
Azure.az(AzureCloud.class).setByName(Azure.az().config().getCloud());
5657
}

PluginsAndFeatures/azure-toolkit-for-intellij/src/main/java/com/microsoft/intellij/ui/AzurePanel.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ public boolean doOKAction() {
273273
if (StringUtils.isNotBlank(newConfig.getCloud())) {
274274
Azure.az(AzureCloud.class).setByName(newConfig.getCloud());
275275
}
276-
AzureConfigInitializer.saveAzConfig();
276+
Azure.az().saveConfiguration();
277277
return true;
278278
}
279279

Utils/azure-toolkit-ide-libs/azure-toolkit-ide-appservice-lib/src/main/java/com/microsoft/azure/toolkit/ide/appservice/function/coretools/FunctionsCoreToolsManager.java

+9-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
package com.microsoft.azure.toolkit.ide.appservice.function.coretools;
77

8-
import com.microsoft.azure.toolkit.ide.common.store.AzureConfigInitializer;
98
import com.microsoft.azure.toolkit.lib.Azure;
109
import com.microsoft.azure.toolkit.lib.common.event.AzureEventBus;
1110
import com.microsoft.azure.toolkit.lib.common.exception.AzureToolkitRuntimeException;
@@ -14,12 +13,18 @@
1413
import org.apache.commons.lang3.StringUtils;
1514

1615
import javax.annotation.Nullable;
17-
import java.io.*;
16+
import java.io.File;
17+
import java.io.FileInputStream;
18+
import java.io.FileOutputStream;
19+
import java.io.OutputStream;
1820
import java.net.URL;
1921
import java.nio.channels.Channels;
2022
import java.nio.file.Files;
2123
import java.nio.file.Paths;
22-
import java.util.*;
24+
import java.util.List;
25+
import java.util.Locale;
26+
import java.util.Objects;
27+
import java.util.Optional;
2328
import java.util.stream.IntStream;
2429
import java.util.zip.ZipEntry;
2530
import java.util.zip.ZipInputStream;
@@ -98,7 +103,7 @@ private void doDownloadReleaseTools(@Nullable ReleaseInfo releaseInfo, String do
98103
throw new AzureToolkitRuntimeException(e);
99104
}
100105
Azure.az().config().setFunctionCoreToolsPath(executionFilePath);
101-
AzureConfigInitializer.saveAzConfig();
106+
Azure.az().saveConfiguration();
102107
AzureEventBus.emit("function.download_func_core_tools_succeed.version", releaseInfo.releaseVersion);
103108
}
104109

Utils/azure-toolkit-ide-libs/azure-toolkit-ide-common-lib/src/main/java/com/microsoft/azure/toolkit/ide/common/action/ResourceCommonActionsContributor.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import com.microsoft.azure.toolkit.ide.common.IActionsContributor;
1010
import com.microsoft.azure.toolkit.ide.common.favorite.Favorites;
1111
import com.microsoft.azure.toolkit.ide.common.icon.AzureIcons;
12-
import com.microsoft.azure.toolkit.ide.common.store.AzureConfigInitializer;
1312
import com.microsoft.azure.toolkit.lib.AzService;
1413
import com.microsoft.azure.toolkit.lib.Azure;
1514
import com.microsoft.azure.toolkit.lib.account.IAccount;
@@ -111,8 +110,7 @@ public void registerActions(AzureActionManager am) {
111110
.withShortcut(shortcuts.delete())
112111
.visibleWhen((s, place) -> s instanceof AzResource && s instanceof Deletable)
113112
.enableWhen(s -> {
114-
if (s instanceof AbstractAzResource) {
115-
final AbstractAzResource<?, ?, ?> r = (AbstractAzResource<?, ?, ?>) s;
113+
if (s instanceof AbstractAzResource<?, ?, ?> r) {
116114
return !r.getFormalStatus().isDeleted() && !r.isDraftForCreating();
117115
}
118116
return true;
@@ -301,7 +299,7 @@ public void registerActions(AzureActionManager am) {
301299
.visibleWhen(s -> Azure.az().config().isAuthPersistenceEnabled())
302300
.withHandler((s) -> {
303301
Azure.az().config().setAuthPersistenceEnabled(false);
304-
AzureConfigInitializer.saveAzConfig();
302+
Azure.az().saveConfiguration();
305303
final AzureAccount az = Azure.az(AzureAccount.class);
306304
if (az.isLoggedIn()) {
307305
az.logout();

Utils/azure-toolkit-ide-libs/azure-toolkit-ide-common-lib/src/main/java/com/microsoft/azure/toolkit/ide/common/dotnet/DotnetRuntimeHandler.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
package com.microsoft.azure.toolkit.ide.common.dotnet;
77

88
import com.microsoft.azure.toolkit.ide.common.action.ResourceCommonActionsContributor;
9-
import com.microsoft.azure.toolkit.ide.common.store.AzureConfigInitializer;
109
import com.microsoft.azure.toolkit.lib.Azure;
1110
import com.microsoft.azure.toolkit.lib.common.action.Action;
1211
import com.microsoft.azure.toolkit.lib.common.action.AzureActionManager;
@@ -97,7 +96,7 @@ public static void installDotnet(final String path) {
9796
CommandUtils.exec(INSTALL_COMMAND, path);
9897
}
9998
Azure.az().config().setDotnetRuntimePath(path);
100-
AzureConfigInitializer.saveAzConfig();
99+
Azure.az().saveConfiguration();
101100
AzureEventBus.emit("dotnet_runtime.updated");
102101
final String INSTALL_SUCCEED_MESSAGE = ".NET runtime is installed and configured successfully.";
103102
AzureMessager.getMessager().success(INSTALL_SUCCEED_MESSAGE, null, openSettingsAction, ResourceCommonActionsContributor.RESTART_IDE);

Utils/azure-toolkit-ide-libs/azure-toolkit-ide-common-lib/src/main/java/com/microsoft/azure/toolkit/ide/common/store/AzureConfigInitializer.java

+35-35
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,17 @@
66

77
import com.microsoft.azure.toolkit.lib.Azure;
88
import com.microsoft.azure.toolkit.lib.AzureConfiguration;
9+
import com.microsoft.azure.toolkit.lib.common.messager.AzureMessager;
910
import com.microsoft.azure.toolkit.lib.common.utils.InstallationIdUtils;
11+
import com.microsoft.azure.toolkit.lib.common.utils.JsonUtils;
12+
import com.microsoft.azure.toolkit.lib.common.utils.Utils;
13+
import org.apache.commons.lang3.BooleanUtils;
1014
import org.apache.commons.lang3.StringUtils;
1115

1216
import java.nio.file.Files;
1317
import java.nio.file.Paths;
1418
import java.util.Arrays;
19+
import java.util.Optional;
1520
import java.util.stream.Collectors;
1621

1722
import static com.microsoft.azure.toolkit.ide.common.dotnet.DotnetRuntimeHandler.getDotnetRuntimePath;
@@ -44,18 +49,39 @@ public class AzureConfigInitializer {
4449
public static final String AZURITE_PATH = "azurite_path";
4550
public static final String AZURITE_WORKSPACE = "azurite_workspace";
4651
public static final String ENABLE_LEASE_MODE = "enable_lease_mode";
52+
public static final String SYSTEM = "system";
53+
public static final String AZURE_CONFIGURATION = "azure_configuration";
4754

4855
public static void initialize(String defaultMachineId, String pluginName, String pluginVersion) {
49-
String machineId = AzureStoreManager.getInstance().getMachineStore().getProperty(TELEMETRY,
50-
TELEMETRY_INSTALLATION_ID);
51-
if (StringUtils.isBlank(machineId) || !InstallationIdUtils.isValidHashMac(machineId)) {
52-
machineId = defaultMachineId;
53-
}
54-
56+
final String machineId = Optional.ofNullable(AzureStoreManager.getInstance().getMachineStore().getProperty(TELEMETRY, TELEMETRY_INSTALLATION_ID))
57+
.filter(StringUtils::isNotBlank)
58+
.filter(InstallationIdUtils::isValidHashMac)
59+
.orElse(defaultMachineId);
5560
final AzureConfiguration config = Azure.az().config();
5661
config.setMachineId(machineId);
62+
config.setProduct(pluginName);
63+
config.setVersion(pluginVersion);
64+
config.setLogLevel("NONE");
65+
final String userAgent = String.format("%s, v%s, machineid:%s", pluginName, pluginVersion,
66+
BooleanUtils.isNotFalse(config.getTelemetryEnabled()) ? config.getMachineId() : StringUtils.EMPTY);
67+
config.setUserAgent(userAgent);
5768

5869
final IIdeStore ideStore = AzureStoreManager.getInstance().getIdeStore();
70+
final String property = ideStore.getProperty(SYSTEM, AZURE_CONFIGURATION);
71+
if (StringUtils.isBlank(property)) {
72+
loadLegacyData(ideStore, config);
73+
} else {
74+
final AzureConfiguration azureConfiguration = JsonUtils.fromJson(property, AzureConfiguration.class);
75+
try {
76+
Utils.copyProperties(config, azureConfiguration, false);
77+
} catch (IllegalAccessException e) {
78+
AzureMessager.getMessager().warning("Failed to load azure configuration from store.", e);
79+
}
80+
}
81+
saveAzConfig();
82+
}
83+
84+
private static void loadLegacyData(final IIdeStore ideStore, final AzureConfiguration config) {
5985
final String allowTelemetry = ideStore.getProperty(TELEMETRY, TELEMETRY_ALLOW_TELEMETRY, "true");
6086
config.setTelemetryEnabled(Boolean.parseBoolean(allowTelemetry));
6187
final String enableAuthPersistence = ideStore.getProperty(OTHER, ENABLE_AUTH_PERSISTENCE, "true");
@@ -113,38 +139,12 @@ public static void initialize(String defaultMachineId, String pluginName, String
113139

114140
final Boolean enableLeaseMode = Boolean.valueOf(ideStore.getProperty(AZURITE, ENABLE_LEASE_MODE, "false"));
115141
config.setEnableLeaseMode(enableLeaseMode);
116-
117-
ideStore.getProperty(TELEMETRY, TELEMETRY_PLUGIN_VERSION, "");
118-
119-
final String userAgent = String.format("%s, v%s, machineid:%s", pluginName, pluginVersion,
120-
config.getTelemetryEnabled() ? config.getMachineId() : StringUtils.EMPTY);
121-
config.setUserAgent(userAgent);
122-
config.setProduct(pluginName);
123-
config.setLogLevel("NONE");
124-
config.setVersion(pluginVersion);
125-
saveAzConfig();
126142
}
127143

128144
public static void saveAzConfig() {
129145
final AzureConfiguration config = Azure.az().config();
130-
final IIdeStore ideStore = AzureStoreManager.getInstance().getIdeStore();
131-
132-
AzureStoreManager.getInstance().getMachineStore().setProperty(TELEMETRY, TELEMETRY_INSTALLATION_ID,
133-
config.getMachineId());
134-
135-
ideStore.setProperty(TELEMETRY, TELEMETRY_ALLOW_TELEMETRY, Boolean.toString(config.getTelemetryEnabled()));
136-
ideStore.setProperty(OTHER, ENABLE_AUTH_PERSISTENCE, Boolean.toString(config.isAuthPersistenceEnabled()));
137-
ideStore.setProperty(MONITOR, MONITOR_TABLE_ROWS, String.valueOf(config.getMonitorQueryRowNumber()));
138-
ideStore.setProperty(ACCOUNT, AZURE_ENVIRONMENT_KEY, config.getCloud());
139-
ideStore.setProperty(FUNCTION, FUNCTION_CORE_TOOLS_PATH, config.getFunctionCoreToolsPath());
140-
ideStore.setProperty(STORAGE, STORAGE_EXPLORER_PATH, config.getStorageExplorerPath());
141-
ideStore.setProperty(COMMON, PAGE_SIZE, String.valueOf(config.getPageSize()));
142-
ideStore.setProperty(COSMOS, DOCUMENTS_LABEL_FIELDS, String.join(";", config.getDocumentsLabelFields()));
143-
// don't save pluginVersion, it is saved in AzurePlugin class
144-
ideStore.setProperty(BICEP, DOTNET_RUNTIME_PATH, config.getDotnetRuntimePath());
145-
ideStore.setProperty(EVENT_HUBS, CONSUMER_GROUP_NAME, config.getEventHubsConsumerGroup());
146-
ideStore.setProperty(AZURITE, AZURITE_PATH, config.getAzuritePath());
147-
ideStore.setProperty(AZURITE, AZURITE_WORKSPACE, config.getAzuriteWorkspace());
148-
ideStore.setProperty(AZURITE, ENABLE_LEASE_MODE, String.valueOf(config.getEnableLeaseMode()));
146+
final AzureStoreManager storeManager = AzureStoreManager.getInstance();
147+
storeManager.getIdeStore().setProperty(SYSTEM, AZURE_CONFIGURATION, JsonUtils.toJson(config));
148+
storeManager.getMachineStore().setProperty(TELEMETRY, TELEMETRY_INSTALLATION_ID, config.getMachineId());
149149
}
150150
}

0 commit comments

Comments
 (0)