This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch 3.1
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.1 by this push:
new 75504e6f80 Fix MetadataService method order (#10922)
75504e6f80 is described below
commit 75504e6f80b04613d1549bb515e3cefc769df1bd
Author: Albumen Kevin <[email protected]>
AuthorDate: Sat Nov 12 17:43:24 2022 +0800
Fix MetadataService method order (#10922)
---
.../main/java/org/apache/dubbo/common/utils/ClassUtils.java | 2 ++
.../main/java/org/apache/dubbo/config/ReferenceConfig.java | 8 +++++---
.../src/main/java/org/apache/dubbo/config/ServiceConfig.java | 11 +++++++----
.../test/java/org/apache/dubbo/config/spring/ConfigTest.java | 2 +-
4 files changed, 15 insertions(+), 8 deletions(-)
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ClassUtils.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ClassUtils.java
index f5fad308a2..83c9af30a9 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ClassUtils.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ClassUtils.java
@@ -26,6 +26,7 @@ import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
@@ -575,6 +576,7 @@ public class ClassUtils {
}
}
}
+ dmns.sort(Comparator.naturalOrder());
return dmns.toArray(new String[0]);
}
}
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
index 478a50a513..ed35be6278 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
@@ -55,8 +55,8 @@ import org.apache.dubbo.rpc.support.ProtocolUtils;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Comparator;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -83,8 +83,8 @@ import static
org.apache.dubbo.common.constants.CommonConstants.TRIPLE;
import static
org.apache.dubbo.common.constants.CommonConstants.UNLOAD_CLUSTER_RELATED;
import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CLUSTER_NO_VALID_PROVIDER;
import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_FAILED_DESTROY_INVOKER;
-import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_NO_METHOD_FOUND;
import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_FAILED_LOAD_ENV_VARIABLE;
+import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_NO_METHOD_FOUND;
import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_PROPERTY_CONFLICT;
import static org.apache.dubbo.common.constants.RegistryConstants.PROVIDED_BY;
import static
org.apache.dubbo.common.constants.RegistryConstants.SUBSCRIBED_SERVICE_NAMES_KEY;
@@ -389,7 +389,9 @@ public class ReferenceConfig<T> extends
ReferenceConfigBase<T> {
logger.warn(CONFIG_NO_METHOD_FOUND, "", "", "No method found
in service interface: " + interfaceClass.getName());
map.put(METHODS_KEY, ANY_VALUE);
} else {
- map.put(METHODS_KEY, StringUtils.join(new
HashSet<>(Arrays.asList(methods)), COMMA_SEPARATOR));
+ List<String> copyOfMethods = new
ArrayList<>(Arrays.asList(methods));
+ copyOfMethods.sort(Comparator.naturalOrder());
+ map.put(METHODS_KEY, String.join(COMMA_SEPARATOR,
copyOfMethods));
}
}
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
index 054f67949b..bff76a8a21 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
@@ -52,8 +52,8 @@ import org.apache.dubbo.rpc.service.GenericService;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Comparator;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@@ -62,6 +62,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;
+import static
org.apache.dubbo.common.constants.CommonConstants.COMMA_SEPARATOR;
import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;
import static
org.apache.dubbo.common.constants.CommonConstants.DUBBO_IP_TO_BIND;
import static
org.apache.dubbo.common.constants.CommonConstants.LOCALHOST_VALUE;
@@ -71,11 +72,11 @@ import static
org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;
import static org.apache.dubbo.common.constants.CommonConstants.REVISION_KEY;
import static
org.apache.dubbo.common.constants.CommonConstants.SERVICE_NAME_MAPPING_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;
+import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_FAILED_EXPORT_SERVICE;
import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_NO_METHOD_FOUND;
+import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_SERVER_DISCONNECTED;
import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_UNEXPORT_ERROR;
import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_USE_RANDOM_PORT;
-import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_FAILED_EXPORT_SERVICE;
-import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_SERVER_DISCONNECTED;
import static org.apache.dubbo.common.constants.RegistryConstants.DYNAMIC_KEY;
import static
org.apache.dubbo.common.constants.RegistryConstants.SERVICE_REGISTRY_PROTOCOL;
import static org.apache.dubbo.common.utils.NetUtils.getAvailablePort;
@@ -457,7 +458,9 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
logger.warn(CONFIG_NO_METHOD_FOUND, "", "", "No method found
in service interface: " + interfaceClass.getName());
map.put(METHODS_KEY, ANY_VALUE);
} else {
- map.put(METHODS_KEY, StringUtils.join(new
HashSet<>(Arrays.asList(methods)), ","));
+ List<String> copyOfMethods = new
ArrayList<>(Arrays.asList(methods));
+ copyOfMethods.sort(Comparator.naturalOrder());
+ map.put(METHODS_KEY, String.join(COMMA_SEPARATOR,
copyOfMethods));
}
}
diff --git
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/ConfigTest.java
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/ConfigTest.java
index ebddc1ff7d..3889988c52 100644
---
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/ConfigTest.java
+++
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/ConfigTest.java
@@ -534,7 +534,7 @@ public class ConfigTest {
urls = bean.getExportedUrls();
assertEquals(1, urls.size());
URL url = urls.get(0);
- assertEquals("sayName,getBox", url.getParameter("methods"));
+ assertEquals("getBox,sayName", url.getParameter("methods"));
} finally {
ctx.stop();
ctx.close();