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());
- }
- }
}