This is an automated email from the ASF dual-hosted git repository.

menghaoran pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new d827ba1  Adjust discovery api about namespace. (#14186)
d827ba1 is described below

commit d827ba10795de966a07074e2f9317d611782797c
Author: zhaojinchao <[email protected]>
AuthorDate: Tue Dec 21 14:00:31 2021 +0800

    Adjust discovery api about namespace. (#14186)
    
    * support namespace.
    
    * update
    
    * update
    
    * update
---
 .../DatabaseDiscoveryAlgorithmFactoryBean.java}    | 23 ++++++----
 .../handler/DatabaseDiscoveryNamespaceHandler.java |  4 ++
 .../DatabaseDiscoveryRuleBeanDefinitionParser.java | 49 ++++++++++++++++++++--
 ...tabaseDiscoveryHeartbeatBeanDefinitionTag.java} | 10 ++---
 .../DatabaseDiscoveryRuleBeanDefinitionTag.java    |  6 +++
 ...=> DatabaseDiscoveryTypeBeanDefinitionTag.java} | 10 ++---
 .../META-INF/namespace/database-discovery.xsd      | 28 ++++++++++++-
 .../pom.xml                                        |  5 +++
 8 files changed, 108 insertions(+), 27 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/handler/DatabaseDiscoveryNamespaceHandler.java
 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/factorybean/DatabaseDiscovery
 [...]
similarity index 51%
copy from 
shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/handler/DatabaseDiscoveryNamespaceHandler.java
copy to 
shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/factorybean/DatabaseDiscoveryAlgorithmFactoryBean.java
index abc2e57..be148bf 100644
--- 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/handler/DatabaseDiscoveryNamespaceHandler.java
+++ 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/factorybean/DatabaseDiscoveryAlgorithmFactoryBean.java
@@ -15,19 +15,24 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.dbdiscovery.spring.namespace.handler;
+package org.apache.shardingsphere.dbdiscovery.spring.namespace.factorybean;
 
-import 
org.apache.shardingsphere.dbdiscovery.spring.namespace.parser.DatabaseDiscoveryRuleBeanDefinitionParser;
-import 
org.apache.shardingsphere.dbdiscovery.spring.namespace.tag.DatabaseDiscoveryRuleBeanDefinitionTag;
-import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
+import org.apache.shardingsphere.dbdiscovery.spi.DatabaseDiscoveryType;
+import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
+import 
org.apache.shardingsphere.spring.namespace.factorybean.ShardingSphereAlgorithmFactoryBean;
+
+import java.util.Properties;
 
 /**
- * Spring namespace handler for data base discovery.
+ * Database discovery algorithm factory bean.
  */
-public final class DatabaseDiscoveryNamespaceHandler extends 
NamespaceHandlerSupport {
+public final class DatabaseDiscoveryAlgorithmFactoryBean extends 
ShardingSphereAlgorithmFactoryBean<DatabaseDiscoveryType> {
+    
+    static {
+        ShardingSphereServiceLoader.register(DatabaseDiscoveryType.class);
+    }
     
-    @Override
-    public void init() {
-        
registerBeanDefinitionParser(DatabaseDiscoveryRuleBeanDefinitionTag.ROOT_TAG, 
new DatabaseDiscoveryRuleBeanDefinitionParser());
+    public DatabaseDiscoveryAlgorithmFactoryBean(final String type, final 
Properties props) {
+        super(DatabaseDiscoveryType.class, type, props);
     }
 }
diff --git 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/handler/DatabaseDiscoveryNamespaceHandler.java
 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/handler/DatabaseDiscoveryName
 [...]
index abc2e57..577b81c 100644
--- 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/handler/DatabaseDiscoveryNamespaceHandler.java
+++ 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/handler/DatabaseDiscoveryNamespaceHandler.java
@@ -17,8 +17,11 @@
 
 package org.apache.shardingsphere.dbdiscovery.spring.namespace.handler;
 
+import 
org.apache.shardingsphere.dbdiscovery.spring.namespace.factorybean.DatabaseDiscoveryAlgorithmFactoryBean;
 import 
org.apache.shardingsphere.dbdiscovery.spring.namespace.parser.DatabaseDiscoveryRuleBeanDefinitionParser;
 import 
org.apache.shardingsphere.dbdiscovery.spring.namespace.tag.DatabaseDiscoveryRuleBeanDefinitionTag;
+import 
org.apache.shardingsphere.dbdiscovery.spring.namespace.tag.DatabaseDiscoveryTypeBeanDefinitionTag;
+import 
org.apache.shardingsphere.spring.namespace.parser.ShardingSphereAlgorithmBeanDefinitionParser;
 import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
 
 /**
@@ -29,5 +32,6 @@ public final class DatabaseDiscoveryNamespaceHandler extends 
NamespaceHandlerSup
     @Override
     public void init() {
         
registerBeanDefinitionParser(DatabaseDiscoveryRuleBeanDefinitionTag.ROOT_TAG, 
new DatabaseDiscoveryRuleBeanDefinitionParser());
+        
registerBeanDefinitionParser(DatabaseDiscoveryTypeBeanDefinitionTag.ROOT_TAG, 
new 
ShardingSphereAlgorithmBeanDefinitionParser(DatabaseDiscoveryAlgorithmFactoryBean.class));
     }
 }
diff --git 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/parser/DatabaseDiscoveryRuleBeanDefinitionParser.java
 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/parser/DatabaseDiscove
 [...]
index 1eb95e8..9658e8b 100644
--- 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/parser/DatabaseDiscoveryRuleBeanDefinitionParser.java
+++ 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/parser/DatabaseDiscoveryRuleBeanDefinitionParser.java
@@ -17,19 +17,28 @@
 
 package org.apache.shardingsphere.dbdiscovery.spring.namespace.parser;
 
+import com.google.common.base.Splitter;
 import 
org.apache.shardingsphere.dbdiscovery.algorithm.config.AlgorithmProvidedDatabaseDiscoveryRuleConfiguration;
 import 
org.apache.shardingsphere.dbdiscovery.api.config.rule.DatabaseDiscoveryDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.dbdiscovery.api.config.rule.DatabaseDiscoveryHeartBeatConfiguration;
+import 
org.apache.shardingsphere.dbdiscovery.spring.namespace.factorybean.DatabaseDiscoveryAlgorithmFactoryBean;
+import 
org.apache.shardingsphere.dbdiscovery.spring.namespace.tag.DatabaseDiscoveryHeartbeatBeanDefinitionTag;
 import 
org.apache.shardingsphere.dbdiscovery.spring.namespace.tag.DatabaseDiscoveryRuleBeanDefinitionTag;
+import 
org.apache.shardingsphere.spring.namespace.registry.ShardingSphereAlgorithmBeanRegistry;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.support.AbstractBeanDefinition;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.support.ManagedList;
+import org.springframework.beans.factory.support.ManagedMap;
 import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.springframework.util.xml.DomUtils;
 import org.w3c.dom.Element;
 
+import java.util.Collection;
 import java.util.List;
+import java.util.Map;
+import java.util.Properties;
 
 /**
  * Database discovery rule bean definition parser.
@@ -39,22 +48,54 @@ public final class 
DatabaseDiscoveryRuleBeanDefinitionParser extends AbstractBea
     @Override
     protected AbstractBeanDefinition parseInternal(final Element element, 
final ParserContext parserContext) {
         BeanDefinitionBuilder factory = 
BeanDefinitionBuilder.rootBeanDefinition(AlgorithmProvidedDatabaseDiscoveryRuleConfiguration.class);
-        
factory.addConstructorArgValue(parseHADataSourceRuleConfigurations(element));
+        factory.addPropertyValue("dataSources", 
parseDatabaseDiscoveryDataSourceRuleConfigurations(element));
+        factory.addPropertyValue("discoveryHeartbeats", 
parseDiscoveryHeartbeatsConfigurations(element, parserContext));
+        factory.addPropertyValue("discoveryTypes", 
ShardingSphereAlgorithmBeanRegistry.getAlgorithmBeanReferences(parserContext, 
DatabaseDiscoveryAlgorithmFactoryBean.class));
         return factory.getBeanDefinition();
     }
     
-    private List<BeanDefinition> parseHADataSourceRuleConfigurations(final 
Element element) {
+    private List<BeanDefinition> 
parseDatabaseDiscoveryDataSourceRuleConfigurations(final Element element) {
         List<Element> dataSourceElements = 
DomUtils.getChildElementsByTagName(element, 
DatabaseDiscoveryRuleBeanDefinitionTag.DATA_SOURCE_TAG);
         List<BeanDefinition> result = new 
ManagedList<>(dataSourceElements.size());
         for (Element each : dataSourceElements) {
-            result.add(parseHADataSourceRuleConfiguration(each));
+            
result.add(parseDatabaseDiscoveryDataSourceRuleConfiguration(each));
         }
         return result;
     }
     
-    private BeanDefinition parseHADataSourceRuleConfiguration(final Element 
element) {
+    private BeanDefinition 
parseDatabaseDiscoveryDataSourceRuleConfiguration(final Element element) {
         BeanDefinitionBuilder factory = 
BeanDefinitionBuilder.rootBeanDefinition(DatabaseDiscoveryDataSourceRuleConfiguration.class);
         
factory.addConstructorArgValue(element.getAttribute(DatabaseDiscoveryRuleBeanDefinitionTag.DB_DISCOVERY_DATA_SOURCE_ID_ATTRIBUTE));
+        factory.addConstructorArgValue(parseDataSources(element));
+        
factory.addConstructorArgValue(element.getAttribute(DatabaseDiscoveryRuleBeanDefinitionTag.DB_DISCOVERY_HEARTBEAT_NAME_ATTRIBUTE));
+        
factory.addConstructorArgValue(element.getAttribute(DatabaseDiscoveryRuleBeanDefinitionTag.DB_DISCOVERY_TYPE_NAME_ATTRIBUTE));
         return factory.getBeanDefinition();
     }
+    
+    private Collection<String> parseDataSources(final Element element) {
+        List<String> dataSources = 
Splitter.on(",").trimResults().splitToList(element.getAttribute(DatabaseDiscoveryRuleBeanDefinitionTag.DB_DISCOVERY_DATASOURCE_NAMES_ATTRIBUTE));
+        Collection<String> result = new ManagedList<>(dataSources.size());
+        result.addAll(dataSources);
+        return result;
+    }
+    
+    private Map<String, BeanDefinition> 
parseDiscoveryHeartbeatsConfigurations(final Element element, final 
ParserContext parserContext) {
+        List<Element> heartbeatElements = 
DomUtils.getChildElementsByTagName(element, 
DatabaseDiscoveryHeartbeatBeanDefinitionTag.ROOT_TAG);
+        Map<String, BeanDefinition> result = new 
ManagedMap<>(heartbeatElements.size());
+        for (Element each : heartbeatElements) {
+            
result.put(each.getAttribute(DatabaseDiscoveryHeartbeatBeanDefinitionTag.HEARTBEAT_ID_ATTRIBUTE),
 parseDiscoveryHeartbeatConfiguration(each, parserContext));
+        }
+        return result;
+    }
+    
+    private BeanDefinition parseDiscoveryHeartbeatConfiguration(final Element 
element, final ParserContext parserContext) {
+        BeanDefinitionBuilder factory = 
BeanDefinitionBuilder.rootBeanDefinition(DatabaseDiscoveryHeartBeatConfiguration.class);
+        factory.addConstructorArgValue(parseProperties(element, 
parserContext));
+        return factory.getBeanDefinition();
+    }
+    
+    private Properties parseProperties(final Element element, final 
ParserContext parserContext) {
+        Element propsElement = DomUtils.getChildElementByTagName(element, 
DatabaseDiscoveryHeartbeatBeanDefinitionTag.HEARTBEAT_PROPS_TAG);
+        return null == propsElement ? new Properties() : 
parserContext.getDelegate().parsePropsElement(propsElement);
+    }
 }
diff --git 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryHeartbe
 [...]
similarity index 76%
copy from 
shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
copy to 
shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryHeartbeatBeanDefinitionTag.java
index f821348..7b3ecb6 100644
--- 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
+++ 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryHeartbeatBeanDefinitionTag.java
@@ -21,14 +21,14 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 
 /**
- * Database discovery rule bean definition tag.
+ * Database discovery heartbeat bean definition tag.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class DatabaseDiscoveryRuleBeanDefinitionTag {
+public final class DatabaseDiscoveryHeartbeatBeanDefinitionTag {
     
-    public static final String ROOT_TAG = "rule";
+    public static final String ROOT_TAG = "discovery-heartbeat";
     
-    public static final String DATA_SOURCE_TAG = "data-source-rule";
+    public static final String HEARTBEAT_ID_ATTRIBUTE = "id";
     
-    public static final String DB_DISCOVERY_DATA_SOURCE_ID_ATTRIBUTE = "id";
+    public static final String HEARTBEAT_PROPS_TAG = "props";
 }
diff --git 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBea
 [...]
index f821348..620c812 100644
--- 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
+++ 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
@@ -31,4 +31,10 @@ public final class DatabaseDiscoveryRuleBeanDefinitionTag {
     public static final String DATA_SOURCE_TAG = "data-source-rule";
     
     public static final String DB_DISCOVERY_DATA_SOURCE_ID_ATTRIBUTE = "id";
+    
+    public static final String DB_DISCOVERY_DATASOURCE_NAMES_ATTRIBUTE = 
"data-source-names";
+    
+    public static final String DB_DISCOVERY_HEARTBEAT_NAME_ATTRIBUTE = 
"discovery-heartbeat-name";
+    
+    public static final String DB_DISCOVERY_TYPE_NAME_ATTRIBUTE = 
"discovery-type-name";
 }
diff --git 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryTypeBea
 [...]
similarity index 76%
copy from 
shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
copy to 
shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryTypeBeanDefinitionTag.java
index f821348..d469ed4 100644
--- 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
+++ 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryTypeBeanDefinitionTag.java
@@ -21,14 +21,10 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 
 /**
- * Database discovery rule bean definition tag.
+ * Database discovery type bean definition tag.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class DatabaseDiscoveryRuleBeanDefinitionTag {
+public final class DatabaseDiscoveryTypeBeanDefinitionTag {
     
-    public static final String ROOT_TAG = "rule";
-    
-    public static final String DATA_SOURCE_TAG = "data-source-rule";
-    
-    public static final String DB_DISCOVERY_DATA_SOURCE_ID_ATTRIBUTE = "id";
+    public static final String ROOT_TAG = "discovery-type";
 }
diff --git 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/resources/META-INF/namespace/database-discovery.xsd
 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/resources/META-INF/namespace/database-discovery.xsd
index 34d5a77..f21673f 100644
--- 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/resources/META-INF/namespace/database-discovery.xsd
+++ 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/resources/META-INF/namespace/database-discovery.xsd
@@ -16,9 +16,10 @@
   ~ limitations under the License.
   -->
 
-<xsd:schema xmlns="http://shardingsphere.apache.org/schema/shardingsphere/ha";
+<xsd:schema 
xmlns="http://shardingsphere.apache.org/schema/shardingsphere/database-discovery";
             xmlns:xsd="http://www.w3.org/2001/XMLSchema";
-            
targetNamespace="http://shardingsphere.apache.org/schema/shardingsphere/ha";
+            xmlns:beans="http://www.springframework.org/schema/beans";
+            
targetNamespace="http://shardingsphere.apache.org/schema/shardingsphere/database-discovery";
             elementFormDefault="qualified">
     <xsd:import namespace="http://www.springframework.org/schema/beans"; 
schemaLocation="http://www.springframework.org/schema/beans/spring-beans.xsd"; />
     
@@ -26,6 +27,7 @@
         <xsd:complexType>
             <xsd:sequence>
                 <xsd:element ref="data-source-rule" maxOccurs="unbounded" />
+                <xsd:element ref="discovery-heartbeat" maxOccurs="unbounded" />
             </xsd:sequence>
             <xsd:attribute name="id" type="xsd:string" use="required" />
         </xsd:complexType>
@@ -34,6 +36,28 @@
     <xsd:element name="data-source-rule">
         <xsd:complexType>
             <xsd:attribute name="id" type="xsd:string" use="required" />
+            <xsd:attribute name="data-source-names" type="xsd:string" 
use="required" />
+            <xsd:attribute name="discovery-heartbeat-name" type="xsd:string" 
use="required" />
+            <xsd:attribute name="discovery-type-name" type="xsd:string" 
use="required" />
+        </xsd:complexType>
+    </xsd:element>
+
+    <xsd:element name="discovery-heartbeat">
+        <xsd:complexType>
+            <xsd:all>
+                <xsd:element ref="beans:props" minOccurs="0" />
+            </xsd:all>
+            <xsd:attribute name="id" type="xsd:string" use="required" />
+        </xsd:complexType>
+    </xsd:element>
+
+    <xsd:element name="discovery-type">
+        <xsd:complexType>
+            <xsd:all>
+                <xsd:element ref="beans:props" minOccurs="0" />
+            </xsd:all>
+            <xsd:attribute name="id" type="xsd:string" use="required" />
+            <xsd:attribute name="type" type="xsd:string" use="required" />
         </xsd:complexType>
     </xsd:element>
 </xsd:schema>
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/pom.xml
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/pom.xml
index 1a81b1f..20505fa 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/pom.xml
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/pom.xml
@@ -80,6 +80,11 @@
         </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
+            
<artifactId>shardingsphere-db-discovery-spring-namespace</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
             <artifactId>shardingsphere-parser-spring-namespace</artifactId>
             <version>${project.version}</version>
         </dependency>

Reply via email to