From 9bbc8dbeb87d2ad948699dd4d477814b86a98062 Mon Sep 17 00:00:00 2001 From: xingrufei Date: Wed, 9 Jun 2021 17:18:59 +0800 Subject: [PATCH 1/2] Fix Urls may be null, and NullPointerException will be thrown in ConfigValidationUtils (#8020) Signed-off-by: xingrufei --- .../config/utils/ConfigValidationUtils.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 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 a2524bab6c1..b3c28dc86fd 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 @@ -205,15 +205,17 @@ public static List loadRegistries(AbstractInterfaceConfig interfaceConfig, } List urls = UrlUtils.parseURLs(address, map); - for (URL url : urls) { - - url = URLBuilder.from(url) - .addParameter(REGISTRY_KEY, url.getProtocol()) - .setProtocol(extractRegistryType(url)) - .build(); - if ((provider && url.getParameter(REGISTER_KEY, true)) - || (!provider && url.getParameter(SUBSCRIBE_KEY, true))) { - registryList.add(url); + if (CollectionUtils.isNotEmpty(urls)) { + for (URL url : urls) { + + url = URLBuilder.from(url) + .addParameter(REGISTRY_KEY, url.getProtocol()) + .setProtocol(extractRegistryType(url)) + .build(); + if ((provider && url.getParameter(REGISTER_KEY, true)) + || (!provider && url.getParameter(SUBSCRIBE_KEY, true))) { + registryList.add(url); + } } } } From 21e2f084b965442774bd2b158142739c7bd3a4ea Mon Sep 17 00:00:00 2001 From: xingrufei Date: Thu, 10 Jun 2021 11:29:03 +0800 Subject: [PATCH 2/2] Use throw exception instead of non-null check Signed-off-by: xingrufei --- .../config/utils/ConfigValidationUtils.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 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 b3c28dc86fd..2f8090a070e 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 @@ -205,17 +205,18 @@ public static List loadRegistries(AbstractInterfaceConfig interfaceConfig, } List urls = UrlUtils.parseURLs(address, map); - if (CollectionUtils.isNotEmpty(urls)) { - for (URL url : urls) { - - url = URLBuilder.from(url) - .addParameter(REGISTRY_KEY, url.getProtocol()) - .setProtocol(extractRegistryType(url)) - .build(); - if ((provider && url.getParameter(REGISTER_KEY, true)) - || (!provider && url.getParameter(SUBSCRIBE_KEY, true))) { - registryList.add(url); - } + if (urls == null) { + throw new IllegalStateException(String.format("url should not be null,address is %s", address)); + } + for (URL url : urls) { + + url = URLBuilder.from(url) + .addParameter(REGISTRY_KEY, url.getProtocol()) + .setProtocol(extractRegistryType(url)) + .build(); + if ((provider && url.getParameter(REGISTER_KEY, true)) + || (!provider && url.getParameter(SUBSCRIBE_KEY, true))) { + registryList.add(url); } } }