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 2020/01/31 07:50:43 UTC

[dubbo] branch master updated: [Dubbo-5633] fixes Provider and Consumer default config do not work (#5682)

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 457b04d  [Dubbo-5633] fixes Provider and Consumer default config do not work (#5682)
457b04d is described below

commit 457b04dcf534ad3a2700eeb0cde483dad1a68a5e
Author: ken.lj <ke...@gmail.com>
AuthorDate: Fri Jan 31 15:50:13 2020 +0800

    [Dubbo-5633] fixes Provider and Consumer default config do not work (#5682)
    
    * fixes Provider and Consumer default config do not work
    
    * create new instance if there isn't one.
---
 .../apache/dubbo/config/ReferenceConfigBase.java   | 15 ++++++------
 .../org/apache/dubbo/config/ServiceConfigBase.java | 25 +++++++------------
 .../dubbo/config/bootstrap/DubboBootstrap.java     | 28 ++++++++++++++++++++++
 3 files changed, 44 insertions(+), 24 deletions(-)

diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java b/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java
index fe91632..4d633c0 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java
@@ -111,15 +111,12 @@ public abstract class ReferenceConfigBase<T> extends AbstractReferenceConfig {
         return shouldInit;
     }
 
-    public void checkDefault() {
-        if (consumer != null) {
-            return;
+    public void checkDefault() throws IllegalStateException {
+        if (consumer == null) {
+            consumer = ApplicationModel.getConfigManager()
+                    .getDefaultConsumer()
+                    .orElse(new ConsumerConfig());
         }
-        setConsumer(ApplicationModel.getConfigManager().getDefaultConsumer().orElseGet(() -> {
-            ConsumerConfig consumerConfig = new ConsumerConfig();
-            consumerConfig.refresh();
-            return consumerConfig;
-        }));
     }
 
     public Class<?> getActualInterface() {
@@ -271,6 +268,8 @@ public abstract class ReferenceConfigBase<T> extends AbstractReferenceConfig {
 
     @Parameter(excluded = true)
     public String getUniqueServiceName() {
+        String group = StringUtils.isEmpty(this.group) ? consumer.getGroup() : this.group;
+        String version = StringUtils.isEmpty(this.version) ? consumer.getVersion() : this.version;
         return URL.buildKey(interfaceName, group, version);
     }
 
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 fbbda9e..3d73efd 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
@@ -197,23 +197,12 @@ public abstract class ServiceConfigBase<T> extends AbstractServiceConfig {
         return ref.getClass();
     }
 
-    public void checkDefault() {
-        createProviderIfAbsent();
-    }
-
-    private void createProviderIfAbsent() {
-        if (provider != null) {
-            return;
+    public void checkDefault() throws IllegalStateException {
+        if (provider == null) {
+            provider = ApplicationModel.getConfigManager()
+                    .getDefaultProvider()
+                    .orElse(new ProviderConfig());
         }
-        setProvider(
-                ApplicationModel.getConfigManager()
-                        .getDefaultProvider()
-                        .orElseGet(() -> {
-                            ProviderConfig providerConfig = new ProviderConfig();
-                            providerConfig.refresh();
-                            return providerConfig;
-                        })
-        );
     }
 
     public void checkProtocol() {
@@ -248,8 +237,10 @@ public abstract class ServiceConfigBase<T> extends AbstractServiceConfig {
                 if (protocolConfigs.isEmpty()) {
                     protocolConfigs = new ArrayList<>(1);
                     ProtocolConfig protocolConfig = new ProtocolConfig();
+                    protocolConfig.setDefault(true);
                     protocolConfig.refresh();
                     protocolConfigs.add(protocolConfig);
+                    ApplicationModel.getConfigManager().addProtocol(protocolConfig);
                 }
                 setProtocols(protocolConfigs);
             }
@@ -411,6 +402,8 @@ public abstract class ServiceConfigBase<T> extends AbstractServiceConfig {
 
     @Parameter(excluded = true)
     public String getUniqueServiceName() {
+        String group = StringUtils.isEmpty(this.group) ? provider.getGroup() : this.group;
+        String version = StringUtils.isEmpty(this.version) ? provider.getVersion() : this.version;
         return URL.buildKey(interfaceName, group, version);
     }
 
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
index 8d97ad7..3d13009 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
@@ -539,6 +539,34 @@ public class DubboBootstrap extends GenericEventListener {
         for (MetadataReportConfig metadataReportConfig : metadatas) {
             ConfigValidationUtils.validateMetadataConfig(metadataReportConfig);
         }
+
+        // check Provider
+        Collection<ProviderConfig> providers = configManager.getProviders();
+        if (CollectionUtils.isEmpty(providers)) {
+            configManager.getDefaultProvider().orElseGet(() -> {
+                ProviderConfig providerConfig = new ProviderConfig();
+                configManager.addProvider(providerConfig);
+                providerConfig.refresh();
+                return providerConfig;
+            });
+        }
+        for (ProviderConfig providerConfig : providers) {
+            ConfigValidationUtils.validateProviderConfig(providerConfig);
+        }
+        // check Consumer
+        Collection<ConsumerConfig> consumers = configManager.getConsumers();
+        if (CollectionUtils.isEmpty(consumers)) {
+            configManager.getDefaultConsumer().orElseGet(() -> {
+                ConsumerConfig consumerConfig = new ConsumerConfig();
+                configManager.addConsumer(consumerConfig);
+                consumerConfig.refresh();
+                return consumerConfig;
+            });
+        }
+        for (ConsumerConfig consumerConfig : consumers) {
+            ConfigValidationUtils.validateConsumerConfig(consumerConfig);
+        }
+
         // check Monitor
         ConfigValidationUtils.validateMonitorConfig(getMonitor());
         // check Metrics