Skip to content

Commit 0efdb27

Browse files
authored
Merge pull request #5298 from microsoft/qianjin-s187-bugfix-04
bugfix: block UI when server name failed to be validated by server side.
2 parents 974cedc + e71ed8a commit 0efdb27

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/mysql/MySQLNameValidator.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*/
55
package com.microsoft.azure.toolkit.intellij.mysql;
66

7+
import com.microsoft.azure.CloudException;
78
import com.microsoft.azure.toolkit.intellij.database.ServerNameTextField;
89
import com.microsoft.azure.toolkit.lib.common.form.AzureValidationInfo;
910
import com.microsoft.azuretools.core.mvp.model.mysql.MySQLMvpModel;
@@ -16,8 +17,12 @@ public class MySQLNameValidator implements Function<ServerNameTextField, AzureVa
1617
public AzureValidationInfo apply(ServerNameTextField textField) {
1718
final String value = textField.getValue();
1819
// validate availability
19-
if (!MySQLMvpModel.checkNameAvailabilitys(textField.getSubscriptionId(), value)) {
20-
return AzureValidationInfo.builder().input(textField).message(value + " already existed.").type(AzureValidationInfo.Type.ERROR).build();
20+
try {
21+
if (!MySQLMvpModel.checkNameAvailabilitys(textField.getSubscriptionId(), value)) {
22+
return AzureValidationInfo.builder().input(textField).message(value + " already existed.").type(AzureValidationInfo.Type.ERROR).build();
23+
}
24+
} catch (CloudException e) {
25+
return AzureValidationInfo.builder().input(textField).message(e.getMessage()).type(AzureValidationInfo.Type.ERROR).build();
2126
}
2227
return AzureValidationInfo.OK;
2328
}

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/sqlserver/common/SqlServerNameValidator.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,27 @@
44
*/
55
package com.microsoft.azure.toolkit.intellij.sqlserver.common;
66

7+
import com.azure.core.management.exception.ManagementException;
78
import com.microsoft.azure.toolkit.intellij.database.ServerNameTextField;
89
import com.microsoft.azure.toolkit.lib.Azure;
910
import com.microsoft.azure.toolkit.lib.common.entity.CheckNameAvailabilityResultEntity;
1011
import com.microsoft.azure.toolkit.lib.common.form.AzureValidationInfo;
1112
import com.microsoft.azure.toolkit.lib.sqlserver.service.AzureSqlServer;
1213

1314
import java.util.function.Function;
14-
import java.util.regex.Pattern;
1515

1616
public class SqlServerNameValidator implements Function<ServerNameTextField, AzureValidationInfo> {
1717

18-
private static final Pattern PATTERN = Pattern.compile("^[a-z0-9][a-z0-9-]+[a-z0-9]$");
19-
2018
@Override
2119
public AzureValidationInfo apply(ServerNameTextField textField) {
2220
final String value = textField.getValue();
2321
// validate availability
24-
CheckNameAvailabilityResultEntity resultEntity = Azure.az(AzureSqlServer.class).checkNameAvailability(textField.getSubscriptionId(), value);
22+
CheckNameAvailabilityResultEntity resultEntity = null;
23+
try {
24+
resultEntity = Azure.az(AzureSqlServer.class).checkNameAvailability(textField.getSubscriptionId(), value);
25+
} catch (ManagementException e) {
26+
return AzureValidationInfo.builder().input(textField).message(e.getMessage()).type(AzureValidationInfo.Type.ERROR).build();
27+
}
2528
if (!resultEntity.isAvailable()) {
2629
String message = resultEntity.getUnavailabilityReason();
2730
if ("AlreadyExists".equalsIgnoreCase(resultEntity.getUnavailabilityReason())) {

0 commit comments

Comments
 (0)