You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by me...@apache.org on 2019/11/18 09:22:46 UTC
[dubbo] branch master updated: [Refactor] Refactor the
DynamicConfiguration interface #5339 (#5340)
This is an automated email from the ASF dual-hosted git repository.
mercyblitz 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 ec16ba4 [Refactor] Refactor the DynamicConfiguration interface #5339 (#5340)
ec16ba4 is described below
commit ec16ba4aef01ffe722b91d7281c4699a34290417
Author: Mercy Ma <me...@gmail.com>
AuthorDate: Mon Nov 18 17:22:25 2019 +0800
[Refactor] Refactor the DynamicConfiguration interface #5339 (#5340)
* Polish apache/dubbo#5306 : [Migration] Upgrade the @since tags in Javadoc migration cloud native to master
* Polish apache/dubbo#5306 : [Migration] Upgrade the @since tags in Javadoc migration cloud native to master
* Polish apache/dubbo#5309 : [ISSURE] The beans of Dubbo's Config can't be found on the ReferenceBean's initialization
* Polish apache/dubbo#5312 : Resolve the demos' issues of zookeeper and nacos
* Polish apache/dubbo#5313 : [Migration] migrate the code in common module from cloud-native branch to master
* Polish apache/dubbo#5316 : [Refactor] Replace @EnableDubboConfigBinding Using spring-context-support
* Polish apache/dubbo#5317 : [Refactor] Refactor ReferenceAnnotationBeanPostProcessor using Alibaba spring-context-suuport API
* Polish apache/dubbo#5321 : Remove BeanFactoryUtils
* Polish apache/dubbo#5321 : Remove AnnotatedBeanDefinitionRegistryUtils
* Polish apache/dubbo#5321 : Remove AnnotationUtils
* Polish apache/dubbo#5321 : Remove ClassUtils
* Polish apache/dubbo#5321 : Remove BeanRegistrar
* Polish apache/dubbo#5321 : Remove ObjectUtils
* Polish apache/dubbo#5321 : Remove PropertySourcesUtils
* Polish apache/dubbo#5325 : [Migration] To migrate dubbo-metadata-api from cloud-native branch
* Polish apache/dubbo#5326 : [Migration] To migrate dubbo-metadata-processor from cloud-native branch
* Polish apache/dubbo#5329 : [Feature] To add the default metadata into ServiceInstance
* Polish apache/dubbo#5339 : [Refactor] Refactor the DynamicConfiguration interface
---
.../cluster/support/AbstractClusterInvoker.java | 2 +-
.../config/configcenter/DynamicConfiguration.java | 7 +---
.../file/FileSystemDynamicConfiguration.java | 2 +-
.../configcenter/nop/NopDynamicConfiguration.java | 2 +-
.../wrapper/CompositeDynamicConfiguration.java | 4 +-
.../org/apache/dubbo/common/utils/StringUtils.java | 21 +++++-----
.../AbstractDynamicConfigurationTest.java | 2 +-
.../consul/ConsulDynamicConfiguration.java | 5 ++-
.../support/nacos/NacosDynamicConfiguration.java | 48 ++++++++++++----------
.../nacos/NacosDynamicConfigurationTest.java | 2 +-
.../zookeeper/ZookeeperDynamicConfiguration.java | 7 ++--
.../ZookeeperDynamicConfigurationTest.java | 2 +-
.../DynamicConfigurationServiceNameMapping.java | 29 ++++++-------
...DynamicConfigurationServiceNameMappingTest.java | 10 ++---
.../java/org/apache/dubbo/qos/textui/TTable.java | 10 ++---
.../java/org/apache/dubbo/qos/textui/TTree.java | 4 +-
.../client/FileSystemServiceDiscovery.java | 6 +--
17 files changed, 79 insertions(+), 84 deletions(-)
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java
index d5437bf..972e95c 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java
@@ -130,7 +130,7 @@ public abstract class AbstractClusterInvoker<T> implements Invoker<T> {
if (CollectionUtils.isEmpty(invokers)) {
return null;
}
- String methodName = invocation == null ? StringUtils.EMPTY : invocation.getMethodName();
+ String methodName = invocation == null ? StringUtils.EMPTY_STRING : invocation.getMethodName();
boolean sticky = invokers.get(0).getUrl()
.getMethodParameter(methodName, CLUSTER_STICKY_KEY, DEFAULT_CLUSTER_STICKY);
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/DynamicConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/DynamicConfiguration.java
index 29b50b6..398ed6f 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/DynamicConfiguration.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/DynamicConfiguration.java
@@ -45,8 +45,6 @@ public interface DynamicConfiguration extends Configuration, AutoCloseable {
String DEFAULT_GROUP = "dubbo";
- String DEFAULT_MAPPING_GROUP = "mapping";
-
/**
* {@link #addListener(String, String, ConfigurationListener)}
*
@@ -138,7 +136,7 @@ public interface DynamicConfiguration extends Configuration, AutoCloseable {
* @since 2.7.5
*/
default boolean publishConfig(String key, String content) throws UnsupportedOperationException {
- return publishConfig(key, DEFAULT_MAPPING_GROUP, content);
+ return publishConfig(key, DEFAULT_GROUP, content);
}
/**
@@ -159,12 +157,11 @@ public interface DynamicConfiguration extends Configuration, AutoCloseable {
* Get the config keys by the specified group
*
* @param group the specified group
- * @param rootKey the
* @return the read-only non-null sorted {@link Set set} of config keys
* @throws UnsupportedOperationException If the under layer does not support
* @since 2.7.5
*/
- default SortedSet<String> getConfigKeys(String group, String rootKey) throws UnsupportedOperationException {
+ default SortedSet<String> getConfigKeys(String group) throws UnsupportedOperationException {
throw new UnsupportedOperationException("No support");
}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java
index e6b49f8..ff2432f 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java
@@ -368,7 +368,7 @@ public class FileSystemDynamicConfiguration extends AbstractDynamicConfiguration
}
@Override
- public SortedSet<String> getConfigKeys(String group, String key) {
+ public SortedSet<String> getConfigKeys(String group) {
File[] files = groupDirectory(group).listFiles(File::isFile);
if (files == null) {
return new TreeSet<>();
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfiguration.java
index ae2b3a0..dfc0d0d 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfiguration.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfiguration.java
@@ -66,7 +66,7 @@ public class NopDynamicConfiguration implements DynamicConfiguration {
* @since 2.7.5
*/
@Override
- public SortedSet<String> getConfigKeys(String group, String key) {
+ public SortedSet<String> getConfigKeys(String group) {
return null;
}
}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/wrapper/CompositeDynamicConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/wrapper/CompositeDynamicConfiguration.java
index 4e21a01..c33a15d 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/wrapper/CompositeDynamicConfiguration.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/wrapper/CompositeDynamicConfiguration.java
@@ -78,8 +78,8 @@ public class CompositeDynamicConfiguration implements DynamicConfiguration {
@Override
@SuppressWarnings("unchecked")
- public SortedSet<String> getConfigKeys(String group, String key) throws UnsupportedOperationException {
- return (SortedSet<String>) iterateConfigOperation(configuration -> configuration.getConfigKeys(group, key));
+ public SortedSet<String> getConfigKeys(String group) throws UnsupportedOperationException {
+ return (SortedSet<String>) iterateConfigOperation(configuration -> configuration.getConfigKeys(group));
}
private void iterateListenerOperation(Consumer<DynamicConfiguration> consumer) {
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/StringUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/StringUtils.java
index c904800..7ef3b08 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/StringUtils.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/StringUtils.java
@@ -50,7 +50,7 @@ import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;
public final class StringUtils {
- public static final String EMPTY = "";
+ public static final String EMPTY_STRING = "";
public static final int INDEX_NOT_FOUND = -1;
public static final String[] EMPTY_STRING_ARRAY = new String[0];
@@ -82,10 +82,9 @@ public final class StringUtils {
public static final String SLASH = valueOf(SLASH_CHAR);
- /**
- * The empty value
- */
- public static final String EMPTY_VALUE = "";
+ public static final char HYPHEN_CHAR = '-';
+
+ public static final String HYPHEN = valueOf(HYPHEN_CHAR);
private StringUtils() {
}
@@ -127,7 +126,7 @@ public final class StringUtils {
return null;
}
if (repeat <= 0) {
- return EMPTY;
+ return EMPTY_STRING;
}
final int inputLength = str.length();
if (repeat == 1 || inputLength == 0) {
@@ -653,7 +652,7 @@ public final class StringUtils {
*/
public static String join(String[] array) {
if (ArrayUtils.isEmpty(array)) {
- return EMPTY;
+ return EMPTY_STRING;
}
StringBuilder sb = new StringBuilder();
for (String s : array) {
@@ -671,7 +670,7 @@ public final class StringUtils {
*/
public static String join(String[] array, char split) {
if (ArrayUtils.isEmpty(array)) {
- return EMPTY;
+ return EMPTY_STRING;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < array.length; i++) {
@@ -692,7 +691,7 @@ public final class StringUtils {
*/
public static String join(String[] array, String split) {
if (ArrayUtils.isEmpty(array)) {
- return EMPTY;
+ return EMPTY_STRING;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < array.length; i++) {
@@ -706,7 +705,7 @@ public final class StringUtils {
public static String join(Collection<String> coll, String split) {
if (CollectionUtils.isEmpty(coll)) {
- return EMPTY;
+ return EMPTY_STRING;
}
StringBuilder sb = new StringBuilder();
@@ -858,7 +857,7 @@ public final class StringUtils {
if (str != null && !isEmpty(str)) {
int sz = str.length();
- for(int i = 0; i < sz; ++i) {
+ for (int i = 0; i < sz; ++i) {
if (!Character.isUpperCase(str.charAt(i))) {
return false;
}
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/AbstractDynamicConfigurationTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/AbstractDynamicConfigurationTest.java
index 5f41b09..00d58f6 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/AbstractDynamicConfigurationTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/AbstractDynamicConfigurationTest.java
@@ -111,7 +111,7 @@ public class AbstractDynamicConfigurationTest {
@Test
public void testGetConfigKeys() {
- assertThrows(UnsupportedOperationException.class, () -> configuration.getConfigKeys(null, null), "No support");
+ assertThrows(UnsupportedOperationException.class, () -> configuration.getConfigKeys(null), "No support");
}
@Test
diff --git a/dubbo-configcenter/dubbo-configcenter-consul/src/main/java/org/apache/dubbo/configcenter/consul/ConsulDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-consul/src/main/java/org/apache/dubbo/configcenter/consul/ConsulDynamicConfiguration.java
index dc02de9..f1aeed2 100644
--- a/dubbo-configcenter/dubbo-configcenter-consul/src/main/java/org/apache/dubbo/configcenter/consul/ConsulDynamicConfiguration.java
+++ b/dubbo-configcenter/dubbo-configcenter-consul/src/main/java/org/apache/dubbo/configcenter/consul/ConsulDynamicConfiguration.java
@@ -46,6 +46,7 @@ import java.util.concurrent.ConcurrentMap;
import static org.apache.dubbo.common.config.configcenter.Constants.CONFIG_NAMESPACE_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;
+import static org.apache.dubbo.common.utils.StringUtils.EMPTY_STRING;
/**
* config center implementation for consul
@@ -95,9 +96,9 @@ public class ConsulDynamicConfiguration implements DynamicConfiguration {
}
@Override
- public SortedSet<String> getConfigKeys(String group, String key) throws UnsupportedOperationException {
+ public SortedSet<String> getConfigKeys(String group) throws UnsupportedOperationException {
SortedSet<String> configKeys = new TreeSet<>();
- String normalizedKey = convertKey(group, key);
+ String normalizedKey = convertKey(group, EMPTY_STRING);
List<String> keys = kvClient.getKeys(normalizedKey);
if (CollectionUtils.isNotEmpty(keys)) {
keys.stream()
diff --git a/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java
index cb5d930..11f02f6 100644
--- a/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java
+++ b/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java
@@ -61,6 +61,8 @@ import static com.alibaba.nacos.client.naming.utils.UtilAndComs.NACOS_NAMING_LOG
import static java.util.Arrays.asList;
import static java.util.Collections.emptyList;
import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;
+import static org.apache.dubbo.common.utils.StringUtils.HYPHEN_CHAR;
+import static org.apache.dubbo.common.utils.StringUtils.SLASH_CHAR;
/**
* The nacos implementation of {@link DynamicConfiguration}
@@ -175,10 +177,12 @@ public class NacosDynamicConfiguration implements DynamicConfiguration {
@Override
public void addListener(String key, String group, ConfigurationListener listener) {
- NacosConfigListener nacosConfigListener = watchListenerMap.computeIfAbsent(key, k -> createTargetListener(key, group));
+ String resolvedGroup = resolveGroup(group);
+ String listenerKey = buildListenerKey(key, group);
+ NacosConfigListener nacosConfigListener = watchListenerMap.computeIfAbsent(listenerKey, k -> createTargetListener(key, resolvedGroup));
nacosConfigListener.addListener(listener);
try {
- configService.addListener(key, group, nacosConfigListener);
+ configService.addListener(key, resolvedGroup, nacosConfigListener);
} catch (NacosException e) {
logger.error(e.getMessage());
}
@@ -186,7 +190,8 @@ public class NacosDynamicConfiguration implements DynamicConfiguration {
@Override
public void removeListener(String key, String group, ConfigurationListener listener) {
- NacosConfigListener eventListener = watchListenerMap.get(key);
+ String listenerKey = buildListenerKey(key, group);
+ NacosConfigListener eventListener = watchListenerMap.get(listenerKey);
if (eventListener != null) {
eventListener.removeListener(listener);
}
@@ -194,12 +199,13 @@ public class NacosDynamicConfiguration implements DynamicConfiguration {
@Override
public String getConfig(String key, String group, long timeout) throws IllegalStateException {
+ String resolvedGroup = resolveGroup(group);
try {
long nacosTimeout = timeout < 0 ? DEFAULT_TIMEOUT : timeout;
- if (StringUtils.isEmpty(group)) {
- group = DEFAULT_GROUP;
+ if (StringUtils.isEmpty(resolvedGroup)) {
+ resolvedGroup = DEFAULT_GROUP;
}
- return configService.getConfig(key, group, nacosTimeout);
+ return configService.getConfig(key, resolvedGroup, nacosTimeout);
} catch (NacosException e) {
logger.error(e.getMessage());
}
@@ -219,12 +225,13 @@ public class NacosDynamicConfiguration implements DynamicConfiguration {
@Override
public boolean publishConfig(String key, String group, String content) {
boolean published = false;
+ String resolvedGroup = resolveGroup(group);
try {
- String value = configService.getConfig(key, group, -1L);
+ String value = configService.getConfig(key, resolvedGroup, -1L);
if (StringUtils.isNotEmpty(value)) {
content = value + "," + content;
}
- published = configService.publishConfig(key, group, content);
+ published = configService.publishConfig(key, resolvedGroup, content);
} catch (NacosException e) {
logger.error(e.getErrMsg());
}
@@ -234,19 +241,19 @@ public class NacosDynamicConfiguration implements DynamicConfiguration {
/**
* TODO Nacos does not support atomic update of the value mapped to a key.
*
- * @param group the specified group
* @param key
+ * @param group the specified group
* @return
*/
@Override
- public SortedSet<String> getConfigKeys(String group, String key) {
+ public SortedSet<String> getConfigKeys(String group) {
// TODO use Nacos Client API to replace HTTP Open API
SortedSet<String> keys = new TreeSet<>();
try {
List<String> paramsValues = asList(
"search", "accurate",
"dataId", "",
- "group", group,
+ "group", resolveGroup(group),
"pageNo", "1",
"pageSize", String.valueOf(Integer.MAX_VALUE)
);
@@ -260,17 +267,6 @@ public class NacosDynamicConfiguration implements DynamicConfiguration {
}
}
return keys;
-
-// SortedSet<String> configKeys = new TreeSet<>();
-// try {
-// String value = configService.getConfig(key, group, -1L);
-// if (value != null) {
-// Collections.addAll(configKeys, value.split(","));
-// }
-// } catch (NacosException e) {
-// logger.error(e.getErrMsg());
-// }
-// return configKeys;
}
private Stream<String> toKeysStream(String content) {
@@ -336,4 +332,12 @@ public class NacosDynamicConfiguration implements DynamicConfiguration {
return ConfigChangeType.MODIFIED;
}
}
+
+ protected String buildListenerKey(String key, String group) {
+ return key + HYPHEN_CHAR + resolveGroup(group);
+ }
+
+ protected String resolveGroup(String group) {
+ return group.replace(SLASH_CHAR, HYPHEN_CHAR);
+ }
}
diff --git a/dubbo-configcenter/dubbo-configcenter-nacos/src/test/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfigurationTest.java b/dubbo-configcenter/dubbo-configcenter-nacos/src/test/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfigurationTest.java
index 8537bec..ac2978d 100644
--- a/dubbo-configcenter/dubbo-configcenter-nacos/src/test/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfigurationTest.java
+++ b/dubbo-configcenter/dubbo-configcenter-nacos/src/test/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfigurationTest.java
@@ -106,7 +106,7 @@ public class NacosDynamicConfigurationTest {
put("key1", "a");
put("key2", "b");
- SortedSet<String> keys = config.getConfigKeys(DynamicConfiguration.DEFAULT_GROUP, null);
+ SortedSet<String> keys = config.getConfigKeys(DynamicConfiguration.DEFAULT_GROUP);
Assertions.assertFalse(keys.isEmpty());
diff --git a/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java
index 50aac74..039b57f 100644
--- a/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java
+++ b/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java
@@ -40,14 +40,13 @@ import static java.util.Collections.unmodifiableSortedSet;
import static org.apache.dubbo.common.config.configcenter.Constants.CONFIG_NAMESPACE_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;
import static org.apache.dubbo.common.utils.CollectionUtils.isEmpty;
+import static org.apache.dubbo.common.utils.StringUtils.EMPTY_STRING;
/**
*
*/
public class ZookeeperDynamicConfiguration implements DynamicConfiguration {
- private static final String EMPTY_STRING = "";
-
private static final Logger logger = LoggerFactory.getLogger(ZookeeperDynamicConfiguration.class);
private Executor executor;
@@ -118,8 +117,8 @@ public class ZookeeperDynamicConfiguration implements DynamicConfiguration {
}
@Override
- public SortedSet<String> getConfigKeys(String group, String key) {
- String path = getPathKey(group, key);
+ public SortedSet<String> getConfigKeys(String group) {
+ String path = getPathKey(group, EMPTY_STRING);
List<String> nodes = zkClient.getChildren(path);
return isEmpty(nodes) ? emptySortedSet() : unmodifiableSortedSet(new TreeSet<>(nodes));
}
diff --git a/dubbo-configcenter/dubbo-configcenter-zookeeper/src/test/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfigurationTest.java b/dubbo-configcenter/dubbo-configcenter-zookeeper/src/test/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfigurationTest.java
index aa77fbb..cc2ac4c 100644
--- a/dubbo-configcenter/dubbo-configcenter-zookeeper/src/test/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfigurationTest.java
+++ b/dubbo-configcenter/dubbo-configcenter-zookeeper/src/test/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfigurationTest.java
@@ -149,7 +149,7 @@ public class ZookeeperDynamicConfigurationTest {
assertTrue(configuration.publishConfig(key, group, content));
assertTrue(configuration.publishConfig(key2, group, content));
- Set<String> configKeys = configuration.getConfigKeys(group, key);
+ Set<String> configKeys = configuration.getConfigKeys(group);
assertEquals(new TreeSet(asList(content)), configKeys);
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/DynamicConfigurationServiceNameMapping.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/DynamicConfigurationServiceNameMapping.java
index 65981f5..d84eba0 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/DynamicConfigurationServiceNameMapping.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/DynamicConfigurationServiceNameMapping.java
@@ -19,27 +19,25 @@ package org.apache.dubbo.metadata;
import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.rpc.model.ApplicationModel;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
+import static java.lang.String.valueOf;
import static java.util.Arrays.asList;
-import static org.apache.dubbo.common.config.configcenter.DynamicConfiguration.DEFAULT_MAPPING_GROUP;
-import static org.apache.dubbo.common.utils.StringUtils.isBlank;
+import static org.apache.dubbo.common.utils.StringUtils.SLASH;
+import static org.apache.dubbo.rpc.model.ApplicationModel.getName;
/**
* The {@link ServiceNameMapping} implementation based on {@link DynamicConfiguration}
*/
public class DynamicConfigurationServiceNameMapping implements ServiceNameMapping {
- private static final List<String> IGNORED_SERVICE_INTERFACES = asList(MetadataService.class.getName());
-
- private static final String SEPARATOR = ":";
+ public static String DEFAULT_MAPPING_GROUP = "mapping";
- private static final String EMPTY = "";
+ private static final List<String> IGNORED_SERVICE_INTERFACES = asList(MetadataService.class.getName());
private final Logger logger = LoggerFactory.getLogger(getClass());
@@ -55,12 +53,13 @@ public class DynamicConfigurationServiceNameMapping implements ServiceNameMappin
// the Dubbo Service Key as group
// the service(application) name as key
// It does matter whatever the content is, we just need a record
- String app = ApplicationModel.getApplication();
+ String key = getName();
+ String content = valueOf(System.currentTimeMillis());
execute(() -> {
- dynamicConfiguration.publishConfig(buildKey(serviceInterface, group, version, protocol), app);
+ dynamicConfiguration.publishConfig(key, buildGroup(serviceInterface, group, version, protocol), content);
if (logger.isInfoEnabled()) {
logger.info(String.format("Dubbo service[%s] mapped to interface name[%s].",
- app, serviceInterface, app));
+ group, serviceInterface, group));
}
});
}
@@ -72,24 +71,20 @@ public class DynamicConfigurationServiceNameMapping implements ServiceNameMappin
Set<String> serviceNames = new LinkedHashSet<>();
execute(() -> {
- Set<String> keys = dynamicConfiguration.getConfigKeys(DEFAULT_MAPPING_GROUP, buildKey(serviceInterface, group, version, protocol));
+ Set<String> keys = dynamicConfiguration.getConfigKeys(buildGroup(serviceInterface, group, version, protocol));
serviceNames.addAll(keys);
});
return Collections.unmodifiableSet(serviceNames);
}
- protected static String buildKey(String serviceInterface, String group, String version, String protocol) {
+ protected static String buildGroup(String serviceInterface, String group, String version, String protocol) {
// the issue : https://github.com/apache/dubbo/issues/4671
// StringBuilder groupBuilder = new StringBuilder(serviceInterface)
// .append(KEY_SEPARATOR).append(defaultString(group))
// .append(KEY_SEPARATOR).append(defaultString(version))
// .append(KEY_SEPARATOR).append(defaultString(protocol));
// return groupBuilder.toString();
- return serviceInterface;
- }
-
- private static String defaultString(String value) {
- return isBlank(value) ? EMPTY : value;
+ return DEFAULT_MAPPING_GROUP + SLASH + serviceInterface;
}
private void execute(Runnable runnable) {
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/DynamicConfigurationServiceNameMappingTest.java b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/DynamicConfigurationServiceNameMappingTest.java
index 9cb78a1..fd1bfe2 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/DynamicConfigurationServiceNameMappingTest.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/DynamicConfigurationServiceNameMappingTest.java
@@ -28,7 +28,7 @@ import java.util.TreeSet;
import static java.util.Arrays.asList;
import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;
-import static org.apache.dubbo.metadata.DynamicConfigurationServiceNameMapping.buildKey;
+import static org.apache.dubbo.metadata.DynamicConfigurationServiceNameMapping.buildGroup;
import static org.apache.dubbo.metadata.ServiceNameMapping.getDefaultExtension;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -54,10 +54,10 @@ public class DynamicConfigurationServiceNameMappingTest {
@Test
public void testBuildGroup() {
- assertEquals("test", buildKey("test", null, null, null));
- assertEquals("test", buildKey("test", "default", null, null));
- assertEquals("test", buildKey("test", "default", "1.0.0", null));
- assertEquals("test", buildKey("test", "default", "1.0.0", "dubbo"));
+ assertEquals("test", buildGroup("test", null, null, null));
+ assertEquals("test", buildGroup("test", "default", null, null));
+ assertEquals("test", buildGroup("test", "default", "1.0.0", null));
+ assertEquals("test", buildGroup("test", "default", "1.0.0", "dubbo"));
}
@Test
diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/textui/TTable.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/textui/TTable.java
index c9a6715..24b8308 100644
--- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/textui/TTable.java
+++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/textui/TTable.java
@@ -24,7 +24,7 @@ import java.util.Scanner;
import static java.lang.Math.abs;
import static java.lang.Math.max;
import static java.lang.String.format;
-import static org.apache.dubbo.common.utils.StringUtils.EMPTY;
+import static org.apache.dubbo.common.utils.StringUtils.EMPTY_STRING;
import static org.apache.dubbo.common.utils.StringUtils.length;
import static org.apache.dubbo.common.utils.StringUtils.repeat;
import static org.apache.dubbo.common.utils.StringUtils.replace;
@@ -128,7 +128,7 @@ public class TTable implements TComponent {
&& border.has(Border.BORDER_INNER_V)) {
borderChar = "|";
} else {
- borderChar = EMPTY;
+ borderChar = EMPTY_STRING;
}
@@ -143,7 +143,7 @@ public class TTable implements TComponent {
data = scanner.nextLine();
hasNextLine = true;
} else {
- data = EMPTY;
+ data = EMPTY_STRING;
}
if (width > 0) {
@@ -181,7 +181,7 @@ public class TTable implements TComponent {
private String getData(int rowIndex, ColumnDefine columnDefine) {
return columnDefine.getRowCount() <= rowIndex
- ? EMPTY
+ ? EMPTY_STRING
: columnDefine.rows.get(rowIndex);
}
@@ -278,7 +278,7 @@ public class TTable implements TComponent {
&& null != columnDataArray[index]) {
columnDefine.rows.add(replaceTab(columnDataArray[index].toString()));
} else {
- columnDefine.rows.add(EMPTY);
+ columnDefine.rows.add(EMPTY_STRING);
}
}
}
diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/textui/TTree.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/textui/TTree.java
index 50dca53..337f0b2 100644
--- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/textui/TTree.java
+++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/textui/TTree.java
@@ -22,7 +22,7 @@ import java.util.List;
import java.util.Scanner;
import static java.lang.System.currentTimeMillis;
-import static org.apache.dubbo.common.utils.StringUtils.EMPTY;
+import static org.apache.dubbo.common.utils.StringUtils.EMPTY_STRING;
import static org.apache.dubbo.common.utils.StringUtils.length;
import static org.apache.dubbo.common.utils.StringUtils.repeat;
@@ -87,7 +87,7 @@ public class TTree implements TComponent {
} else {
treeSB.append(prefix)
.append(repeat(' ', stepStringLength))
- .append(hasChild ? "|" : EMPTY)
+ .append(hasChild ? "|" : EMPTY_STRING)
.append(repeat(' ', costPrefixLength))
.append(scanner.nextLine())
.append(System.lineSeparator());
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/FileSystemServiceDiscovery.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/FileSystemServiceDiscovery.java
index 7765444..82bc860 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/FileSystemServiceDiscovery.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/FileSystemServiceDiscovery.java
@@ -45,7 +45,7 @@ import java.util.stream.Collectors;
import static com.alibaba.fastjson.JSON.toJSONString;
import static java.lang.String.format;
import static java.nio.channels.FileChannel.open;
-import static org.apache.dubbo.common.config.configcenter.DynamicConfiguration.DEFAULT_MAPPING_GROUP;
+import static org.apache.dubbo.common.config.configcenter.DynamicConfiguration.DEFAULT_GROUP;
import static org.apache.dubbo.common.config.configcenter.file.FileSystemDynamicConfiguration.CONFIG_CENTER_DIR_PARAM_NAME;
/**
@@ -80,7 +80,7 @@ public class FileSystemServiceDiscovery implements ServiceDiscovery, EventListen
private void registerListener() {
getServices().forEach(serviceName -> {
- dynamicConfiguration.getConfigKeys(DEFAULT_MAPPING_GROUP, serviceName).forEach(serviceInstanceId -> {
+ dynamicConfiguration.getConfigKeys(DEFAULT_GROUP).forEach(serviceInstanceId -> {
dynamicConfiguration.addListener(serviceInstanceId, serviceName, this::onConfigChanged);
});
});
@@ -121,7 +121,7 @@ public class FileSystemServiceDiscovery implements ServiceDiscovery, EventListen
@Override
public List<ServiceInstance> getInstances(String serviceName) {
- return dynamicConfiguration.getConfigKeys(DEFAULT_MAPPING_GROUP, serviceName)
+ return dynamicConfiguration.getConfigKeys(DEFAULT_GROUP)
.stream()
.map(serviceInstanceId -> dynamicConfiguration.getConfig(serviceInstanceId, serviceName))
.map(content -> JSON.parseObject(content, DefaultServiceInstance.class))