From 2e91dade4c18977deae97046e74b1d0ccb5aea6e Mon Sep 17 00:00:00 2001 From: cvictory Date: Thu, 3 Jan 2019 18:59:52 +0800 Subject: [PATCH] fix #3124 . move RegistryDataConfig configuration into RegistryConfig and remove RegistryDataConfig --- .../org/apache/dubbo/common/Constants.java | 16 +---- .../dubbo/config/AbstractInterfaceConfig.java | 24 ------- .../apache/dubbo/config/ReferenceConfig.java | 1 - .../apache/dubbo/config/RegistryConfig.java | 28 +++++++-- .../dubbo/config/RegistryDataConfig.java | 62 ------------------- .../apache/dubbo/config/ServiceConfig.java | 1 - .../dubbo/config/spring/ReferenceBean.java | 12 ---- .../dubbo/config/spring/ServiceBean.java | 11 ---- .../annotation/DubboConfigConfiguration.java | 3 - .../main/resources/META-INF/compat/dubbo.xsd | 20 +++--- .../src/main/resources/META-INF/dubbo.xsd | 20 +++--- .../integration/RegistryProtocol.java | 17 +++-- 12 files changed, 53 insertions(+), 162 deletions(-) delete mode 100644 dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/RegistryDataConfig.java diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java b/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java index f799358afe3..fa957b0c29b 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java @@ -482,23 +482,13 @@ public class Constants { * simple the registry for provider. * @since 2.7.0 */ - public static final String SIMPLE_PROVIDER_CONFIG_KEY = "simple.provider.config"; - /** - * simple the registry for consumer. - * @since 2.7.0 - */ - public static final String SIMPLE_CONSUMER_CONFIG_KEY = "simple.consumer.config"; + public static final String SIMPLIFIED_KEY = "simplified"; + /** * After simplify the registry, should add some paramter individually for provider. * @since 2.7.0 */ - public static final String EXTRA_PROVIDER_CONFIG_KEYS_KEY = "extra.provider.keys"; - /** - * After simplify the registry, should add some paramter individually for consumer. - * - * @since 2.7.0 - */ - public static final String EXTRA_CONSUMER_CONFIG_KEYS_KEY = "extra.consumer.keys"; + public static final String EXTRA_KEYS_KEY = "extra-keys"; /** * To decide whether to exclude unavailable invoker from the cluster diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java index 051e26e9350..80ddcda1a88 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java @@ -135,7 +135,6 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig { */ protected String ondisconnect; protected MetadataReportConfig metadataReportConfig; - protected RegistryDataConfig registryDataConfig; // callback limits private Integer callbacks; // the scope for referring/exporting a service, if it's local, it means searching in current JVM only. @@ -219,16 +218,6 @@ protected void checkMetadataReport() { } } - protected void checkRegistryDataConfig() { - if (registryDataConfig == null) { - registryDataConfig = new RegistryDataConfig(); - } - registryDataConfig.refresh(); - if (!registryDataConfig.isValid()) { - logger.info("There's no valid registryData config found. So the registry will store full url parameter " + - "to registry server."); - } - } /** * @@ -240,11 +229,8 @@ protected void checkRegistryDataConfig() { protected List loadRegistries(boolean provider) { // check && override if necessary checkRegistry(); - checkRegistryDataConfig(); List registryList = new ArrayList(); if (registries != null && !registries.isEmpty()) { - Map registryDataConfigurationMap = new HashMap<>(4); - appendParameters(registryDataConfigurationMap, registryDataConfig); for (RegistryConfig config : registries) { String address = config.getAddress(); if (StringUtils.isEmpty(address)) { @@ -264,8 +250,6 @@ protected List loadRegistries(boolean provider) { for (URL url : urls) { url = url.addParameter(Constants.REGISTRY_KEY, url.getProtocol()); url = url.setProtocol(Constants.REGISTRY_PROTOCOL); - // add parameter - url = url.addParametersIfAbsent(registryDataConfigurationMap); if ((provider && url.getParameter(Constants.REGISTER_KEY, true)) || (!provider && url.getParameter(Constants.SUBSCRIBE_KEY, true))) { registryList.add(url); @@ -711,14 +695,6 @@ public void setOwner(String owner) { this.owner = owner; } - public RegistryDataConfig getRegistryDataConfig() { - return registryDataConfig; - } - - public void setRegistryDataConfig(RegistryDataConfig registryDataConfig) { - this.registryDataConfig = registryDataConfig; - } - public Integer getCallbacks() { return callbacks; } diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java index ea75c3d50f3..898f4e6c797 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java @@ -219,7 +219,6 @@ public void checkAndUpdateSubConfigs() { } checkApplication(); checkMetadataReport(); - checkRegistryDataConfig(); } public synchronized T get() { diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/RegistryConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/RegistryConfig.java index 6abbdaea3b6..85963efe756 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/RegistryConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/RegistryConfig.java @@ -126,18 +126,19 @@ public class RegistryConfig extends AbstractConfig { private Boolean isDefault; /** - * Simple the registry. + * Simple the registry. both useful for provider and consumer * * @since 2.7.0 */ - private Boolean simple; + private Boolean simplified; /** - * After simplify the registry, should add some paramter individually. - * addionalParameterKeys = addParamKeys + * After simplify the registry, should add some paramter individually. just for provider. + *

+ * such as: extra-keys = A,b,c,d * * @since 2.7.0 */ - private String addParamKeys; + private String extraKeys; public RegistryConfig() { } @@ -380,6 +381,23 @@ public void setDefault(Boolean isDefault) { this.isDefault = isDefault; } + public Boolean getSimplified() { + return simplified; + } + + public void setSimplified(Boolean simplified) { + this.simplified = simplified; + } + + @Parameter(key = Constants.EXTRA_KEYS_KEY) + public String getExtraKeys() { + return extraKeys; + } + + public void setExtraKeys(String extraKeys) { + this.extraKeys = extraKeys; + } + @Parameter(excluded = true) public boolean isZookeeperProtocol() { if (!isValid()) { diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/RegistryDataConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/RegistryDataConfig.java deleted file mode 100644 index f96044dd991..00000000000 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/RegistryDataConfig.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.dubbo.config; - -/** - * 2018/10/31 - */ -public class RegistryDataConfig extends AbstractConfig { - - private Boolean simpleProviderConfig; - private String extraProviderKeys; - - private Boolean simpleConsumerConfig; - private String extraConsumerKeys; - - public Boolean getSimpleProviderConfig() { - return simpleProviderConfig; - } - - public void setSimpleProviderConfig(Boolean simpleProviderConfig) { - this.simpleProviderConfig = simpleProviderConfig; - } - - public Boolean getSimpleConsumerConfig() { - return simpleConsumerConfig; - } - - public void setSimpleConsumerConfig(Boolean simpleConsumerConfig) { - this.simpleConsumerConfig = simpleConsumerConfig; - } - - public String getExtraProviderKeys() { - return extraProviderKeys; - } - - public void setExtraProviderKeys(String extraProviderKeys) { - this.extraProviderKeys = extraProviderKeys; - } - - - public String getExtraConsumerKeys() { - return extraConsumerKeys; - } - - public void setExtraConsumerKeys(String extraConsumerKeys) { - this.extraConsumerKeys = extraConsumerKeys; - } -} 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 0309ff039b2..395549a4342 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 @@ -275,7 +275,6 @@ public void checkAndUpdateSubConfigs() { checkProtocol(); this.refresh(); checkMetadataReport(); - checkRegistryDataConfig(); if (interfaceName == null || interfaceName.length() == 0) { throw new IllegalStateException(" interface not allow null!"); diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java index fd7025a990a..53ed5e5f56e 100644 --- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java +++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java @@ -25,11 +25,9 @@ import org.apache.dubbo.config.MonitorConfig; import org.apache.dubbo.config.ReferenceConfig; import org.apache.dubbo.config.RegistryConfig; -import org.apache.dubbo.config.RegistryDataConfig; import org.apache.dubbo.config.annotation.Reference; import org.apache.dubbo.config.spring.extension.SpringExtensionFactory; import org.apache.dubbo.config.support.Parameter; - import org.springframework.beans.factory.BeanFactoryUtils; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.FactoryBean; @@ -188,16 +186,6 @@ public void afterPropertiesSet() throws Exception { } } - - if (getRegistryDataConfig() == null) { - Map registryDataConfigMap = applicationContext == null ? null : BeanFactoryUtils.beansOfTypeIncludingAncestors(applicationContext, RegistryDataConfig.class, false, false); - if (registryDataConfigMap != null && registryDataConfigMap.size() == 1) { - super.setRegistryDataConfig(registryDataConfigMap.values().iterator().next()); - } else if (registryDataConfigMap != null && registryDataConfigMap.size() > 1) { - throw new IllegalStateException("Multiple RegistryData configs: " + registryDataConfigMap); - } - } - if (getMonitor() == null && (getConsumer() == null || getConsumer().getMonitor() == null) && (getApplication() == null || getApplication().getMonitor() == null)) { diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java index cb6d0979154..66fd9a44c3a 100644 --- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java +++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java @@ -25,11 +25,9 @@ import org.apache.dubbo.config.ProtocolConfig; import org.apache.dubbo.config.ProviderConfig; import org.apache.dubbo.config.RegistryConfig; -import org.apache.dubbo.config.RegistryDataConfig; import org.apache.dubbo.config.ServiceConfig; import org.apache.dubbo.config.annotation.Service; import org.apache.dubbo.config.spring.extension.SpringExtensionFactory; - import org.springframework.aop.support.AopUtils; import org.springframework.beans.factory.BeanFactoryUtils; import org.springframework.beans.factory.BeanNameAware; @@ -220,15 +218,6 @@ public void afterPropertiesSet() throws Exception { } } - if (getRegistryDataConfig() == null) { - Map registryDataConfigMap = applicationContext == null ? null : BeanFactoryUtils.beansOfTypeIncludingAncestors(applicationContext, RegistryDataConfig.class, false, false); - if (registryDataConfigMap != null && registryDataConfigMap.size() == 1) { - super.setRegistryDataConfig(registryDataConfigMap.values().iterator().next()); - } else if (registryDataConfigMap != null && registryDataConfigMap.size() > 1) { - throw new IllegalStateException("Multiple RegistryData configs: " + registryDataConfigMap); - } - } - if (getMonitor() == null && (getProvider() == null || getProvider().getMonitor() == null) && (getApplication() == null || getApplication().getMonitor() == null)) { diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfiguration.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfiguration.java index 392a5732aef..64330702356 100644 --- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfiguration.java +++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfiguration.java @@ -25,9 +25,7 @@ import org.apache.dubbo.config.ProtocolConfig; import org.apache.dubbo.config.ProviderConfig; import org.apache.dubbo.config.RegistryConfig; -import org.apache.dubbo.config.RegistryDataConfig; import org.apache.dubbo.config.spring.ConfigCenterBean; - import org.springframework.context.annotation.Configuration; /** @@ -60,7 +58,6 @@ public class DubboConfigConfiguration { @EnableDubboConfigBinding(prefix = "dubbo.provider", type = ProviderConfig.class), @EnableDubboConfigBinding(prefix = "dubbo.consumer", type = ConsumerConfig.class), @EnableDubboConfigBinding(prefix = "dubbo.config-center", type = ConfigCenterBean.class), - @EnableDubboConfigBinding(prefix = "dubbo.registry-data", type = RegistryDataConfig.class), @EnableDubboConfigBinding(prefix = "dubbo.metadata-report", type = MetadataReportConfig.class) }) public static class Single { diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd index e3253e41114..3d3c37132a0 100644 --- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd +++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd @@ -565,16 +565,16 @@ - - - - - - - - - - + + + + + + + + + + diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd index b943684d444..d0db0be8885 100644 --- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd +++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd @@ -559,16 +559,16 @@ - - - - - - - - - - + + + + + + + + + + diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java index 049c94f5cbe..79ccc406a29 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java @@ -66,8 +66,7 @@ import static org.apache.dubbo.common.Constants.DEFAULT_REGISTER_PROVIDER_KEYS; import static org.apache.dubbo.common.Constants.DEFAULT_REGISTRY; import static org.apache.dubbo.common.Constants.EXPORT_KEY; -import static org.apache.dubbo.common.Constants.EXTRA_CONSUMER_CONFIG_KEYS_KEY; -import static org.apache.dubbo.common.Constants.EXTRA_PROVIDER_CONFIG_KEYS_KEY; +import static org.apache.dubbo.common.Constants.EXTRA_KEYS_KEY; import static org.apache.dubbo.common.Constants.HIDE_KEY_PREFIX; import static org.apache.dubbo.common.Constants.INTERFACES; import static org.apache.dubbo.common.Constants.METHODS_KEY; @@ -83,8 +82,7 @@ import static org.apache.dubbo.common.Constants.REGISTRY_KEY; import static org.apache.dubbo.common.Constants.REGISTRY_PROTOCOL; import static org.apache.dubbo.common.Constants.ROUTERS_CATEGORY; -import static org.apache.dubbo.common.Constants.SIMPLE_CONSUMER_CONFIG_KEY; -import static org.apache.dubbo.common.Constants.SIMPLE_PROVIDER_CONFIG_KEY; +import static org.apache.dubbo.common.Constants.SIMPLIFIED_KEY; import static org.apache.dubbo.common.Constants.VALIDATION_KEY; import static org.apache.dubbo.common.utils.UrlUtils.classifyUrls; @@ -298,13 +296,13 @@ private URL getRegistryUrl(Invoker originInvoker) { */ private URL getRegisteredProviderUrl(final URL providerUrl, final URL registryUrl) { //The address you see at the registry - if (!registryUrl.getParameter(SIMPLE_PROVIDER_CONFIG_KEY, false)) { + if (!registryUrl.getParameter(SIMPLIFIED_KEY, false)) { return providerUrl.removeParameters(getFilteredKeys(providerUrl)).removeParameters( MONITOR_KEY, BIND_IP_KEY, BIND_PORT_KEY, QOS_ENABLE, QOS_PORT, ACCEPT_FOREIGN_IP, VALIDATION_KEY, INTERFACES); } else { String[] paramsToRegistry = getParamsToRegistry(DEFAULT_REGISTER_PROVIDER_KEYS, - registryUrl.getParameter(EXTRA_PROVIDER_CONFIG_KEYS_KEY, new String[0])); + registryUrl.getParameter(EXTRA_KEYS_KEY, new String[0])); return URL.valueOf(providerUrl, paramsToRegistry, providerUrl.getParameter(METHODS_KEY, (String[]) null)); } @@ -385,13 +383,11 @@ private Invoker doRefer(Cluster cluster, Registry registry, Class type } private URL getRegisteredConsumerUrl(final URL consumerUrl, URL registryUrl) { - if (!registryUrl.getParameter(SIMPLE_CONSUMER_CONFIG_KEY, false)) { + if (!registryUrl.getParameter(SIMPLIFIED_KEY, false)) { return consumerUrl.addParameters(CATEGORY_KEY, CONSUMERS_CATEGORY, CHECK_KEY, String.valueOf(false)); } else { - String[] paramsToRegistry = getParamsToRegistry(DEFAULT_REGISTER_CONSUMER_KEYS, - registryUrl.getParameter(EXTRA_CONSUMER_CONFIG_KEYS_KEY, new String[0])); - return URL.valueOf(consumerUrl, paramsToRegistry, null).addParameters( + return URL.valueOf(consumerUrl, DEFAULT_REGISTER_CONSUMER_KEYS, null).addParameters( CATEGORY_KEY, CONSUMERS_CATEGORY, CHECK_KEY, String.valueOf(false)); } } @@ -597,6 +593,7 @@ protected void notifyOverrides() { overrideListeners.values().forEach(listener -> ((OverrideListener) listener).doOverrideIfNecessary()); } } + /** * exporter proxy, establish the corresponding relationship between the returned exporter and the exporter * exported by the protocol, and can modify the relationship at the time of override.