This is an automated email from the ASF dual-hosted git repository. liujun pushed a commit to branch dev-metadata in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
The following commit(s) were added to refs/heads/dev-metadata by this push: new 275635e unify the config key format, sth like: dubbo.registries.id.address=xxx dubbo.registry.address=xxx dubbo.configCenters.apollo.address=xxx dubbo.configCenter.address=xxx 275635e is described below commit 275635e5b7f97e5c2130b18b81197907b5f027af Author: ken.lj <ken.lj...@gmail.com> AuthorDate: Thu Dec 20 18:12:44 2018 +0800 unify the config key format, sth like: dubbo.registries.id.address=xxx dubbo.registry.address=xxx dubbo.configCenters.apollo.address=xxx dubbo.configCenter.address=xxx --- .../java/org/apache/dubbo/common/Constants.java | 19 ++-- .../apache/dubbo/common/config/Environment.java | 2 +- .../org/apache/dubbo/config/AbstractConfig.java | 13 ++- .../dubbo/config/AbstractInterfaceConfig.java | 2 +- .../apache/dubbo/config/ConfigCenterConfig.java | 108 ++++++++++----------- .../org/apache/dubbo/config/ProtocolConfig.java | 4 +- .../org/apache/dubbo/config/RegistryConfig.java | 7 ++ .../dubbo/config/spring/ConfigCenterBean.java | 6 +- .../annotation/DubboConfigConfiguration.java | 3 +- .../spring/schema/DubboBeanDefinitionParser.java | 9 +- .../src/main/resources/META-INF/compat/dubbo.xsd | 25 +++-- .../src/main/resources/META-INF/dubbo.xsd | 23 +++-- .../configcenter/AbstractDynamicConfiguration.java | 5 +- .../support/apollo/ApolloDynamicConfiguration.java | 4 +- .../zookeeper/ZookeeperDynamicConfiguration.java | 2 +- .../org/apache/dubbo/rpc/filter/ContextFilter.java | 1 - 16 files changed, 123 insertions(+), 110 deletions(-) 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 8ec7566..ef3f50c 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 @@ -58,17 +58,14 @@ public class Constants { public static final String ROUTERS_SUFFIX = ".routers"; - public static final String DEFAULT_CONFIG_PROTOCOL = "nop"; - public static final String CONFIG_ADDRESS_KEY = "config.address"; - public static final String CONFIG_ENV_KEY = "config.env"; public static final String CONFIG_CLUSTER_KEY = "config.cluster"; public static final String CONFIG_NAMESPACE_KEY = "config.namespace"; public static final String CONFIG_GROUP_KEY = "config.group"; public static final String CONFIG_CHECK_KEY = "config.check"; - public static final String CONFIG_CONFIGFILE_KEY = "config.configfile"; - public static final String CONFIG_ENABLE_KEY = "config.enable"; + public static final String CONFIG_CONFIGFILE_KEY = "config.configFile"; + public static final String CONFIG_ENABLE_KEY = "config.highestPriority"; public static final String CONFIG_TIMEOUT_KEY = "config.timeout"; - public static final String CONFIG_APPNAME_KEY = "config.appname"; + public static final String CONFIG_APPNAME_KEY = "config.appName"; public static final String DEFAULT_CATEGORY = PROVIDERS_CATEGORY; @@ -473,23 +470,23 @@ public class Constants { * simple the registry for provider. * @since 2.7.0 */ - public static final String SIMPLE_PROVIDER_CONFIG_KEY = "simple-provider-config"; + public static final String SIMPLE_PROVIDER_CONFIG_KEY = "simpleProviderConfig"; /** * simple the registry for consumer. * @since 2.7.0 */ - public static final String SIMPLE_CONSUMER_CONFIG_KEY = "simple-consumer-config"; + public static final String SIMPLE_CONSUMER_CONFIG_KEY = "simpleConsumerConfig"; /** * 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"; + public static final String EXTRA_PROVIDER_CONFIG_KEYS_KEY = "extraProviderKeys"; /** * 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_CONSUMER_CONFIG_KEYS_KEY = "extraConsumerKeys"; /** * To decide whether to exclude unavailable invoker from the cluster @@ -748,6 +745,8 @@ public class Constants { public static final String REGISTRIES_SUFFIX = "dubbo.registries."; + public static final String CONFIGCENTERS_SUFFIX = "dubbo.configCenters."; + public static final String[] DEFAULT_REGISTER_PROVIDER_KEYS = {APPLICATION_KEY, CODEC_KEY, EXCHANGER_KEY, SERIALIZATION_KEY, CLUSTER_KEY, CONNECTIONS_KEY, DEPRECATED_KEY, GROUP_KEY, LOADBALANCE_KEY, MOCK_KEY, PATH_KEY, TIMEOUT_KEY, TOKEN_KEY, VERSION_KEY, WARMUP_KEY, WEIGHT_KEY, TIMESTAMP_KEY, DUBBO_VERSION_KEY, SPECIFICATION_VERSION_KEY}; diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java index fe4c03d..74c9d30 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java @@ -129,10 +129,10 @@ public class Environment { InmemoryConfiguration appConfig = this.getAppConfig(prefix, id); // Config center has the highest priority if (!configCenterFirst) { + compositeConfiguration.addConfiguration(this.getSystemConfig(prefix, id)); if (appConfig != null) { compositeConfiguration.addConfiguration(appConfig); } - compositeConfiguration.addConfiguration(this.getSystemConfig(prefix, id)); compositeConfiguration.addConfiguration(this.getAppExternalConfig(prefix, id)); compositeConfiguration.addConfiguration(this.getExternalConfig(prefix, id)); compositeConfiguration.addConfiguration(this.getPropertiesConfig(prefix, id)); diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractConfig.java index 9ca9204..502bfa8 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractConfig.java @@ -103,8 +103,7 @@ public abstract class AbstractConfig implements Serializable { break; } } - tag = tag.toLowerCase(); - return tag; + return tag.substring(0, 1).toLowerCase() + tag.substring(1); } protected static void appendParameters(Map<String, String> parameters, Object config) { @@ -365,14 +364,14 @@ public abstract class AbstractConfig implements Serializable { Method getter = null; try { getter = clazz.getMethod("get" + propertyName); + propertyName = propertyName.substring(3, 4).toLowerCase() + propertyName.substring(4); } catch (NoSuchMethodException e) { getter = clazz.getMethod("is" + propertyName); + propertyName = propertyName.substring(2, 3).toLowerCase() + propertyName.substring(3); } Parameter parameter = getter.getAnnotation(Parameter.class); if (parameter != null && StringUtils.isNotEmpty(parameter.key()) && parameter.useKeyAsProperty()) { propertyName = parameter.key(); - } else { - propertyName = propertyName.toLowerCase(); } return propertyName; } @@ -396,6 +395,12 @@ public abstract class AbstractConfig implements Serializable { this.id = id; } + public void updateIdIfAbsent(String value) { + if (StringUtils.isNotEmpty(value) && StringUtils.isEmpty(id)) { + this.id = value; + } + } + protected void appendAnnotation(Class<?> annotationClass, Object annotation) { Method[] methods = annotationClass.getMethods(); for (Method method : methods) { 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 8bef3bf..c8e2dce 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 @@ -450,7 +450,7 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig { ConfigCenterConfig configCenterConfig = new ConfigCenterConfig(); configCenterConfig.setProtocol(rc.getProtocol()); configCenterConfig.setAddress(rc.getAddress()); - configCenterConfig.setEnable(false); + configCenterConfig.setHighestPriority(false); configCenterConfig.init(); return null; }); diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java index 7aee0ba..b4043e7 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java @@ -41,19 +41,18 @@ public class ConfigCenterConfig extends AbstractConfig { private String protocol; private String address; - private String env; private String cluster; private String namespace = "dubbo"; private String group = "dubbo"; private String username; private String password; private Long timeout = 3000L; - private Boolean enable = true; + private Boolean highestPriority = true; private Boolean check = true; - private String appname; - private String configfile = "dubbo.properties"; - private String localconfigfile; + private String appName; + private String configFile = "dubbo.properties"; + private String appConfigFile; private ApplicationConfig application; private RegistryConfig registry; @@ -69,8 +68,14 @@ public class ConfigCenterConfig extends AbstractConfig { return; } - // give jvm properties the chance to override local configs, e.g., -Ddubbo.configcenter.config.priority + // give jvm properties the chance to override local configs, e.g., -Ddubbo.configcenter.highestPriority refresh(); + if (StringUtils.isNotEmpty(getId())) { + // read 'dubbo.configCenters.zookeeper.' + setPrefix(Constants.CONFIGCENTERS_SUFFIX); + refresh(); + } + // try to use registryConfig as the default configcenter, only applies to zookeeper. if (!isValid() && registry != null && registry.isZookeeperProtocol()) { setAddress(registry.getAddress()); @@ -80,19 +85,18 @@ public class ConfigCenterConfig extends AbstractConfig { if (isValid()) { DynamicConfiguration dynamicConfiguration = startDynamicConfiguration(toConfigUrl()); - String configContent = dynamicConfiguration.getConfig(configfile, group); + String configContent = dynamicConfiguration.getConfig(configFile, group); String appGroup = getApplicationName(); String appConfigContent = null; if (StringUtils.isNotEmpty(appGroup)) { appConfigContent = dynamicConfiguration.getConfig - ( - StringUtils.isNotEmpty(localconfigfile) ? localconfigfile : configfile, - appGroup + (StringUtils.isNotEmpty(appConfigFile) ? appConfigFile : configFile, + appGroup ); } try { - Environment.getInstance().setConfigCenterFirst(enable); + Environment.getInstance().setConfigCenterFirst(highestPriority); Environment.getInstance().updateExternalConfigurationMap(parseProperties(configContent)); Environment.getInstance().updateAppExternalConfigurationMap(parseProperties(appConfigContent)); } catch (IOException e) { @@ -110,7 +114,7 @@ public class ConfigCenterConfig extends AbstractConfig { private URL toConfigUrl() { Map<String, String> map = this.getMetaData(); - if (StringUtils.isNotEmpty(env) && StringUtils.isEmpty(address)) { + if (StringUtils.isEmpty(address)) { address = Constants.ANYHOST_VALUE; } map.put(Constants.PATH_KEY, ConfigCenterConfig.class.getSimpleName()); @@ -129,7 +133,7 @@ public class ConfigCenterConfig extends AbstractConfig { } return application.getName(); } - return appname; + return appName; } protected Map<String, String> parseProperties(String content) throws IOException { @@ -162,6 +166,7 @@ public class ConfigCenterConfig extends AbstractConfig { public void setProtocol(String protocol) { this.protocol = protocol; + this.updateIdIfAbsent(protocol); } @Parameter(excluded = true) @@ -171,18 +176,15 @@ public class ConfigCenterConfig extends AbstractConfig { public void setAddress(String address) { this.address = address; + if (address != null) { + int i = address.indexOf("://"); + if (i > 0) { + this.updateIdIfAbsent(address.substring(0, i)); + } + } } - @Parameter(key = Constants.CONFIG_ENV_KEY) - public String getEnv() { - return env; - } - - public void setEnv(String env) { - this.env = env; - } - - @Parameter(key = Constants.CONFIG_CLUSTER_KEY) + @Parameter(key = Constants.CONFIG_CLUSTER_KEY, useKeyAsProperty = false) public String getCluster() { return cluster; } @@ -191,7 +193,7 @@ public class ConfigCenterConfig extends AbstractConfig { this.cluster = cluster; } - @Parameter(key = Constants.CONFIG_NAMESPACE_KEY) + @Parameter(key = Constants.CONFIG_NAMESPACE_KEY, useKeyAsProperty = false) public String getNamespace() { return namespace; } @@ -200,7 +202,7 @@ public class ConfigCenterConfig extends AbstractConfig { this.namespace = namespace; } - @Parameter(key = Constants.CONFIG_GROUP_KEY) + @Parameter(key = Constants.CONFIG_GROUP_KEY, useKeyAsProperty = false) public String getGroup() { return group; } @@ -209,7 +211,7 @@ public class ConfigCenterConfig extends AbstractConfig { this.group = group; } - @Parameter(key = Constants.CONFIG_CHECK_KEY) + @Parameter(key = Constants.CONFIG_CHECK_KEY, useKeyAsProperty = false) public Boolean isCheck() { return check; } @@ -218,13 +220,13 @@ public class ConfigCenterConfig extends AbstractConfig { this.check = check; } - @Parameter(key = Constants.CONFIG_ENABLE_KEY) - public Boolean getEnable() { - return enable; + @Parameter(key = Constants.CONFIG_ENABLE_KEY, useKeyAsProperty = false) + public Boolean getHighestPriority() { + return highestPriority; } - public void setEnable(Boolean enable) { - this.enable = enable; + public void setHighestPriority(Boolean highestPriority) { + this.highestPriority = highestPriority; } public String getUsername() { @@ -243,7 +245,7 @@ public class ConfigCenterConfig extends AbstractConfig { this.password = password; } - @Parameter(key = Constants.CONFIG_TIMEOUT_KEY) + @Parameter(key = Constants.CONFIG_TIMEOUT_KEY, useKeyAsProperty = false) public Long getTimeout() { return timeout; } @@ -252,31 +254,31 @@ public class ConfigCenterConfig extends AbstractConfig { this.timeout = timeout; } - @Parameter(key = Constants.CONFIG_CONFIGFILE_KEY) - public String getConfigfile() { - return configfile; + @Parameter(key = Constants.CONFIG_CONFIGFILE_KEY, useKeyAsProperty = false) + public String getConfigFile() { + return configFile; } - public void setConfigfile(String configfile) { - this.configfile = configfile; + public void setConfigFile(String configFile) { + this.configFile = configFile; } @Parameter(excluded = true) - public String getLocalconfigfile() { - return localconfigfile; + public String getAppConfigFile() { + return appConfigFile; } - public void setLocalconfigfile(String localconfigfile) { - this.localconfigfile = localconfigfile; + public void setAppConfigFile(String appConfigFile) { + this.appConfigFile = appConfigFile; } - @Parameter(key = Constants.CONFIG_APPNAME_KEY) - public String getAppname() { - return appname; + @Parameter(key = Constants.CONFIG_APPNAME_KEY, useKeyAsProperty = false) + public String getAppName() { + return appName; } - public void setAppname(String appname) { - this.appname = appname; + public void setAppName(String appName) { + this.appName = appName; } public Map<String, String> getParameters() { @@ -305,7 +307,7 @@ public class ConfigCenterConfig extends AbstractConfig { } private void checkConfigCenter() { - if ((StringUtils.isEmpty(env) && StringUtils.isEmpty(address)) + if (StringUtils.isEmpty(address) || (StringUtils.isEmpty(protocol) && (StringUtils.isEmpty(address) || !address.contains("://")))) { throw new IllegalStateException("You must specify the right parameter for configcenter."); } @@ -314,16 +316,10 @@ public class ConfigCenterConfig extends AbstractConfig { @Override @Parameter(excluded = true) public boolean isValid() { - if (StringUtils.isEmpty(address) && StringUtils.isEmpty(env)) { - return false; - } - if (StringUtils.isNotEmpty(address)) { - if (!address.contains("://") && StringUtils.isEmpty(protocol)) { - return false; - } - } else if (StringUtils.isNotEmpty(env) && StringUtils.isEmpty(protocol)) { + if (StringUtils.isEmpty(address)) { return false; } - return true; + + return address.contains("://") || StringUtils.isNotEmpty(protocol); } } diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ProtocolConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ProtocolConfig.java index fe986b3..7313f59 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ProtocolConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ProtocolConfig.java @@ -157,9 +157,7 @@ public class ProtocolConfig extends AbstractConfig { public void setName(String name) { checkName("name", name); this.name = name; - if (id == null || id.length() == 0) { - id = name; - } + this.updateIdIfAbsent(name); } @Parameter(excluded = true) 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 347229c..7f15e4c 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 @@ -122,6 +122,7 @@ public class RegistryConfig extends AbstractConfig { public void setProtocol(String protocol) { checkName("protocol", protocol); this.protocol = protocol; + this.updateIdIfAbsent(protocol); } @Parameter(excluded = true) @@ -131,6 +132,12 @@ public class RegistryConfig extends AbstractConfig { public void setAddress(String address) { this.address = address; + if (address != null) { + int i = address.indexOf("://"); + if (i > 0) { + this.updateIdIfAbsent(address.substring(0, i)); + } + } } public Integer getPort() { diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java index a0ddd87..1762d8f 100644 --- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java +++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java @@ -41,7 +41,7 @@ import java.util.Map; /** * Since 2.7.0+, export and refer will only be executed when Spring is fully initialized, and each Config bean will get refreshed on the start of the export and refer process. * So it's ok for this bean not to be the first Dubbo Config bean being initialized. - * + * <p> * If use ConfigCenterConfig directly, you should make sure ConfigCenterConfig.init() is called before actually export/refer any Dubbo service. */ public class ConfigCenterBean extends ConfigCenterConfig implements InitializingBean, ApplicationContextAware, DisposableBean, EnvironmentAware { @@ -107,8 +107,8 @@ public class ConfigCenterBean extends ConfigCenterConfig implements Initializing @Override public void setEnvironment(Environment environment) { if (fromSpring) { - Map<String, String> externalProperties = getConfigurations(getConfigfile(), environment); - Map<String, String> appExternalProperties = getConfigurations(StringUtils.isNotEmpty(getLocalconfigfile()) ? getLocalconfigfile() : ("application." + getConfigfile()), environment); + Map<String, String> externalProperties = getConfigurations(getConfigFile(), environment); + Map<String, String> appExternalProperties = getConfigurations(StringUtils.isNotEmpty(getAppConfigFile()) ? getAppConfigFile() : (StringUtils.isEmpty(getAppName()) ? ("application." + getConfigFile()) : (getAppName() + "." + getConfigFile())), environment); org.apache.dubbo.common.config.Environment.getInstance().setExternalConfigMap(externalProperties); org.apache.dubbo.common.config.Environment.getInstance().setAppExternalConfigMap(appExternalProperties); this.init(); 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 cd5ddce..4b74828 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 @@ -57,8 +57,7 @@ public class DubboConfigConfiguration { @EnableDubboConfigBinding(prefix = "dubbo.registry", type = RegistryConfig.class), @EnableDubboConfigBinding(prefix = "dubbo.protocol", type = ProtocolConfig.class), @EnableDubboConfigBinding(prefix = "dubbo.monitor", type = MonitorConfig.class), - @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.provider", type = ProviderConfig.class), @EnableDubboConfigBinding(prefix = "dubbo.consumer", type = ConsumerConfig.class), @EnableDubboConfigBinding(prefix = "dubbo.configCenter", type = ConfigCenterBean.class), @EnableDubboConfigBinding(prefix = "dubbo.registrydata", type = RegistryDataConfig.class), @EnableDubboConfigBinding(prefix = "dubbo.metadatareport", type = MetadataReportConfig.class) }) 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 58e92b0..bbb1017 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 @@ -133,7 +133,8 @@ public class DubboBeanDefinitionParser implements BeanDefinitionParser { && Modifier.isPublic(setter.getModifiers()) && setter.getParameterTypes().length == 1) { Class<?> type = setter.getParameterTypes()[0]; - String property = StringUtils.camelToSplitName(name.substring(3, 4).toLowerCase() + name.substring(4), "-"); + String beanProperty = name.substring(3, 4).toLowerCase() + name.substring(4); + String property = StringUtils.camelToSplitName(beanProperty, "-"); props.add(property); Method getter = null; try { @@ -163,9 +164,9 @@ public class DubboBeanDefinitionParser implements BeanDefinitionParser { if ("registry".equals(property) && RegistryConfig.NO_AVAILABLE.equalsIgnoreCase(value)) { RegistryConfig registryConfig = new RegistryConfig(); registryConfig.setAddress(RegistryConfig.NO_AVAILABLE); - beanDefinition.getPropertyValues().addPropertyValue(property, registryConfig); + beanDefinition.getPropertyValues().addPropertyValue(beanProperty, registryConfig); } else if ("provider".equals(property) || "protocol".equals(property) || "registry".equals(property)) { - beanDefinition.getPropertyValues().addPropertyValue(property, value); + beanDefinition.getPropertyValues().addPropertyValue(beanProperty, value); } else { Object reference; if (isPrimitive(type)) { @@ -206,7 +207,7 @@ public class DubboBeanDefinitionParser implements BeanDefinitionParser { } reference = new RuntimeBeanReference(value); } - beanDefinition.getPropertyValues().addPropertyValue(property, reference); + beanDefinition.getPropertyValues().addPropertyValue(beanProperty, reference); } } } 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 87f2f11..cc20450 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 @@ -607,7 +607,7 @@ <xsd:sequence minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> - <xsd:attribute name="protocol" type="xsd:string" use="optional"> + <xsd:attribute name="protocol" type="xsd:string"> <xsd:annotation> <xsd:documentation><![CDATA[ The config center protocol. ]]></xsd:documentation> </xsd:annotation> @@ -617,12 +617,6 @@ <xsd:documentation><![CDATA[ The config center address. ]]></xsd:documentation> </xsd:annotation> </xsd:attribute> - <xsd:attribute name="env" type="xsd:string" use="optional"> - <xsd:annotation> - <xsd:documentation> - <![CDATA[ The config center env, an simplify alternative for address. ]]></xsd:documentation> - </xsd:annotation> - </xsd:attribute> <xsd:attribute name="cluster" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation><![CDATA[ The config center cluster. ]]></xsd:documentation> @@ -634,12 +628,17 @@ <![CDATA[ The group of the config center, an isolated space for config items in the same config center. ]]></xsd:documentation> </xsd:annotation> </xsd:attribute> - <xsd:attribute name="appname" type="xsd:string" use="optional"> + <xsd:attribute name="app-name" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation><![CDATA[ The group of the config center. ]]></xsd:documentation> </xsd:annotation> </xsd:attribute> - <xsd:attribute name="configfile" type="xsd:string" use="optional"> + <xsd:attribute name="config-file" type="xsd:string" use="optional"> + <xsd:annotation> + <xsd:documentation><![CDATA[ The key used to get the configs at startup. ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="app-config-file" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation><![CDATA[ The key used to get the configs at startup. ]]></xsd:documentation> </xsd:annotation> @@ -659,12 +658,18 @@ <xsd:documentation><![CDATA[ The request timeout. ]]></xsd:documentation> </xsd:annotation> </xsd:attribute> - <xsd:attribute name="enable" type="xsd:boolean" use="optional"> + <xsd:attribute name="highest-priority" type="xsd:boolean" use="optional"> <xsd:annotation> <xsd:documentation> <![CDATA[ Whether the configs from config center has the highest priority. ]]></xsd:documentation> </xsd:annotation> </xsd:attribute> + <xsd:attribute name="from-spring" type="xsd:boolean" use="optional"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ Load the config items by Dubbo itself or Spring. ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> <xsd:attribute name="check" type="xsd:boolean" use="optional"> <xsd:annotation> <xsd:documentation> 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 c36e59c..5118653 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 @@ -611,12 +611,6 @@ <xsd:documentation><![CDATA[ The config center address. ]]></xsd:documentation> </xsd:annotation> </xsd:attribute> - <xsd:attribute name="env" type="xsd:string" use="optional"> - <xsd:annotation> - <xsd:documentation> - <![CDATA[ The config center env, an simplify alternative for address. ]]></xsd:documentation> - </xsd:annotation> - </xsd:attribute> <xsd:attribute name="cluster" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation><![CDATA[ The config center cluster. ]]></xsd:documentation> @@ -628,12 +622,17 @@ <![CDATA[ The group of the config center, an isolated space for config items in the same config center. ]]></xsd:documentation> </xsd:annotation> </xsd:attribute> - <xsd:attribute name="appname" type="xsd:string" use="optional"> + <xsd:attribute name="app-name" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation><![CDATA[ The group of the config center. ]]></xsd:documentation> </xsd:annotation> </xsd:attribute> - <xsd:attribute name="configfile" type="xsd:string" use="optional"> + <xsd:attribute name="config-file" type="xsd:string" use="optional"> + <xsd:annotation> + <xsd:documentation><![CDATA[ The key used to get the configs at startup. ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="app-config-file" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation><![CDATA[ The key used to get the configs at startup. ]]></xsd:documentation> </xsd:annotation> @@ -653,12 +652,18 @@ <xsd:documentation><![CDATA[ The request timeout. ]]></xsd:documentation> </xsd:annotation> </xsd:attribute> - <xsd:attribute name="enable" type="xsd:boolean" use="optional"> + <xsd:attribute name="highest-priority" type="xsd:boolean" use="optional"> <xsd:annotation> <xsd:documentation> <![CDATA[ Whether the configs from config center has the highest priority. ]]></xsd:documentation> </xsd:annotation> </xsd:attribute> + <xsd:attribute name="from-spring" type="xsd:boolean" use="optional"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ Load the config items by Dubbo itself or Spring. ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> <xsd:attribute name="check" type="xsd:boolean" use="optional"> <xsd:annotation> <xsd:documentation> diff --git a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/AbstractDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/AbstractDynamicConfiguration.java index 20d8b72..5b8d149 100644 --- a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/AbstractDynamicConfiguration.java +++ b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/AbstractDynamicConfiguration.java @@ -16,7 +16,6 @@ */ package org.apache.dubbo.configcenter; -import org.apache.dubbo.common.Constants; import org.apache.dubbo.common.URL; import org.apache.dubbo.common.config.AbstractConfiguration; @@ -49,7 +48,7 @@ public abstract class AbstractDynamicConfiguration<TargetListener> extends Abstr @Override public void addListener(String key, ConfigurationListener listener) { - addListener(key, Constants.DUBBO, listener); + addListener(key, DEFAULT_GROUP, listener); } @Override @@ -80,7 +79,7 @@ public abstract class AbstractDynamicConfiguration<TargetListener> extends Abstr @Override public void removeListener(String key, ConfigurationListener listener) { - removeListener(key, Constants.DUBBO, listener); + removeListener(key, DEFAULT_GROUP, listener); } @Override diff --git a/dubbo-configcenter/dubbo-configcenter-apollo/src/main/java/org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-apollo/src/main/java/org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfiguration.java index 59d2658..62cbab1 100644 --- a/dubbo-configcenter/dubbo-configcenter-apollo/src/main/java/org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfiguration.java +++ b/dubbo-configcenter/dubbo-configcenter-apollo/src/main/java/org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfiguration.java @@ -57,7 +57,7 @@ public class ApolloDynamicConfiguration extends AbstractDynamicConfiguration<Apo @Override public void initWith(URL url) { // Instead of using Dubbo's configuration, I would suggest use the original configuration method Apollo provides. - String configEnv = url.getParameter(Constants.CONFIG_ENV_KEY); + String configEnv = url.getParameter(APOLLO_ENV_KEY); String configAddr = url.getBackupAddress(); String configCluster = url.getParameter(Constants.CONFIG_CLUSTER_KEY); if (configEnv != null) { @@ -70,7 +70,7 @@ public class ApolloDynamicConfiguration extends AbstractDynamicConfiguration<Apo System.setProperty(APOLLO_CLUSTER_KEY, configCluster); } - dubboConfig = ConfigService.getConfig(url.getParameter(Constants.CONFIG_GROUP_KEY, DEFAULT_GROUP)); + dubboConfig = ConfigService.getConfig(url.getParameter(Constants.CONFIG_NAMESPACE_KEY, DEFAULT_GROUP)); // Decide to fail or to continue when failed to connect to remote server. boolean check = url.getParameter(Constants.CONFIG_CHECK_KEY, true); if (dubboConfig.getSourceType() != ConfigSourceType.REMOTE) { diff --git a/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java index 0bc9b99..0739d51 100644 --- a/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java +++ b/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java @@ -63,7 +63,7 @@ public class ZookeeperDynamicConfiguration extends AbstractDynamicConfiguration< } protected void initWith(URL url) { - rootPath = "/" + url.getParameter(CONFIG_NAMESPACE_KEY, Constants.DUBBO) + "/config"; + rootPath = "/" + url.getParameter(CONFIG_NAMESPACE_KEY, DEFAULT_GROUP) + "/config"; RetryPolicy policy = new ExponentialBackoffRetry(1000, 3); int sessionTimeout = url.getParameter("config.session.timeout", 60 * 1000); diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java index 2e7d0c5..3239bed 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java @@ -57,7 +57,6 @@ public class ContextFilter extends AbstractPostProcessFilter { // merged from dubbox // we may already added some attachments into RpcContext before this filter (e.g. in rest protocol) - // TODO if (attachments != null) { if (RpcContext.getContext().getAttachments() != null) { RpcContext.getContext().getAttachments().putAll(attachments);