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);

Reply via email to