Skip to content

Commit 6866e05

Browse files
Merge pull request #6891 from microsoft/miller/hotfixes-202208
fix miscellaneous bugs in endgame-202208
2 parents 8f0574f + f71cf9b commit 6866e05

File tree

33 files changed

+230
-325
lines changed

33 files changed

+230
-325
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-applicationinsights/src/main/java/com/microsoft/azure/toolkit/intellij/applicationinsights/IntelliJApplicationInsightsActionsContributor.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
import java.util.function.BiConsumer;
3939
import java.util.function.BiPredicate;
4040

41+
import static com.microsoft.azure.toolkit.lib.Azure.az;
42+
4143
public class IntelliJApplicationInsightsActionsContributor implements IActionsContributor {
4244
@Override
4345
public void registerHandlers(AzureActionManager am) {
@@ -66,8 +68,7 @@ private static ApplicationInsightDraft getDraftApplicationInsight(@Nullable fina
6668

6769
final Subscription historySub = CacheManager.getUsageHistory(Subscription.class).peek(subs::contains);
6870
final ResourceGroup historyRg = CacheManager.getUsageHistory(ResourceGroup.class)
69-
.peek(r -> Objects.isNull(historySub) || r.getSubscriptionId().equals(historySub.getId()));
70-
final Region historyRegion = CacheManager.getUsageHistory(Region.class).peek();
71+
.peek(r -> Objects.isNull(historySub) ? subs.stream().anyMatch(s -> s.getId().equals(r.getSubscriptionId())) : r.getSubscriptionId().equals(historySub.getId()));
7172

7273
final String timestamp = Utils.getTimestamp();
7374
final ResourceGroup rg = Optional.ofNullable(resourceGroup)
@@ -76,6 +77,8 @@ private static ApplicationInsightDraft getDraftApplicationInsight(@Nullable fina
7677
final Subscription subscription = Optional.ofNullable(rg).map(AzResource::getSubscription)
7778
.or(() -> Optional.ofNullable(historySub).filter(subs::contains))
7879
.orElse(subs.get(0));
80+
final List<Region> regions = az(AzureAccount.class).listRegions(subscription.getId());
81+
final Region historyRegion = CacheManager.getUsageHistory(Region.class).peek(regions::contains);
7982
final Region region = Optional.ofNullable(rg).map(ResourceGroup::getRegion)
8083
.or(() -> Optional.ofNullable(historyRegion))
8184
.orElse(null);

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-containerservice/src/main/java/com/microsoft/azure/toolkit/intellij/containerservice/creation/CreateKubernetesServiceAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public static KubernetesClusterDraft.Config getDefaultConfig(@Nullable final Res
5858

5959
final Subscription historySub = CacheManager.getUsageHistory(Subscription.class).peek(subs::contains);
6060
final ResourceGroup historyRg = CacheManager.getUsageHistory(ResourceGroup.class)
61-
.peek(r -> Objects.isNull(historySub) || r.getSubscriptionId().equals(historySub.getId()));
61+
.peek(r -> Objects.isNull(historySub) ? subs.stream().anyMatch(s -> s.getId().equals(r.getSubscriptionId())) : r.getSubscriptionId().equals(historySub.getId()));
6262
final ResourceGroup group = Optional.ofNullable(resourceGroup)
6363
.or(() -> Optional.ofNullable(historyRg))
6464
.orElse(az(AzureResources.class).groups(subs.get(0).getId())

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-cosmos/src/main/java/com/microsoft/azure/toolkit/intellij/cosmos/IntelliJCosmosActionsContributor.java

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,32 @@
55

66
package com.microsoft.azure.toolkit.intellij.cosmos;
77

8+
import com.intellij.database.autoconfig.DataSourceDetector;
9+
import com.intellij.database.autoconfig.DataSourceRegistry;
10+
import com.intellij.database.psi.DbPsiFacade;
11+
import com.intellij.database.view.ui.DataSourceManagerDialog;
12+
import com.intellij.ide.plugins.PluginManagerCore;
813
import com.intellij.openapi.actionSystem.AnActionEvent;
14+
import com.intellij.openapi.extensions.PluginId;
915
import com.intellij.openapi.project.Project;
1016
import com.microsoft.azure.toolkit.ide.common.IActionsContributor;
1117
import com.microsoft.azure.toolkit.ide.common.action.ResourceCommonActionsContributor;
1218
import com.microsoft.azure.toolkit.ide.cosmos.CosmosActionsContributor;
19+
import com.microsoft.azure.toolkit.intellij.common.action.IntellijActionsContributor;
1320
import com.microsoft.azure.toolkit.intellij.connector.AzureServiceResource;
1421
import com.microsoft.azure.toolkit.intellij.connector.ConnectorDialog;
1522
import com.microsoft.azure.toolkit.intellij.cosmos.connection.CassandraCosmosDBAccountResourceDefinition;
1623
import com.microsoft.azure.toolkit.intellij.cosmos.connection.MongoCosmosDBAccountResourceDefinition;
1724
import com.microsoft.azure.toolkit.intellij.cosmos.connection.SqlCosmosDBAccountResourceDefinition;
1825
import com.microsoft.azure.toolkit.intellij.cosmos.creation.CreateCosmosDBAccountAction;
1926
import com.microsoft.azure.toolkit.intellij.cosmos.creation.CreateCosmosDatabaseAction;
27+
import com.microsoft.azure.toolkit.intellij.cosmos.dbtools.Dbms;
2028
import com.microsoft.azure.toolkit.lib.common.action.AzureActionManager;
2129
import com.microsoft.azure.toolkit.lib.common.bundle.AzureString;
30+
import com.microsoft.azure.toolkit.lib.common.exception.AzureToolkitRuntimeException;
2231
import com.microsoft.azure.toolkit.lib.common.messager.AzureMessager;
2332
import com.microsoft.azure.toolkit.lib.common.model.AzResource;
33+
import com.microsoft.azure.toolkit.lib.common.operation.AzureOperation;
2434
import com.microsoft.azure.toolkit.lib.common.operation.OperationBundle;
2535
import com.microsoft.azure.toolkit.lib.common.task.AzureTaskManager;
2636
import com.microsoft.azure.toolkit.lib.cosmos.AzureCosmosService;
@@ -42,10 +52,10 @@
4252
import java.util.function.BiPredicate;
4353
import java.util.function.Function;
4454

55+
import static com.microsoft.azure.toolkit.intellij.cosmos.dbtools.AzureCosmosDbAccountParamEditor.KEY_COSMOS_ACCOUNT_ID;
4556
import static com.microsoft.azure.toolkit.lib.cosmos.CosmosDBAccountDraft.Config.getDefaultConfig;
4657
import static com.microsoft.azure.toolkit.lib.cosmos.model.DatabaseConfig.getDefaultDatabaseConfig;
4758

48-
4959
public class IntelliJCosmosActionsContributor implements IActionsContributor {
5060
@Override
5161
public void registerHandlers(AzureActionManager am) {
@@ -89,6 +99,31 @@ public void registerHandlers(AzureActionManager am) {
8999
(ICosmosDatabaseDraft<?, ?>) account.keySpaces().getOrDraft(config.getName(), account.getResourceGroupName());
90100
am.registerHandler(ResourceCommonActionsContributor.CREATE, (r, e) -> r instanceof CassandraCosmosDBAccount, (Object r, AnActionEvent e) ->
91101
CreateCosmosDatabaseAction.create(e.getProject(), (CassandraCosmosDBAccount) r, cassandraDraftSupplier, getDefaultDatabaseConfig()));
102+
103+
final BiConsumer<CosmosDBAccount, AnActionEvent> openDatabaseHandler = (c, e) -> openDatabaseTool(e.getProject(), c);
104+
am.registerHandler(CosmosActionsContributor.OPEN_DATABASE_TOOL, (r, e) -> r instanceof MongoCosmosDBAccount || r instanceof CassandraCosmosDBAccount, openDatabaseHandler);
105+
}
106+
107+
@AzureOperation(name = "cosmos.open_database_tools.account", params = {"account.getName()"}, type = AzureOperation.Type.ACTION)
108+
private void openDatabaseTool(Project project, CosmosDBAccount account) {
109+
final String DATABASE_TOOLS_PLUGIN_ID = "com.intellij.database";
110+
final String DATABASE_PLUGIN_NOT_INSTALLED = "\"Database tools and SQL\" plugin is not installed.";
111+
final String NOT_SUPPORT_ERROR_ACTION = "\"Database tools and SQL\" plugin is only provided in IntelliJ Ultimate edition.";
112+
if (PluginManagerCore.getPlugin(PluginId.findId(DATABASE_TOOLS_PLUGIN_ID)) == null) {
113+
throw new AzureToolkitRuntimeException(DATABASE_PLUGIN_NOT_INSTALLED, NOT_SUPPORT_ERROR_ACTION, IntellijActionsContributor.TRY_ULTIMATE);
114+
}
115+
AzureTaskManager.getInstance().runLater(() -> {
116+
final DataSourceRegistry registry = new DataSourceRegistry(project);
117+
final com.intellij.database.Dbms dbms =
118+
account instanceof MongoCosmosDBAccount ? Dbms.AZ_COSMOS_MONGO :
119+
account instanceof CassandraCosmosDBAccount ? Dbms.AZ_COSMOS_CASSANDRA :
120+
com.intellij.database.Dbms.UNKNOWN;
121+
final DataSourceDetector.Builder builder = registry.getBuilder()
122+
.withDbms(dbms)
123+
.withJdbcAdditionalProperty(KEY_COSMOS_ACCOUNT_ID, account.getId())
124+
.commit();
125+
DataSourceManagerDialog.showDialog(DbPsiFacade.getInstance(project), registry);
126+
});
92127
}
93128

94129
private <T extends AzResource<?, ?, ?>> void openResourceConnector(@Nonnull final T resource, @Nonnull final AzureServiceResource.Definition<T> definition, Project project) {

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-cosmos/src/main/java/com/microsoft/azure/toolkit/intellij/cosmos/IntelliJCosmosActionsContributorForUltimate.java

Lines changed: 0 additions & 80 deletions
This file was deleted.

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-cosmos/src/main/resources/META-INF/azure-intellij-plugin-cosmos-dbtools.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,4 @@
1313
<urlParamEditorProvider implementation="com.microsoft.azure.toolkit.intellij.cosmos.dbtools.MongoCosmosDbAccountTypeFactory" order="first"/>
1414
<urlParamEditorProvider implementation="com.microsoft.azure.toolkit.intellij.cosmos.dbtools.CassandraCosmosDbAccountTypeFactory" order="first"/>
1515
</extensions>
16-
<extensions defaultExtensionNs="com.microsoft.tooling.msservices.intellij.azure">
17-
<actions implementation="com.microsoft.azure.toolkit.intellij.cosmos.IntelliJCosmosActionsContributorForUltimate"/>
18-
</extensions>
1916
</idea-plugin>

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-database/src/main/java/com/microsoft/azure/toolkit/intellij/database/OpenInDatabaseToolsAction.java

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,35 +9,12 @@
99
import com.intellij.database.autoconfig.DataSourceRegistry;
1010
import com.intellij.database.psi.DbPsiFacade;
1111
import com.intellij.database.view.ui.DataSourceManagerDialog;
12-
import com.intellij.ide.IdeBundle;
13-
import com.intellij.ide.plugins.PluginManagerCore;
14-
import com.intellij.openapi.extensions.PluginId;
1512
import com.intellij.openapi.project.Project;
16-
import com.intellij.openapi.updateSettings.impl.pluginsAdvertisement.FUSEventSource;
17-
import com.microsoft.azure.toolkit.lib.common.action.Action;
18-
import com.microsoft.azure.toolkit.lib.common.action.ActionView;
19-
import com.microsoft.azure.toolkit.lib.common.exception.AzureToolkitRuntimeException;
2013
import lombok.Builder;
2114
import lombok.Getter;
2215

23-
import java.util.function.Consumer;
24-
2516
public class OpenInDatabaseToolsAction {
26-
27-
private static final String DATABASE_TOOLS_PLUGIN_ID = "com.intellij.database";
28-
private static final String DATABASE_PLUGIN_NOT_INSTALLED = "\"Database tools and SQL\" plugin is not installed.";
29-
private static final String NOT_SUPPORT_ERROR_ACTION = "\"Database tools and SQL\" plugin is only provided in IntelliJ Ultimate edition.";
30-
private static final String ERROR_MESSAGE_PATTERN = "Failed to open \"Data Sources and Drivers\" dialog for %s";
31-
private static final String IDE_DOWNLOAD_URL = "https://www.jetbrains.com/idea/download/";
32-
3317
public static void openDataSourceManagerDialog(Project project, DatasourceProperties properties) {
34-
if (PluginManagerCore.getPlugin(PluginId.findId(DATABASE_TOOLS_PLUGIN_ID)) == null) {
35-
final Consumer<Object> handler = (r) -> FUSEventSource.NOTIFICATION.openDownloadPageAndLog(project, IDE_DOWNLOAD_URL);
36-
final ActionView.Builder view = new ActionView.Builder(IdeBundle.message("plugins.advertiser.action.try.ultimate", "IntelliJ IDEA Ultimate"));
37-
final Action.Id<Object> TRY_ULTIMATE = Action.Id.of("database.try_ultimate");
38-
final Action<Object> tryUltimate = new Action<>(TRY_ULTIMATE, handler, view);
39-
throw new AzureToolkitRuntimeException(DATABASE_PLUGIN_NOT_INSTALLED, NOT_SUPPORT_ERROR_ACTION, tryUltimate);
40-
}
4118
final DataSourceRegistry registry = new DataSourceRegistry(project);
4219
final DbPsiFacade dbPsiFacade = DbPsiFacade.getInstance(project);
4320
final DataSourceDetector.Builder builder = registry.getBuilder()

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-database/src/main/java/com/microsoft/azure/toolkit/intellij/database/mysql/IntellijMySqlActionsContributor.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,40 @@
55

66
package com.microsoft.azure.toolkit.intellij.database.mysql;
77

8+
import com.intellij.ide.plugins.PluginManagerCore;
89
import com.intellij.openapi.actionSystem.AnActionEvent;
10+
import com.intellij.openapi.extensions.PluginId;
11+
import com.intellij.openapi.project.Project;
912
import com.microsoft.azure.toolkit.ide.common.IActionsContributor;
1013
import com.microsoft.azure.toolkit.ide.common.action.ResourceCommonActionsContributor;
1114
import com.microsoft.azure.toolkit.ide.database.mysql.MySqlActionsContributor;
15+
import com.microsoft.azure.toolkit.intellij.common.action.IntellijActionsContributor;
1216
import com.microsoft.azure.toolkit.intellij.connector.ConnectorDialog;
17+
import com.microsoft.azure.toolkit.intellij.database.OpenInDatabaseToolsAction;
1318
import com.microsoft.azure.toolkit.intellij.database.connection.SqlDatabaseResource;
1419
import com.microsoft.azure.toolkit.intellij.database.mysql.connection.MySqlDatabaseResourceDefinition;
1520
import com.microsoft.azure.toolkit.intellij.database.mysql.creation.CreateMySqlAction;
1621
import com.microsoft.azure.toolkit.intellij.database.mysql.creation.MySqlCreationDialog;
1722
import com.microsoft.azure.toolkit.lib.common.action.AzureActionManager;
23+
import com.microsoft.azure.toolkit.lib.common.exception.AzureToolkitRuntimeException;
1824
import com.microsoft.azure.toolkit.lib.common.model.AzResource;
25+
import com.microsoft.azure.toolkit.lib.common.operation.AzureOperation;
1926
import com.microsoft.azure.toolkit.lib.common.task.AzureTaskManager;
2027
import com.microsoft.azure.toolkit.lib.database.DatabaseServerConfig;
28+
import com.microsoft.azure.toolkit.lib.database.JdbcUrl;
2129
import com.microsoft.azure.toolkit.lib.mysql.AzureMySql;
2230
import com.microsoft.azure.toolkit.lib.mysql.MySqlServer;
2331
import com.microsoft.azure.toolkit.lib.resource.ResourceGroup;
2432

33+
import javax.annotation.Nonnull;
34+
import java.util.Objects;
2535
import java.util.function.BiConsumer;
2636
import java.util.function.BiPredicate;
2737

2838
public class IntellijMySqlActionsContributor implements IActionsContributor {
39+
private static final String NAME_PREFIX = "MySQL - %s";
40+
private static final String DEFAULT_DRIVER_CLASS_NAME = "com.mysql.cj.jdbc.Driver";
41+
2942
@Override
3043
public void registerHandlers(AzureActionManager am) {
3144
final BiPredicate<Object, AnActionEvent> condition = (r, e) -> r instanceof AzureMySql;
@@ -49,6 +62,26 @@ public void registerHandlers(AzureActionManager am) {
4962
CreateMySqlAction.create(e.getProject(), config);
5063
};
5164
am.registerHandler(MySqlActionsContributor.GROUP_CREATE_MYSQL, (r, e) -> true, groupCreateMySqlHandler);
65+
66+
final BiConsumer<AzResource<?, ?, ?>, AnActionEvent> openDatabaseHandler = (c, e) -> openDatabaseTool(e.getProject(), (MySqlServer) c);
67+
am.registerHandler(MySqlActionsContributor.OPEN_DATABASE_TOOL, (r, e) -> true, openDatabaseHandler);
68+
}
69+
70+
@AzureOperation(name = "mysql.open_database_tools.server", params = {"server.getName()"}, type = AzureOperation.Type.ACTION)
71+
private void openDatabaseTool(Project project, @Nonnull MySqlServer server) {
72+
final String DATABASE_TOOLS_PLUGIN_ID = "com.intellij.database";
73+
final String DATABASE_PLUGIN_NOT_INSTALLED = "\"Database tools and SQL\" plugin is not installed.";
74+
final String NOT_SUPPORT_ERROR_ACTION = "\"Database tools and SQL\" plugin is only provided in IntelliJ Ultimate edition.";
75+
if (PluginManagerCore.getPlugin(PluginId.findId(DATABASE_TOOLS_PLUGIN_ID)) == null) {
76+
throw new AzureToolkitRuntimeException(DATABASE_PLUGIN_NOT_INSTALLED, NOT_SUPPORT_ERROR_ACTION, IntellijActionsContributor.TRY_ULTIMATE);
77+
}
78+
final OpenInDatabaseToolsAction.DatasourceProperties properties = OpenInDatabaseToolsAction.DatasourceProperties.builder()
79+
.name(String.format(NAME_PREFIX, server.getName()))
80+
.driverClassName(DEFAULT_DRIVER_CLASS_NAME)
81+
.url(JdbcUrl.mysql(Objects.requireNonNull(server.getFullyQualifiedDomainName())).toString())
82+
.username(server.getAdminName() + "@" + server.getName())
83+
.build();
84+
AzureTaskManager.getInstance().runLater(() -> OpenInDatabaseToolsAction.openDataSourceManagerDialog(project, properties));
5285
}
5386

5487
@Override

0 commit comments

Comments
 (0)