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