This is an automated email from the ASF dual-hosted git repository.

iluo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/master by this push:
     new a032767  nacos-registry:serviceName split error (#4974)
a032767 is described below

commit a0327674c610dac69d65467f8810ccfc65997b8f
Author: charish00 <charis...@163.com>
AuthorDate: Thu Sep 5 16:30:53 2019 +0800

    nacos-registry:serviceName split error (#4974)
    
    * nacos-registry:serviceName split error
    
    * nacos-registry::remove depency org.apache.commons.lang3
---
 .../apache/dubbo/registry/nacos/NacosRegistry.java | 89 ++++++++++------------
 .../dubbo/registry/nacos/NacosServiceName.java     | 44 ++++-------
 2 files changed, 57 insertions(+), 76 deletions(-)

diff --git 
a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java
 
b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java
index b364df4..5c90780 100644
--- 
a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java
+++ 
b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java
@@ -16,24 +16,23 @@
  */
 package org.apache.dubbo.registry.nacos;
 
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.logger.Logger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.common.utils.UrlUtils;
-import org.apache.dubbo.registry.NotifyListener;
-import org.apache.dubbo.registry.Registry;
-import org.apache.dubbo.registry.support.FailbackRegistry;
-
-import com.alibaba.nacos.api.exception.NacosException;
-import com.alibaba.nacos.api.naming.NamingService;
-import com.alibaba.nacos.api.naming.listener.EventListener;
-import com.alibaba.nacos.api.naming.listener.NamingEvent;
-import com.alibaba.nacos.api.naming.pojo.Instance;
-import com.alibaba.nacos.api.naming.pojo.ListView;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.StringUtils;
+import static java.util.Collections.singleton;
+import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;
+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;
+import static org.apache.dubbo.common.constants.RegistryConstants.CATEGORY_KEY;
+import static 
org.apache.dubbo.common.constants.RegistryConstants.CONFIGURATORS_CATEGORY;
+import static 
org.apache.dubbo.common.constants.RegistryConstants.CONSUMERS_CATEGORY;
+import static 
org.apache.dubbo.common.constants.RegistryConstants.DEFAULT_CATEGORY;
+import static 
org.apache.dubbo.common.constants.RegistryConstants.PROVIDERS_CATEGORY;
+import static 
org.apache.dubbo.common.constants.RegistryConstants.ROUTERS_CATEGORY;
+import static org.apache.dubbo.registry.Constants.ADMIN_PROTOCOL;
+import static org.apache.dubbo.registry.nacos.NacosServiceName.valueOf;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -49,20 +48,20 @@ import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
-import static java.util.Collections.singleton;
-import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;
-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;
-import static org.apache.dubbo.common.constants.RegistryConstants.CATEGORY_KEY;
-import static 
org.apache.dubbo.common.constants.RegistryConstants.CONFIGURATORS_CATEGORY;
-import static 
org.apache.dubbo.common.constants.RegistryConstants.CONSUMERS_CATEGORY;
-import static 
org.apache.dubbo.common.constants.RegistryConstants.DEFAULT_CATEGORY;
-import static 
org.apache.dubbo.common.constants.RegistryConstants.PROVIDERS_CATEGORY;
-import static 
org.apache.dubbo.common.constants.RegistryConstants.ROUTERS_CATEGORY;
-import static org.apache.dubbo.registry.Constants.ADMIN_PROTOCOL;
-import static org.apache.dubbo.registry.nacos.NacosServiceName.valueOf;
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.logger.Logger;
+import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.common.utils.UrlUtils;
+import org.apache.dubbo.registry.NotifyListener;
+import org.apache.dubbo.registry.Registry;
+import org.apache.dubbo.registry.support.FailbackRegistry;
+
+import com.alibaba.nacos.api.exception.NacosException;
+import com.alibaba.nacos.api.naming.NamingService;
+import com.alibaba.nacos.api.naming.listener.EventListener;
+import com.alibaba.nacos.api.naming.listener.NamingEvent;
+import com.alibaba.nacos.api.naming.pojo.Instance;
+import com.alibaba.nacos.api.naming.pojo.ListView;
 
 /**
  * Nacos {@link Registry}
@@ -77,7 +76,7 @@ public class NacosRegistry extends FailbackRegistry {
     /**
      * All supported categories
      */
-    private static final String[] ALL_SUPPORTED_CATEGORIES = of(
+    private static final List<String> ALL_SUPPORTED_CATEGORIES = Arrays.asList(
             PROVIDERS_CATEGORY,
             CONSUMERS_CATEGORY,
             ROUTERS_CATEGORY,
@@ -252,7 +251,7 @@ public class NacosRegistry extends FailbackRegistry {
                     boolean accepted = false;
                     for (String category : ALL_SUPPORTED_CATEGORIES) {
                         String prefix = category + SERVICE_NAME_SEPARATOR;
-                        if (StringUtils.startsWith(serviceName, prefix)) {
+                        if (serviceName != null && 
serviceName.startsWith(prefix)) {
                             accepted = true;
                             break;
                         }
@@ -310,7 +309,7 @@ public class NacosRegistry extends FailbackRegistry {
 
     private void filterServiceNames(Set<String> serviceNames, URL url) {
 
-        final String[] categories = getCategories(url);
+        final List<String> categories = getCategories(url);
 
         final String targetServiceInterface = url.getServiceInterface();
 
@@ -324,32 +323,32 @@ public class NacosRegistry extends FailbackRegistry {
             // (required) segments[1] = serviceInterface
             // (optional) segments[2] = version
             // (optional) segments[3] = group
-            String[] segments = StringUtils.split(serviceName, 
SERVICE_NAME_SEPARATOR);
+            String[] segments = serviceName.split(SERVICE_NAME_SEPARATOR, -1);
             int length = segments.length;
             if (length != 4) { // must present 4 segments
                 return false;
             }
 
             String category = segments[CATEGORY_INDEX];
-            if (!ArrayUtils.contains(categories, category)) { // no match 
category
+            if (!categories.contains(category)) { // no match category
                 return false;
             }
 
             String serviceInterface = segments[SERVICE_INTERFACE_INDEX];
             if (!WILDCARD.equals(targetServiceInterface) &&
-                    !StringUtils.equals(targetServiceInterface, 
serviceInterface)) { // no match service interface
+                    !targetServiceInterface.equals(serviceInterface)) { // no 
match service interface
                 return false;
             }
 
             String version = segments[SERVICE_VERSION_INDEX];
             if (!WILDCARD.equals(targetVersion) &&
-                    !StringUtils.equals(targetVersion, version)) { // no match 
service version
+                    !targetVersion.equals(version)) { // no match service 
version
                 return false;
             }
 
             String group = segments[SERVICE_GROUP_INDEX];
             return group == null || WILDCARD.equals(targetGroup)
-                    || StringUtils.equals(targetGroup, group);
+                    || targetGroup.equals(group);
         });
     }
 
@@ -360,8 +359,8 @@ public class NacosRegistry extends FailbackRegistry {
 
     @Deprecated
     private List<String> doGetServiceNames(URL url) {
-        String[] categories = getCategories(url);
-        List<String> serviceNames = new ArrayList<>(categories.length);
+        List<String> categories = getCategories(url);
+        List<String> serviceNames = new ArrayList<>(categories.size());
         for (String category : categories) {
             final String serviceName = getServiceName(url, category);
             serviceNames.add(serviceName);
@@ -418,9 +417,9 @@ public class NacosRegistry extends FailbackRegistry {
      * @param url {@link URL}
      * @return non-null array
      */
-    private String[] getCategories(URL url) {
+    private List<String> getCategories(URL url) {
         return ANY_VALUE.equals(url.getServiceInterface()) ?
-                ALL_SUPPORTED_CATEGORIES : of(DEFAULT_CATEGORY);
+                ALL_SUPPORTED_CATEGORIES : Arrays.asList(DEFAULT_CATEGORY);
     }
 
     private URL buildURL(Instance instance) {
@@ -475,12 +474,6 @@ public class NacosRegistry extends FailbackRegistry {
         filterData(instances, Instance::isEnabled);
     }
 
-    @SafeVarargs
-    private static <T> T[] of(T... values) {
-        return values;
-    }
-
-
     /**
      * A filter for Nacos data
      *
diff --git 
a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceName.java
 
b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceName.java
index 9a85bed..bb609ca 100644
--- 
a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceName.java
+++ 
b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceName.java
@@ -16,23 +16,17 @@
  */
 package org.apache.dubbo.registry.nacos;
 
-import org.apache.dubbo.common.URL;
-
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.StringUtils;
-
-import java.util.Objects;
-
-import static org.apache.commons.lang3.ArrayUtils.getLength;
-import static org.apache.commons.lang3.StringUtils.contains;
-import static org.apache.commons.lang3.StringUtils.isBlank;
-import static org.apache.commons.lang3.StringUtils.split;
-import static org.apache.commons.lang3.StringUtils.splitPreserveAllTokens;
 import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;
 import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;
 import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;
 import static org.apache.dubbo.common.constants.RegistryConstants.CATEGORY_KEY;
 import static 
org.apache.dubbo.common.constants.RegistryConstants.DEFAULT_CATEGORY;
+import static org.apache.dubbo.common.utils.StringUtils.isBlank;
+
+import java.util.Arrays;
+import java.util.Objects;
+
+import org.apache.dubbo.common.URL;
 
 /**
  * The service name of Nacos
@@ -80,7 +74,7 @@ public class NacosServiceName {
 
     public NacosServiceName(String value) {
         this.value = value;
-        String[] segments = splitPreserveAllTokens(value, NAME_SEPARATOR);
+        String[] segments = value.split(NAME_SEPARATOR, -1);
         this.category = segments[CATEGORY_INDEX];
         this.serviceInterface = segments[SERVICE_INTERFACE_INDEX];
         this.version = segments[SERVICE_VERSION_INDEX];
@@ -113,12 +107,12 @@ public class NacosServiceName {
         }
 
         // Not match comparison
-        if (!StringUtils.equals(this.category, concreteServiceName.category) &&
-                !ArrayUtils.contains(splitPreserveAllTokens(this.category, 
VALUE_SEPARATOR), concreteServiceName.category)) {
+        if (!this.category.equals(concreteServiceName.category)
+                && !matchRange(this.category, concreteServiceName.category)) {
             return false;
         }
 
-        if (!StringUtils.equals(this.serviceInterface, 
concreteServiceName.serviceInterface)) {
+        if 
(!this.serviceInterface.equals(concreteServiceName.serviceInterface)) {
             return false;
         }
 
@@ -132,13 +126,12 @@ public class NacosServiceName {
         }
 
         // range condition
-        if (!StringUtils.equals(this.version, concreteServiceName.version) &&
-                !matchRange(this.version, concreteServiceName.version)) {
+        if (!this.version.equals(concreteServiceName.version)
+                && !matchRange(this.version, concreteServiceName.version)) {
             return false;
         }
 
-        if (!StringUtils.equals(this.group, concreteServiceName.group) &&
-                !matchRange(this.group, concreteServiceName.group)) {
+        if (!this.group.equals(concreteServiceName.group) && 
!matchRange(this.group, concreteServiceName.group)) {
             return false;
         }
 
@@ -152,8 +145,8 @@ public class NacosServiceName {
         if (!isRange(range)) {
             return false;
         }
-        String[] values = split(range, VALUE_SEPARATOR);
-        return ArrayUtils.contains(values, value);
+        String[] values = range.split(VALUE_SEPARATOR);
+        return Arrays.asList(values).contains(value);
     }
 
     private boolean isConcrete(String value) {
@@ -165,11 +158,7 @@ public class NacosServiceName {
     }
 
     private boolean isRange(String value) {
-        if (contains(value, VALUE_SEPARATOR)) {
-            String[] values = split(value, VALUE_SEPARATOR);
-            return getLength(values) > 1;
-        }
-        return false;
+        return value != null && value.indexOf(VALUE_SEPARATOR) > -1 && 
value.split(VALUE_SEPARATOR).length > 1;
     }
 
     public String getCategory() {
@@ -219,7 +208,6 @@ public class NacosServiceName {
                 .toString();
     }
 
-
     @Override
     public boolean equals(Object o) {
         if (this == o) {

Reply via email to