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

duanzhengqiang 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 ff62411  Simplify constructor of ShardingSphereDataSource (#11696)
ff62411 is described below

commit ff62411dc0a929f6375f7bfb00247a3f699960a4
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Aug 7 22:58:48 2021 +0800

    Simplify constructor of ShardingSphereDataSource (#11696)
---
 .../context/metadata/MetaDataContextsBuilder.java  |  3 +--
 .../api/ShardingSphereDataSourceFactory.java       | 15 +++++++-------
 .../core/datasource/ShardingSphereDataSource.java  | 23 ++++------------------
 .../test/mysql/env/config/SourceConfiguration.java |  5 +++--
 4 files changed, 16 insertions(+), 30 deletions(-)

diff --git 
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
 
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
index 63f9022..3b1cd8c 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
@@ -74,8 +74,7 @@ public final class MetaDataContextsBuilder {
     }
     
     public MetaDataContextsBuilder(final Map<String, Map<String, DataSource>> 
dataSources,
-                                   final Map<String, 
Collection<RuleConfiguration>> schemaRuleConfigs, final 
Collection<RuleConfiguration> globalRuleConfigs, 
-                                   final Properties props) {
+                                   final Map<String, 
Collection<RuleConfiguration>> schemaRuleConfigs, final 
Collection<RuleConfiguration> globalRuleConfigs, final Properties props) {
         this.dataSources = dataSources;
         this.schemaRuleConfigs = schemaRuleConfigs;
         this.globalRuleConfigs = globalRuleConfigs;
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/ShardingSphereDataSourceFactory.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/ShardingSphereDataSourceFactory.java
index 75cdc7f..bc5ba0f 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/ShardingSphereDataSourceFactory.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/ShardingSphereDataSourceFactory.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.driver.api;
 
+import com.google.common.base.Strings;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource;
@@ -48,7 +49,7 @@ public final class ShardingSphereDataSourceFactory {
      */
     public static DataSource createDataSource(final String schemaName, 
                                               final Map<String, DataSource> 
dataSourceMap, final Collection<RuleConfiguration> configs, final Properties 
props) throws SQLException {
-        return new ShardingSphereDataSource(schemaName, dataSourceMap, 
configs, props);
+        return new ShardingSphereDataSource(Strings.isNullOrEmpty(schemaName) 
? DefaultSchema.LOGIC_NAME : schemaName, dataSourceMap, configs, props);
     }
     
     /**
@@ -61,33 +62,33 @@ public final class ShardingSphereDataSourceFactory {
      * @throws SQLException SQL exception
      */
     public static DataSource createDataSource(final Map<String, DataSource> 
dataSourceMap, final Collection<RuleConfiguration> configs, final Properties 
props) throws SQLException {
-        return new ShardingSphereDataSource(DefaultSchema.LOGIC_NAME, 
dataSourceMap, configs, props);
+        return createDataSource(DefaultSchema.LOGIC_NAME, dataSourceMap, 
configs, props);
     }
     
     /**
      * Create ShardingSphere data source.
      *
+     * @param schemaName schema name
      * @param dataSource data source
      * @param configs rule configurations
      * @param props properties for data source
      * @return ShardingSphere data source
      * @throws SQLException SQL exception
      */
-    public static DataSource createDataSource(final DataSource dataSource, 
final Collection<RuleConfiguration> configs, final Properties props) throws 
SQLException {
-        return createDataSource(DefaultSchema.LOGIC_NAME, 
Collections.singletonMap(DefaultSchema.LOGIC_NAME, dataSource), configs, props);
+    public static DataSource createDataSource(final String schemaName, final 
DataSource dataSource, final Collection<RuleConfiguration> configs, final 
Properties props) throws SQLException {
+        return createDataSource(schemaName, 
Collections.singletonMap(schemaName, dataSource), configs, props);
     }
     
     /**
      * Create ShardingSphere data source.
      *
-     * @param schemaName schema name
      * @param dataSource data source
      * @param configs rule configurations
      * @param props properties for data source
      * @return ShardingSphere data source
      * @throws SQLException SQL exception
      */
-    public static DataSource createDataSource(final String schemaName, final 
DataSource dataSource, final Collection<RuleConfiguration> configs, final 
Properties props) throws SQLException {
-        return createDataSource(schemaName, 
Collections.singletonMap(schemaName, dataSource), configs, props);
+    public static DataSource createDataSource(final DataSource dataSource, 
final Collection<RuleConfiguration> configs, final Properties props) throws 
SQLException {
+        return 
createDataSource(Collections.singletonMap(DefaultSchema.LOGIC_NAME, 
dataSource), configs, props);
     }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
index 29acd45..d6edb33 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
@@ -18,8 +18,6 @@
 package org.apache.shardingsphere.driver.jdbc.core.datasource;
 
 import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import org.apache.commons.lang.StringUtils;
 import 
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection;
 import 
org.apache.shardingsphere.driver.jdbc.unsupported.AbstractUnsupportedOperationDataSource;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
@@ -46,7 +44,6 @@ import java.util.Properties;
 /**
  * ShardingSphere data source.
  */
-@RequiredArgsConstructor
 @Getter
 public final class ShardingSphereDataSource extends 
AbstractUnsupportedOperationDataSource implements AutoCloseable {
     
@@ -56,26 +53,13 @@ public final class ShardingSphereDataSource extends 
AbstractUnsupportedOperation
     
     private final TransactionContexts transactionContexts;
     
-    public ShardingSphereDataSource(final Map<String, DataSource> 
dataSourceMap, final Collection<RuleConfiguration> ruleConfigs, final 
Properties props) throws SQLException {
-        schemaName = DefaultSchema.LOGIC_NAME;
+    public ShardingSphereDataSource(final String schemaName, final Map<String, 
DataSource> dataSourceMap, final Collection<RuleConfiguration> ruleConfigs, 
final Properties props) throws SQLException {
+        this.schemaName = schemaName;
         DistMetaDataPersistRepository repository = 
DistMetaDataPersistRepositoryFactory.newInstance(findDistMetaDataPersistRuleConfiguration(ruleConfigs));
         metaDataContexts = new 
MetaDataContextsBuilder(Collections.singletonMap(schemaName, dataSourceMap),
                 Collections.singletonMap(schemaName, ruleConfigs), 
props).build(new DistMetaDataPersistService(repository));
         String xaTransactionMangerType = 
metaDataContexts.getProps().getValue(ConfigurationPropertyKey.XA_TRANSACTION_MANAGER_TYPE);
-        transactionContexts = 
createTransactionContexts(metaDataContexts.getDefaultMetaData().getResource().getDatabaseType(),
 dataSourceMap, xaTransactionMangerType);
-    }
-    
-    public ShardingSphereDataSource(final String schemaName, final Map<String, 
DataSource> dataSourceMap, final Collection<RuleConfiguration> ruleConfigs, 
final Properties props) throws SQLException {
-        this.schemaName = getSchemaName(schemaName);
-        DistMetaDataPersistRepository repository = 
DistMetaDataPersistRepositoryFactory.newInstance(findDistMetaDataPersistRuleConfiguration(ruleConfigs));
-        metaDataContexts = new 
MetaDataContextsBuilder(Collections.singletonMap(this.schemaName, 
dataSourceMap),
-                Collections.singletonMap(this.schemaName, ruleConfigs), 
props).build(new DistMetaDataPersistService(repository));
-        String xaTransactionMangerType = 
metaDataContexts.getProps().getValue(ConfigurationPropertyKey.XA_TRANSACTION_MANAGER_TYPE);
-        transactionContexts = 
createTransactionContexts(metaDataContexts.getMetaData(this.schemaName).getResource().getDatabaseType(),
 dataSourceMap, xaTransactionMangerType);
-    }
-    
-    private String getSchemaName(final String schemaName) {
-        return StringUtils.isNotEmpty(schemaName) ? schemaName : 
DefaultSchema.LOGIC_NAME;
+        transactionContexts = 
createTransactionContexts(metaDataContexts.getMetaData(schemaName).getResource().getDatabaseType(),
 dataSourceMap, xaTransactionMangerType);
     }
     
     private static DistMetaDataPersistRuleConfiguration 
findDistMetaDataPersistRuleConfiguration(final Collection<RuleConfiguration> 
ruleConfigs) {
@@ -86,6 +70,7 @@ public final class ShardingSphereDataSource extends 
AbstractUnsupportedOperation
     private TransactionContexts createTransactionContexts(final DatabaseType 
databaseType, final Map<String, DataSource> dataSourceMap, final String 
xaTransactionMangerType) {
         ShardingTransactionManagerEngine engine = new 
ShardingTransactionManagerEngine();
         engine.init(databaseType, dataSourceMap, xaTransactionMangerType);
+        // TODO pass real schemaName into TransactionContexts
         return new 
TransactionContexts(Collections.singletonMap(DefaultSchema.LOGIC_NAME, engine));
     }
     
diff --git 
a/shardingsphere-test/shardingsphere-integration-scaling-test/shardingsphere-integration-scaling-test-mysql/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/config/SourceConfiguration.java
 
b/shardingsphere-test/shardingsphere-integration-scaling-test/shardingsphere-integration-scaling-test-mysql/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/config/SourceConfiguration.java
index efa5066..6df2bde 100644
--- 
a/shardingsphere-test/shardingsphere-integration-scaling-test/shardingsphere-integration-scaling-test-mysql/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/config/SourceConfiguration.java
+++ 
b/shardingsphere-test/shardingsphere-integration-scaling-test/shardingsphere-integration-scaling-test-mysql/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/config/SourceConfiguration.java
@@ -20,10 +20,11 @@ package 
org.apache.shardingsphere.integration.scaling.test.mysql.env.config;
 import com.google.common.collect.ImmutableMap;
 import lombok.SneakyThrows;
 import 
org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource;
+import org.apache.shardingsphere.infra.database.DefaultSchema;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.YamlRootRuleConfigurations;
-import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.YamlDataSourceConfigurationSwapper;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.YamlRuleConfigurationSwapperEngine;
+import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
 import 
org.apache.shardingsphere.integration.scaling.test.mysql.env.IntegrationTestEnvironment;
 import 
org.apache.shardingsphere.scaling.core.config.datasource.ShardingSphereJDBCDataSourceConfiguration;
 import 
org.apache.shardingsphere.sharding.yaml.config.YamlShardingRuleConfiguration;
@@ -93,7 +94,7 @@ public final class SourceConfiguration {
     @SneakyThrows(SQLException.class)
     public static DataSource createHostDataSource(final Map<String, 
YamlTableRuleConfiguration> tableRules) {
         ShardingSphereJDBCDataSourceConfiguration configuration = 
getHostConfiguration(tableRules);
-        return new ShardingSphereDataSource(new 
YamlDataSourceConfigurationSwapper().swapToDataSources(configuration.getRootRuleConfigs().getDataSources()),
+        return new ShardingSphereDataSource(DefaultSchema.LOGIC_NAME, new 
YamlDataSourceConfigurationSwapper().swapToDataSources(configuration.getRootRuleConfigs().getDataSources()),
                 new 
YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(configuration.getRootRuleConfigs().getRules()),
 null);
     }
 }

Reply via email to