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>