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 2018/11/01 07:20:10 UTC
[incubator-dubbo] 01/06: Add xml schema and spring bean support for
ConfigCenterConfig
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
commit d423f551d945c86af33e56752b4e9356499db1a5
Author: ken.lj <ke...@gmail.com>
AuthorDate: Thu Nov 1 10:45:39 2018 +0800
Add xml schema and spring bean support for ConfigCenterConfig
---
.../org/apache/dubbo/config/AbstractConfig.java | 4 +--
.../apache/dubbo/config/ConfigCenterConfig.java | 10 +++---
.../org/apache/dubbo/config/RegistryConfig.java | 1 +
.../dubbo/config/spring/ConfigCenterBean.java | 37 ++++++++++++++++++++++
.../spring/schema/DubboNamespaceHandler.java | 4 +--
.../src/main/resources/META-INF/compat/dubbo.xsd | 8 ++++-
.../src/main/resources/META-INF/dubbo.xsd | 6 ++++
7 files changed, 59 insertions(+), 11 deletions(-)
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 ff74233..69e266f 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
@@ -31,7 +31,6 @@ import org.apache.dubbo.config.support.Parameter;
import org.apache.dubbo.config.utils.ConfigConverter;
import org.apache.dubbo.rpc.model.ConsumerMethodModel;
-import javax.annotation.PostConstruct;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
@@ -509,6 +508,7 @@ public abstract class AbstractConfig implements Serializable {
return metaData;
}
+ @Parameter(excluded = true)
public String getPrefix() {
return Constants.DUBBO + "." + getTagName(this.getClass());
}
@@ -517,7 +517,6 @@ public abstract class AbstractConfig implements Serializable {
* TODO
* Currently, only support overriding of properties explicitly defined in Config class, doesn't support overriding of customized parameters stored in 'parameters'.
*/
- @PostConstruct
public void refresh() {
if (init) {
return;
@@ -620,6 +619,7 @@ public abstract class AbstractConfig implements Serializable {
/**
* FIXME check @Parameter(required=true) and any conditions that need to match.
*/
+ @Parameter(excluded = true)
public boolean isValid() {
return true;
}
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 b532dd6..0e1497c 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
@@ -25,7 +25,6 @@ import org.apache.dubbo.config.support.Parameter;
import org.apache.dubbo.governance.DynamicConfiguration;
import org.apache.dubbo.governance.DynamicConfigurationFactory;
-import javax.annotation.PostConstruct;
import java.io.IOException;
import java.io.StringReader;
import java.util.HashMap;
@@ -40,15 +39,15 @@ public class ConfigCenterConfig extends AbstractConfig {
private String address;
private String env;
private String cluster;
- private String namespace;
+ private String namespace = "dubbo";
private String appnamespace;
private String username;
private String password;
- private long timeout;
+ private long timeout = 3000;
private boolean priority;
private boolean check;
- private String dataid;
+ private String dataid = "dubbo.properties";
// customized parameters
private Map<String, String> parameters;
@@ -74,10 +73,9 @@ public class ConfigCenterConfig extends AbstractConfig {
}
Map<String, String> map = this.getMetaData();
- return new URL("config", username, password, host, port, ConfigCenterConfig.class.getSimpleName(), map);
+ return new URL(Constants.CONFIG_PROTOCOL, username, password, host, port, ConfigCenterConfig.class.getSimpleName(), map);
}
- @PostConstruct
public void init() throws Exception {
// give jvm properties the chance of overriding local configs.
refresh();
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 a897ca2..721dd29 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
@@ -351,6 +351,7 @@ public class RegistryConfig extends AbstractConfig {
this.addParamKeys = addParamKeys;
}
+ @Parameter(excluded = true)
public boolean isValid() {
// empty protocol will default to 'dubbo'
return !StringUtils.isEmpty(address);
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
new file mode 100644
index 0000000..4995acc
--- /dev/null
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
@@ -0,0 +1,37 @@
+/*
+ * 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.spring;
+
+import org.apache.dubbo.config.ConfigCenterConfig;
+import org.springframework.beans.factory.DisposableBean;
+import org.springframework.beans.factory.InitializingBean;
+
+/**
+ *
+ */
+public class ConfigCenterBean extends ConfigCenterConfig implements InitializingBean, DisposableBean {
+
+ @Override
+ public void afterPropertiesSet() throws Exception {
+ this.init();
+ }
+
+ @Override
+ public void destroy() throws Exception {
+
+ }
+}
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboNamespaceHandler.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboNamespaceHandler.java
index 8642d64..559ec6b 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboNamespaceHandler.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboNamespaceHandler.java
@@ -18,7 +18,6 @@ package org.apache.dubbo.config.spring.schema;
import org.apache.dubbo.common.Version;
import org.apache.dubbo.config.ApplicationConfig;
-import org.apache.dubbo.config.ConfigCenterConfig;
import org.apache.dubbo.config.ConsumerConfig;
import org.apache.dubbo.config.ModuleConfig;
import org.apache.dubbo.config.MonitorConfig;
@@ -26,6 +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.ServiceStoreConfig;
+import org.apache.dubbo.config.spring.ConfigCenterBean;
import org.apache.dubbo.config.spring.ReferenceBean;
import org.apache.dubbo.config.spring.ServiceBean;
import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
@@ -47,7 +47,7 @@ public class DubboNamespaceHandler extends NamespaceHandlerSupport {
registerBeanDefinitionParser("module", new DubboBeanDefinitionParser(ModuleConfig.class, true));
registerBeanDefinitionParser("registry", new DubboBeanDefinitionParser(RegistryConfig.class, true));
registerBeanDefinitionParser("servicestore", new DubboBeanDefinitionParser(ServiceStoreConfig.class, true));
- registerBeanDefinitionParser("configcenter", new DubboBeanDefinitionParser(ConfigCenterConfig.class, true));
+ registerBeanDefinitionParser("configcenter", new DubboBeanDefinitionParser(ConfigCenterBean.class, true));
registerBeanDefinitionParser("monitor", new DubboBeanDefinitionParser(MonitorConfig.class, true));
registerBeanDefinitionParser("provider", new DubboBeanDefinitionParser(ProviderConfig.class, true));
registerBeanDefinitionParser("consumer", new DubboBeanDefinitionParser(ConsumerConfig.class, true));
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 7cb6f28..3ecdf57 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
@@ -1322,7 +1322,7 @@
</xsd:annotation>
</xsd:element>
- <xsd:element name="servicestore" type="servicestoreType">
+ <xsd:element name="servicestore" type="serviceStoreType">
<xsd:annotation>
<xsd:documentation><![CDATA[ The servicestore config ]]></xsd:documentation>
<xsd:appinfo>
@@ -1333,6 +1333,12 @@
</xsd:annotation>
</xsd:element>
+ <xsd:element name="configcenter" type="configCenterType">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[ The config center config ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+
<xsd:element name="monitor" type="monitorType">
<xsd:annotation>
<xsd:documentation><![CDATA[ The logstat monitor config ]]></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 38baa24..c371b77 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
@@ -1322,6 +1322,12 @@
</xsd:annotation>
</xsd:element>
+ <xsd:element name="configcenter" type="configCenterType">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[ The config center config ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+
<xsd:element name="monitor" type="monitorType">
<xsd:annotation>
<xsd:documentation><![CDATA[ The logstat monitor config ]]></xsd:documentation>