This is an automated email from the ASF dual-hosted git repository.
kimmking pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.2 by this push:
new 9d04bc5c25 stop startup if dubbo application name configuration is
invalid (#13343)
9d04bc5c25 is described below
commit 9d04bc5c250f9a86e7d3dfb2ac03629fc9194693
Author: zrlw <[email protected]>
AuthorDate: Fri Jan 12 22:55:18 2024 +0800
stop startup if dubbo application name configuration is invalid (#13343)
---
.../dubbo/config/utils/ConfigValidationUtils.java | 18 +++++++++++++-----
.../org/apache/dubbo/config/ReferenceConfigTest.java | 2 +-
.../dubbo/config/utils/ConfigValidationUtilsTest.java | 3 +++
3 files changed, 17 insertions(+), 6 deletions(-)
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java
index 728aa21845..afa057ae7f 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java
@@ -491,6 +491,12 @@ public class ConfigValidationUtils {
+ "Please add <dubbo:application name=\"...\" /> to your
spring config.");
}
+ String name = config.getName();
+ if (!checkName(NAME, name)) {
+ throw new IllegalStateException(
+ String.format("please correct dubbo application name: %s
at your spring config.", name));
+ }
+
// backward compatibility
ScopeModel scopeModel =
ScopeModelUtil.getOrDefaultApplicationModel(config.getScopeModel());
PropertiesConfiguration configuration =
scopeModel.modelEnvironment().getPropertiesConfiguration();
@@ -504,7 +510,6 @@ public class ConfigValidationUtils {
}
}
- checkName(NAME, config.getName());
checkMultiName(OWNER, config.getOwner());
checkName(ORGANIZATION, config.getOrganization());
checkName(ARCHITECTURE, config.getArchitecture());
@@ -732,8 +737,8 @@ public class ConfigValidationUtils {
checkProperty(property, value, MAX_PATH_LENGTH, null);
}
- public static void checkName(String property, String value) {
- checkProperty(property, value, MAX_LENGTH, PATTERN_NAME);
+ public static boolean checkName(String property, String value) {
+ return checkProperty(property, value, MAX_LENGTH, PATTERN_NAME);
}
public static void checkHost(String property, String value) {
@@ -789,9 +794,9 @@ public class ConfigValidationUtils {
}
}
- public static void checkProperty(String property, String value, int
maxlength, Pattern pattern) {
+ public static boolean checkProperty(String property, String value, int
maxlength, Pattern pattern) {
if (StringUtils.isEmpty(value)) {
- return;
+ return false;
}
if (value.length() > maxlength) {
logger.error(
@@ -800,6 +805,7 @@ public class ConfigValidationUtils {
"",
"Parameter value format error. Invalid " + property +
"=\"" + value + "\" is longer than "
+ maxlength);
+ return false;
}
if (pattern != null) {
Matcher matcher = pattern.matcher(value);
@@ -811,7 +817,9 @@ public class ConfigValidationUtils {
"Parameter value format error. Invalid " + property
+ "=\"" + value + "\" contains illegal "
+ "character, only digit, letter, '-', '_' or
'.' is legal.");
+ return false;
}
}
+ return true;
}
}
diff --git
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
index 983c19299a..7b67217e57 100644
---
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
+++
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
@@ -873,7 +873,7 @@ class ReferenceConfigTest {
referenceConfig.setGeneric("true");
DubboBootstrap.getInstance()
- .application("demo app")
+ .application("demo-app")
.reference(referenceConfig)
.initialize();
diff --git
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ConfigValidationUtilsTest.java
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ConfigValidationUtilsTest.java
index fb6dae095c..5cb5036e69 100644
---
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ConfigValidationUtilsTest.java
+++
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ConfigValidationUtilsTest.java
@@ -100,6 +100,9 @@ class ConfigValidationUtilsTest {
mockedStatic
.when(() ->
ConfigValidationUtils.validateApplicationConfig(any()))
.thenCallRealMethod();
+ mockedStatic
+ .when(() -> ConfigValidationUtils.checkName(any(), any()))
+ .thenReturn(true);
ApplicationConfig config = new ApplicationConfig();
Assertions.assertThrows(IllegalStateException.class, () -> {
ConfigValidationUtils.validateApplicationConfig(config);