Fix issue#5411 (#5427)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java
index 95107b4..0e3a9e6 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java
@@ -59,7 +59,7 @@
/**
* Lazy create connection
*/
- protected Boolean lazy = false;
+ protected Boolean lazy;
protected String reconnect;
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 2ab7936..f7488f6 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 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 296e604..90de5eb 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
@@ -179,13 +179,17 @@
}
public Optional<ProviderConfig> getDefaultProvider() {
- return getProvider(DEFAULT_KEY);
+ return getProvider(genDefaultId(ProviderConfig.class));
}
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) {
@@ -201,7 +205,7 @@
}
public Optional<ConsumerConfig> getDefaultConsumer() {
- return getConsumer(DEFAULT_KEY);
+ return getConsumer(genDefaultId(ConsumerConfig.class));
}
public Collection<ConsumerConfig> getConsumers() {
@@ -484,9 +488,20 @@
}
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) ?
- config.getClass().getSimpleName() + "#" + DEFAULT_KEY : null;
+ genDefaultId(config.getClass()) : 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 2314370..e226b94 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
@@ -132,30 +132,26 @@
Collection<ProviderConfig> configs = configManager.getProviders();
assertEquals(1, configs.size());
assertEquals(config, configs.iterator().next());
- assertFalse(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 config = new ConsumerConfig();
- configManager.addConsumers(asList(config, null));
- Collection<ConsumerConfig> configs = configManager.getConsumers();
- assertEquals(1, configs.size());
- assertEquals(config, configs.iterator().next());
- assertFalse(configManager.getDefaultConsumer().isPresent());
+ ConsumerConfig configDefault = new ConsumerConfig();
+ configDefault.setDefault(true);
+ configDefault.setId("default-id");
- config.setId(DEFAULT_KEY);
- configManager.addConsumer(config);
- assertTrue(configManager.getDefaultConsumer().isPresent());
- configs = configManager.getConsumers();
+ ConsumerConfig config = new ConsumerConfig();
+ config.setDefault(false);
+ config.setId("my-id");
+
+ configManager.addConsumers(asList(configDefault, config));
+
+ Collection<ConsumerConfig> configs = configManager.getConsumers();
assertEquals(2, configs.size());
+ assertTrue(configManager.getDefaultConsumer().isPresent());
+ assertEquals("default-id", configManager.getDefaultConsumer().get().getId());
}
// 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 0105571..58e0f8b 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>
\ No newline at end of file
+</beans>