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

zhangliang 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 13526684361 Add YamlJDBCConfiguration.rebuild() (#30157)
13526684361 is described below

commit 135266843611cac040a39bd716953101b3b8884a
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Feb 17 20:26:42 2024 +0800

    Add YamlJDBCConfiguration.rebuild() (#30157)
    
    * Refactor YamlShardingSphereDataSourceFactory
    
    * Add YamlJDBCConfiguration.build()
    
    * Add YamlJDBCConfiguration.build()
---
 .../driver/api/yaml/YamlJDBCConfiguration.java     | 42 +++++++++++++++++++---
 .../yaml/YamlShardingSphereDataSourceFactory.java  | 41 +++------------------
 2 files changed, 41 insertions(+), 42 deletions(-)

diff --git 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/api/yaml/YamlJDBCConfiguration.java
 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/api/yaml/YamlJDBCConfiguration.java
index cde0cd35a1d..110761d9f6e 100644
--- 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/api/yaml/YamlJDBCConfiguration.java
+++ 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/api/yaml/YamlJDBCConfiguration.java
@@ -23,6 +23,7 @@ import 
org.apache.shardingsphere.authority.yaml.config.YamlAuthorityRuleConfigur
 import 
org.apache.shardingsphere.globalclock.core.yaml.config.YamlGlobalClockRuleConfiguration;
 import org.apache.shardingsphere.infra.util.yaml.YamlConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.mode.YamlModeConfiguration;
+import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
 import 
org.apache.shardingsphere.logging.yaml.config.YamlLoggingRuleConfiguration;
 import 
org.apache.shardingsphere.parser.yaml.config.YamlSQLParserRuleConfiguration;
@@ -52,13 +53,15 @@ public final class YamlJDBCConfiguration implements 
YamlConfiguration {
     
     private YamlModeConfiguration mode;
     
-    private Properties props = new Properties();
-    
     private YamlAuthorityRuleConfiguration authority;
     
+    private YamlSQLParserRuleConfiguration sqlParser;
+    
     private YamlTransactionRuleConfiguration transaction;
     
-    private YamlSQLParserRuleConfiguration sqlParser;
+    private YamlGlobalClockRuleConfiguration globalClock;
+    
+    private YamlSQLFederationRuleConfiguration sqlFederation;
     
     private YamlSQLTranslatorRuleConfiguration sqlTranslator;
     
@@ -66,7 +69,36 @@ public final class YamlJDBCConfiguration implements 
YamlConfiguration {
     
     private YamlLoggingRuleConfiguration logging;
     
-    private YamlGlobalClockRuleConfiguration globalClock;
+    private Properties props = new Properties();
     
-    private YamlSQLFederationRuleConfiguration sqlFederation;
+    /**
+     * Rebuild YAML JDBC configuration.
+     */
+    public void rebuild() {
+        rules.removeIf(YamlGlobalRuleConfiguration.class::isInstance);
+        if (null != authority) {
+            rules.add(authority);
+        }
+        if (null != sqlParser) {
+            rules.add(sqlParser);
+        }
+        if (null != transaction) {
+            rules.add(transaction);
+        }
+        if (null != globalClock) {
+            rules.add(globalClock);
+        }
+        if (null != sqlFederation) {
+            rules.add(sqlFederation);
+        }
+        if (null != sqlTranslator) {
+            rules.add(sqlTranslator);
+        }
+        if (null != traffic) {
+            rules.add(traffic);
+        }
+        if (null != logging) {
+            rules.add(logging);
+        }
+    }
 }
diff --git 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/api/yaml/YamlShardingSphereDataSourceFactory.java
 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/api/yaml/YamlShardingSphereDataSourceFactory.java
index ffa8508598b..427ffd8f856 100644
--- 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/api/yaml/YamlShardingSphereDataSourceFactory.java
+++ 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/api/yaml/YamlShardingSphereDataSourceFactory.java
@@ -25,7 +25,6 @@ import 
org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
 import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
 import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
-import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.mode.YamlModeConfigurationSwapper;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.resource.YamlDataSourceConfigurationSwapper;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
@@ -45,10 +44,6 @@ import java.util.Map;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class YamlShardingSphereDataSourceFactory {
     
-    private static final YamlRuleConfigurationSwapperEngine 
RULE_CONFIG_SWAPPER = new YamlRuleConfigurationSwapperEngine();
-    
-    private static final YamlDataSourceConfigurationSwapper 
DATA_SOURCE_SWAPPER = new YamlDataSourceConfigurationSwapper();
-    
     /**
      * Create ShardingSphere data source.
      * 
@@ -59,7 +54,7 @@ public final class YamlShardingSphereDataSourceFactory {
      */
     public static DataSource createDataSource(final File yamlFile) throws 
SQLException, IOException {
         YamlJDBCConfiguration rootConfig = YamlEngine.unmarshal(yamlFile, 
YamlJDBCConfiguration.class);
-        return 
createDataSource(DATA_SOURCE_SWAPPER.swapToDataSources(rootConfig.getDataSources()),
 rootConfig);
+        return createDataSource(new 
YamlDataSourceConfigurationSwapper().swapToDataSources(rootConfig.getDataSources()),
 rootConfig);
     }
     
     /**
@@ -72,7 +67,7 @@ public final class YamlShardingSphereDataSourceFactory {
      */
     public static DataSource createDataSource(final byte[] yamlBytes) throws 
SQLException, IOException {
         YamlJDBCConfiguration rootConfig = YamlEngine.unmarshal(yamlBytes, 
YamlJDBCConfiguration.class);
-        return 
createDataSource(DATA_SOURCE_SWAPPER.swapToDataSources(rootConfig.getDataSources()),
 rootConfig);
+        return createDataSource(new 
YamlDataSourceConfigurationSwapper().swapToDataSources(rootConfig.getDataSources()),
 rootConfig);
     }
     
     /**
@@ -134,37 +129,9 @@ public final class YamlShardingSphereDataSourceFactory {
     }
     
     private static DataSource createDataSource(final Map<String, DataSource> 
dataSourceMap, final YamlJDBCConfiguration jdbcConfig) throws SQLException {
-        rebuildGlobalRuleConfiguration(jdbcConfig);
         ModeConfiguration modeConfig = null == jdbcConfig.getMode() ? null : 
new YamlModeConfigurationSwapper().swapToObject(jdbcConfig.getMode());
-        Collection<RuleConfiguration> ruleConfigs = 
RULE_CONFIG_SWAPPER.swapToRuleConfigurations(jdbcConfig.getRules());
+        jdbcConfig.rebuild();
+        Collection<RuleConfiguration> ruleConfigs = new 
YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(jdbcConfig.getRules());
         return 
ShardingSphereDataSourceFactory.createDataSource(jdbcConfig.getDatabaseName(), 
modeConfig, dataSourceMap, ruleConfigs, jdbcConfig.getProps());
     }
-    
-    private static void rebuildGlobalRuleConfiguration(final 
YamlJDBCConfiguration jdbcConfig) {
-        
jdbcConfig.getRules().removeIf(YamlGlobalRuleConfiguration.class::isInstance);
-        if (null != jdbcConfig.getAuthority()) {
-            jdbcConfig.getRules().add(jdbcConfig.getAuthority());
-        }
-        if (null != jdbcConfig.getTransaction()) {
-            jdbcConfig.getRules().add(jdbcConfig.getTransaction());
-        }
-        if (null != jdbcConfig.getGlobalClock()) {
-            jdbcConfig.getRules().add(jdbcConfig.getGlobalClock());
-        }
-        if (null != jdbcConfig.getSqlParser()) {
-            jdbcConfig.getRules().add(jdbcConfig.getSqlParser());
-        }
-        if (null != jdbcConfig.getSqlTranslator()) {
-            jdbcConfig.getRules().add(jdbcConfig.getSqlTranslator());
-        }
-        if (null != jdbcConfig.getTraffic()) {
-            jdbcConfig.getRules().add(jdbcConfig.getTraffic());
-        }
-        if (null != jdbcConfig.getLogging()) {
-            jdbcConfig.getRules().add(jdbcConfig.getLogging());
-        }
-        if (null != jdbcConfig.getSqlFederation()) {
-            jdbcConfig.getRules().add(jdbcConfig.getSqlFederation());
-        }
-    }
 }

Reply via email to