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/19 07:14:36 UTC
[dubbo] 04/04: Fix multi protocol does not work when referencing in
ProviderConfig (#5498)
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
commit 7e4b2f323cd264bc9f282d06b02e03adb49ed606
Author: ken.lj <ke...@gmail.com>
AuthorDate: Wed Dec 18 11:06:03 2019 +0800
Fix multi protocol does not work when referencing in ProviderConfig (#5498)
fix #5398
---
.../src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java | 3 +++
.../src/main/java/org/apache/dubbo/config/ServiceConfigBase.java | 6 ++++++
.../src/main/java/org/apache/dubbo/config/ServiceConfig.java | 2 +-
.../dubbo/config/spring/schema/DubboBeanDefinitionParser.java | 3 ++-
4 files changed, 12 insertions(+), 2 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 1eac623..3d52969 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
@@ -136,6 +136,9 @@ public abstract class ReferenceConfigBase<T> extends AbstractReferenceConfig {
if (monitor == null) {
setMonitor(consumer.getMonitor());
}
+ if (StringUtils.isEmpty(registryIds)) {
+ setRegistryIds(consumer.getRegistryIds());
+ }
}
if (module != null) {
if (registries == null) {
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 5b0c41f..d7ee88b 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
@@ -217,6 +217,12 @@ public abstract class ServiceConfigBase<T> extends AbstractServiceConfig {
if (configCenter == null) {
setConfigCenter(provider.getConfigCenter());
}
+ if (StringUtils.isEmpty(registryIds)) {
+ setRegistryIds(provider.getRegistryIds());
+ }
+ if (StringUtils.isEmpty(protocolIds)) {
+ setProtocolIds(provider.getProtocolIds());
+ }
}
if (module != null) {
if (registries == null) {
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
index 4513437..0a081c5 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
@@ -207,7 +207,7 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
}
private void checkAndUpdateSubConfigs() {
- // Use default configs defined explicitly on global scope
+ // Use default configs defined explicitly with global scope
completeCompoundConfigs();
checkDefault();
checkProtocol();
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboBeanDefinitionParser.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboBeanDefinitionParser.java
index d2a3e08..9d9280d 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboBeanDefinitionParser.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboBeanDefinitionParser.java
@@ -20,6 +20,7 @@ import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.utils.ReflectUtils;
import org.apache.dubbo.common.utils.StringUtils;
+import org.apache.dubbo.config.AbstractServiceConfig;
import org.apache.dubbo.config.ArgumentConfig;
import org.apache.dubbo.config.ConsumerConfig;
import org.apache.dubbo.config.MethodConfig;
@@ -176,7 +177,7 @@ public class DubboBeanDefinitionParser implements BeanDefinitionParser {
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setAddress(RegistryConfig.NO_AVAILABLE);
beanDefinition.getPropertyValues().addPropertyValue(beanProperty, registryConfig);
- } else if ("provider".equals(property) || "registry".equals(property) || ("protocol".equals(property) && ServiceBean.class.equals(beanClass))) {
+ } else if ("provider".equals(property) || "registry".equals(property) || ("protocol".equals(property) && AbstractServiceConfig.class.isAssignableFrom(beanClass))) {
/**
* For 'provider' 'protocol' 'registry', keep literal value (should be id/name) and set the value to 'registryIds' 'providerIds' protocolIds'
* The following process should make sure each id refers to the corresponding instance, here's how to find the instance for different use cases: