You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2019/12/10 09:42:50 UTC
[dubbo] branch master updated: bugfix: configmanager cannot get
consumer/provider config. (#5449)
This is an automated email from the ASF dual-hosted git repository.
liujun 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 20f9618 bugfix: configmanager cannot get consumer/provider config. (#5449)
20f9618 is described below
commit 20f9618283f56579038f432714748267bf9d66fc
Author: ken.lj <ke...@gmail.com>
AuthorDate: Tue Dec 10 17:42:19 2019 +0800
bugfix: configmanager cannot get consumer/provider config. (#5449)
---
.../org/apache/dubbo/config/ServiceConfigBase.java | 2 +-
.../apache/dubbo/config/context/ConfigManager.java | 35 +++++++++++-----------
.../dubbo/config/context/ConfigManagerTest.java | 26 +++++++++-------
.../apache/dubbo/config/spring/demo-provider.xml | 2 +-
4 files changed, 34 insertions(+), 31 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java b/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java
index f7488f6..2ab7936 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java
@@ -462,4 +462,4 @@ public abstract class ServiceConfigBase<T> extends AbstractServiceConfig {
public abstract boolean isUnexported();
-}
+}
\ No newline at end of file
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/context/ConfigManager.java b/dubbo-common/src/main/java/org/apache/dubbo/config/context/ConfigManager.java
index 90de5eb..9c9e185 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/context/ConfigManager.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/context/ConfigManager.java
@@ -178,18 +178,21 @@ public class ConfigManager extends LifecycleAdapter implements FrameworkExt {
return ofNullable(getConfig(getTagName(ProviderConfig.class), id));
}
+ /**
+ * Only allows one default ProviderConfig
+ */
public Optional<ProviderConfig> getDefaultProvider() {
- return getProvider(genDefaultId(ProviderConfig.class));
+ List<ProviderConfig> providerConfigs = getDefaultConfigs(getConfigsMap(getTagName(ProviderConfig.class)));
+ if (CollectionUtils.isNotEmpty(providerConfigs)) {
+ return Optional.of(providerConfigs.get(0));
+ }
+ return Optional.empty();
}
public Collection<ProviderConfig> getProviders() {
return getConfigs(getTagName(ProviderConfig.class));
}
- private static String genDefaultId(Class<?> clazz) {
- return clazz.getSimpleName() + "#" + DEFAULT_KEY;
- }
-
// ConsumerConfig correlative methods
public void addConsumer(ConsumerConfig consumerConfig) {
@@ -204,8 +207,15 @@ public class ConfigManager extends LifecycleAdapter implements FrameworkExt {
return ofNullable(getConfig(getTagName(ConsumerConfig.class), id));
}
+ /**
+ * Only allows one default ConsumerConfig
+ */
public Optional<ConsumerConfig> getDefaultConsumer() {
- return getConsumer(genDefaultId(ConsumerConfig.class));
+ List<ConsumerConfig> consumerConfigs = getDefaultConfigs(getConfigsMap(getTagName(ConsumerConfig.class)));
+ if (CollectionUtils.isNotEmpty(consumerConfigs)) {
+ return Optional.of(consumerConfigs.get(0));
+ }
+ return Optional.empty();
}
public Collection<ConsumerConfig> getConsumers() {
@@ -488,20 +498,9 @@ public class ConfigManager extends LifecycleAdapter implements FrameworkExt {
}
static <C extends AbstractConfig> String getId(C config) {
- if ((config instanceof ProviderConfig
- || config instanceof ConsumerConfig
- || config instanceof ApplicationConfig
- || config instanceof MonitorConfig
- || config instanceof RegistryConfig
- || config instanceof ProtocolConfig
- || config instanceof ModuleConfig)
- && isDefaultConfig(config)) {
- return genDefaultId(config.getClass());
- }
-
String id = config.getId();
return isNotEmpty(id) ? id : isDefaultConfig(config) ?
- genDefaultId(config.getClass()) : null;
+ config.getClass().getSimpleName() + "#" + DEFAULT_KEY : null;
}
static <C extends AbstractConfig> boolean isDefaultConfig(C config) {
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/config/context/ConfigManagerTest.java b/dubbo-common/src/test/java/org/apache/dubbo/config/context/ConfigManagerTest.java
index e226b94..07d0a52 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/config/context/ConfigManagerTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/config/context/ConfigManagerTest.java
@@ -133,25 +133,29 @@ public class ConfigManagerTest {
assertEquals(1, configs.size());
assertEquals(config, configs.iterator().next());
assertTrue(configManager.getDefaultProvider().isPresent());
+
+ config.setId(DEFAULT_KEY);
+ configManager.addProvider(config);
+ assertTrue(configManager.getDefaultProvider().isPresent());
+ configs = configManager.getProviders();
+ assertEquals(2, configs.size());
}
// Test ConsumerConfig correlative methods
@Test
public void testConsumerConfig() {
- ConsumerConfig configDefault = new ConsumerConfig();
- configDefault.setDefault(true);
- configDefault.setId("default-id");
-
ConsumerConfig config = new ConsumerConfig();
- config.setDefault(false);
- config.setId("my-id");
-
- configManager.addConsumers(asList(configDefault, config));
-
+ configManager.addConsumers(asList(config, null));
Collection<ConsumerConfig> configs = configManager.getConsumers();
- assertEquals(2, configs.size());
+ assertEquals(1, configs.size());
+ assertEquals(config, configs.iterator().next());
assertTrue(configManager.getDefaultConsumer().isPresent());
- assertEquals("default-id", configManager.getDefaultConsumer().get().getId());
+
+ config.setId(DEFAULT_KEY);
+ configManager.addConsumer(config);
+ assertTrue(configManager.getDefaultConsumer().isPresent());
+ configs = configManager.getConsumers();
+ assertEquals(2, configs.size());
}
// Test ProtocolConfig correlative methods
diff --git a/dubbo-config/dubbo-config-spring/src/test/resources/org/apache/dubbo/config/spring/demo-provider.xml b/dubbo-config/dubbo-config-spring/src/test/resources/org/apache/dubbo/config/spring/demo-provider.xml
index 58e0f8b..0105571 100644
--- a/dubbo-config/dubbo-config-spring/src/test/resources/org/apache/dubbo/config/spring/demo-provider.xml
+++ b/dubbo-config/dubbo-config-spring/src/test/resources/org/apache/dubbo/config/spring/demo-provider.xml
@@ -34,4 +34,4 @@
<bean id="demoService" class="org.apache.dubbo.config.spring.impl.DemoServiceImpl"/>
-</beans>
+</beans>
\ No newline at end of file