You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2021/08/07 15:52:40 UTC

[shardingsphere] branch master updated: Simplify constructor of GovernanceShardingSphereDataSource (#11697)

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 0607b35  Simplify constructor of GovernanceShardingSphereDataSource (#11697)
0607b35 is described below

commit 0607b35d6723267c34aab7749dd18dffd5fc672b
Author: Liang Zhang <te...@163.com>
AuthorDate: Sat Aug 7 23:52:11 2021 +0800

    Simplify constructor of GovernanceShardingSphereDataSource (#11697)
    
    * Simplify constructor of GovernanceShardingSphereDataSource
    
    * Simplify constructor of GovernanceShardingSphereDataSource
---
 .../GovernanceShardingSphereDataSourceFactory.java | 76 +++++++++++-----------
 .../GovernanceShardingSphereDataSource.java        | 40 ++----------
 .../GovernanceShardingSphereDataSourceTest.java    | 10 +--
 3 files changed, 49 insertions(+), 77 deletions(-)

diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/api/GovernanceShardingSphereDataSourceFactory.java b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/api/GovernanceShardingSphereDataSourceFactory.java
index cd5a580..0a24b77 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/api/GovernanceShardingSphereDataSourceFactory.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/api/GovernanceShardingSphereDataSourceFactory.java
@@ -17,11 +17,12 @@
 
 package org.apache.shardingsphere.driver.governance.api;
 
+import com.google.common.base.Strings;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.driver.governance.internal.datasource.GovernanceShardingSphereDataSource;
-import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import org.apache.shardingsphere.governance.repository.api.config.GovernanceConfiguration;
+import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import org.apache.shardingsphere.infra.database.DefaultSchema;
 
 import javax.sql.DataSource;
@@ -40,95 +41,94 @@ public final class GovernanceShardingSphereDataSourceFactory {
     /**
      * Create ShardingSphere data source.
      *
-     * @param dataSourceMap data source map
-     * @param ruleConfigurations rule configurations
+     * @param schemaName schema name
      * @param governanceConfig governance configuration
-     * @param props properties for data source
      * @return ShardingSphere data source
      * @throws SQLException SQL exception
      */
-    public static DataSource createDataSource(final Map<String, DataSource> dataSourceMap, final Collection<RuleConfiguration> ruleConfigurations,
-                                              final Properties props, final GovernanceConfiguration governanceConfig) throws SQLException {
-        if (null == ruleConfigurations || ruleConfigurations.isEmpty()) {
-            return createDataSource(governanceConfig);
-        }
-        return new GovernanceShardingSphereDataSource(dataSourceMap, ruleConfigurations, props, governanceConfig);
+    public static DataSource createDataSource(final String schemaName, final GovernanceConfiguration governanceConfig) throws SQLException {
+        return new GovernanceShardingSphereDataSource(Strings.isNullOrEmpty(schemaName) ? DefaultSchema.LOGIC_NAME : schemaName, governanceConfig);
     }
     
     /**
      * Create ShardingSphere data source.
      *
-     * @param schemaName schema name
-     * @param dataSourceMap data source map
-     * @param ruleConfigurations rule configurations
      * @param governanceConfig governance configuration
-     * @param props properties for data source
      * @return ShardingSphere data source
      * @throws SQLException SQL exception
      */
-    public static DataSource createDataSource(final String schemaName, final Map<String, DataSource> dataSourceMap, final Collection<RuleConfiguration> ruleConfigurations,
-                                              final Properties props, final GovernanceConfiguration governanceConfig) throws SQLException {
-        if (null == ruleConfigurations || ruleConfigurations.isEmpty()) {
-            return createDataSource(schemaName, governanceConfig);
-        }
-        return new GovernanceShardingSphereDataSource(schemaName, dataSourceMap, ruleConfigurations, props, governanceConfig);
+    public static DataSource createDataSource(final GovernanceConfiguration governanceConfig) throws SQLException {
+        return createDataSource(DefaultSchema.LOGIC_NAME, governanceConfig);
     }
     
     /**
      * Create ShardingSphere data source.
      *
-     * @param dataSource data source
-     * @param ruleConfigurations rule configurations
+     * @param schemaName schema name
+     * @param dataSourceMap data source map
+     * @param ruleConfigs rule configurations
      * @param governanceConfig governance configuration
      * @param props properties for data source
      * @return ShardingSphere data source
      * @throws SQLException SQL exception
      */
-    public static DataSource createDataSource(final DataSource dataSource, final Collection<RuleConfiguration> ruleConfigurations,
-                                              final Properties props, final GovernanceConfiguration governanceConfig) throws SQLException {
-        Map<String, DataSource> dataSourceMap = new HashMap<>(1, 1);
-        dataSourceMap.put(DefaultSchema.LOGIC_NAME, dataSource);
-        return createDataSource(DefaultSchema.LOGIC_NAME, dataSourceMap, ruleConfigurations, props, governanceConfig);
+    public static DataSource createDataSource(final String schemaName, final Map<String, DataSource> dataSourceMap, 
+                                              final Collection<RuleConfiguration> ruleConfigs, final Properties props, final GovernanceConfiguration governanceConfig) throws SQLException {
+        if (null == ruleConfigs || ruleConfigs.isEmpty()) {
+            return createDataSource(schemaName, governanceConfig);
+        }
+        return new GovernanceShardingSphereDataSource(Strings.isNullOrEmpty(schemaName) ? DefaultSchema.LOGIC_NAME : schemaName, dataSourceMap, ruleConfigs, props, governanceConfig);
     }
     
     /**
      * Create ShardingSphere data source.
      *
-     * @param schemaName schema name configuration
+     * @param schemaName schema name
      * @param dataSource data source
-     * @param ruleConfigurations rule configurations
+     * @param ruleConfigs rule configurations
      * @param governanceConfig governance configuration
      * @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> ruleConfigurations,
+    public static DataSource createDataSource(final String schemaName, final DataSource dataSource, final Collection<RuleConfiguration> ruleConfigs,
                                               final Properties props, final GovernanceConfiguration governanceConfig) throws SQLException {
-        Map<String, DataSource> dataSourceMap = new HashMap<>(1, 1);
-        dataSourceMap.put(schemaName, dataSource);
-        return createDataSource(schemaName, dataSourceMap, ruleConfigurations, props, governanceConfig);
+        return createDataSource(schemaName, createSingleDataSourceMap(schemaName, dataSource), ruleConfigs, props, governanceConfig);
     }
     
     /**
      * Create ShardingSphere data source.
      *
+     * @param dataSourceMap data source map
+     * @param ruleConfigs rule configurations
      * @param governanceConfig governance configuration
+     * @param props properties for data source
      * @return ShardingSphere data source
      * @throws SQLException SQL exception
      */
-    public static DataSource createDataSource(final GovernanceConfiguration governanceConfig) throws SQLException {
-        return new GovernanceShardingSphereDataSource(governanceConfig);
+    public static DataSource createDataSource(final Map<String, DataSource> dataSourceMap, 
+                                              final Collection<RuleConfiguration> ruleConfigs, final Properties props, final GovernanceConfiguration governanceConfig) throws SQLException {
+        return createDataSource(DefaultSchema.LOGIC_NAME, dataSourceMap, ruleConfigs, props, governanceConfig);
     }
     
     /**
      * Create ShardingSphere data source.
      *
-     * @param schemaName schema name
+     * @param dataSource data source
+     * @param ruleConfigs rule configurations
      * @param governanceConfig governance configuration
+     * @param props properties for data source
      * @return ShardingSphere data source
      * @throws SQLException SQL exception
      */
-    public static DataSource createDataSource(final String schemaName, final GovernanceConfiguration governanceConfig) throws SQLException {
-        return new GovernanceShardingSphereDataSource(schemaName, governanceConfig);
+    public static DataSource createDataSource(final DataSource dataSource, 
+                                              final Collection<RuleConfiguration> ruleConfigs, final Properties props, final GovernanceConfiguration governanceConfig) throws SQLException {
+        return createDataSource(DefaultSchema.LOGIC_NAME, createSingleDataSourceMap(DefaultSchema.LOGIC_NAME, dataSource), ruleConfigs, props, governanceConfig);
+    }
+    
+    private static Map<String, DataSource> createSingleDataSourceMap(final String schemaName, final DataSource dataSource) {
+        Map<String, DataSource> result = new HashMap<>(1, 1);
+        result.put(Strings.isNullOrEmpty(schemaName) ? DefaultSchema.LOGIC_NAME : schemaName, dataSource);
+        return result;
     }
 }
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSource.java b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSource.java
index 8135f57..02ddd98 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSource.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSource.java
@@ -18,7 +18,6 @@
 package org.apache.shardingsphere.driver.governance.internal.datasource;
 
 import lombok.Getter;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shardingsphere.driver.governance.internal.state.DriverStateContext;
 import org.apache.shardingsphere.driver.jdbc.unsupported.AbstractUnsupportedOperationDataSource;
 import org.apache.shardingsphere.governance.context.metadata.GovernanceMetaDataContexts;
@@ -48,6 +47,7 @@ import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 import java.util.stream.Collectors;
@@ -67,20 +67,8 @@ public final class GovernanceShardingSphereDataSource extends AbstractUnsupporte
     @Getter
     private final TransactionContexts transactionContexts;
     
-    public GovernanceShardingSphereDataSource(final GovernanceConfiguration governanceConfig) throws SQLException {
-        schemaName = DefaultSchema.LOGIC_NAME;
-        // TODO new GovernanceRule from SPI
-        governanceRule = new GovernanceRule(governanceConfig);
-        DistMetaDataPersistService persistService = new DistMetaDataPersistService(governanceRule.getRegistryCenter().getRepository());
-        metaDataContexts = new GovernanceMetaDataContexts(createMetaDataContexts(persistService), persistService, governanceRule.getRegistryCenter());
-        String xaTransactionMangerType = metaDataContexts.getProps().getValue(ConfigurationPropertyKey.XA_TRANSACTION_MANAGER_TYPE);
-        transactionContexts = createTransactionContexts(metaDataContexts.getDefaultMetaData().getResource().getDatabaseType(),
-                metaDataContexts.getDefaultMetaData().getResource().getDataSources(), xaTransactionMangerType);
-        new TransactionContextsSubscriber(transactionContexts, xaTransactionMangerType);
-    }
-    
     public GovernanceShardingSphereDataSource(final String schemaName, final GovernanceConfiguration governanceConfig) throws SQLException {
-        this.schemaName = getSchemaName(schemaName);
+        this.schemaName = schemaName;
         // TODO new GovernanceRule from SPI
         governanceRule = new GovernanceRule(governanceConfig);
         DistMetaDataPersistService persistService = new DistMetaDataPersistService(governanceRule.getRegistryCenter().getRepository());
@@ -91,23 +79,9 @@ public final class GovernanceShardingSphereDataSource extends AbstractUnsupporte
         new TransactionContextsSubscriber(transactionContexts, xaTransactionMangerType);
     }
     
-    public GovernanceShardingSphereDataSource(final Map<String, DataSource> dataSourceMap, final Collection<RuleConfiguration> ruleConfigs, 
-                                              final Properties props, final GovernanceConfiguration governanceConfig) throws SQLException {
-        schemaName = DefaultSchema.LOGIC_NAME;
-        // TODO new GovernanceRule from SPI
-        governanceRule = new GovernanceRule(governanceConfig);
-        DistMetaDataPersistService persistService = new DistMetaDataPersistService(governanceRule.getRegistryCenter().getRepository());
-        metaDataContexts = new GovernanceMetaDataContexts(createMetaDataContexts(persistService, dataSourceMap, ruleConfigs, props), persistService, governanceRule.getRegistryCenter());
-        String xaTransactionMangerType = metaDataContexts.getProps().getValue(ConfigurationPropertyKey.XA_TRANSACTION_MANAGER_TYPE);
-        transactionContexts = createTransactionContexts(metaDataContexts.getDefaultMetaData().getResource().getDatabaseType(),
-                metaDataContexts.getDefaultMetaData().getResource().getDataSources(), xaTransactionMangerType);
-        uploadLocalConfiguration(persistService, governanceRule.getRegistryCenter(), ruleConfigs, governanceConfig.isOverwrite());
-        new TransactionContextsSubscriber(transactionContexts, xaTransactionMangerType);
-    }
-    
     public GovernanceShardingSphereDataSource(final String schemaName, final Map<String, DataSource> dataSourceMap, final Collection<RuleConfiguration> ruleConfigs,
                                               final Properties props, final GovernanceConfiguration governanceConfig) throws SQLException {
-        this.schemaName = getSchemaName(schemaName);
+        this.schemaName = schemaName;
         // TODO new GovernanceRule from SPI
         governanceRule = new GovernanceRule(governanceConfig);
         DistMetaDataPersistService persistService = new DistMetaDataPersistService(governanceRule.getRegistryCenter().getRepository());
@@ -119,10 +93,6 @@ public final class GovernanceShardingSphereDataSource extends AbstractUnsupporte
         new TransactionContextsSubscriber(transactionContexts, xaTransactionMangerType);
     }
     
-    private String getSchemaName(final String schemaName) {
-        return StringUtils.isNotEmpty(schemaName) ? schemaName : DefaultSchema.LOGIC_NAME;
-    }
-    
     private StandardMetaDataContexts createMetaDataContexts(final DistMetaDataPersistService persistService) throws SQLException {
         Map<String, DataSourceConfiguration> dataSourceConfigs = persistService.getDataSourceService().load(DefaultSchema.LOGIC_NAME);
         Collection<RuleConfiguration> ruleConfigs = persistService.getSchemaRuleService().load(DefaultSchema.LOGIC_NAME);
@@ -142,7 +112,9 @@ public final class GovernanceShardingSphereDataSource extends AbstractUnsupporte
     private TransactionContexts createTransactionContexts(final DatabaseType databaseType, final Map<String, DataSource> dataSourceMap, final String xaTransactionMangerType) {
         ShardingTransactionManagerEngine engine = new ShardingTransactionManagerEngine();
         engine.init(databaseType, dataSourceMap, xaTransactionMangerType);
-        return new TransactionContexts(Collections.singletonMap(DefaultSchema.LOGIC_NAME, engine));
+        Map<String, ShardingTransactionManagerEngine> engines = new HashMap<>();
+        engines.put(DefaultSchema.LOGIC_NAME, engine);
+        return new TransactionContexts(engines);
     }
     
     private void uploadLocalConfiguration(final DistMetaDataPersistService persistService, 
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/test/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSourceTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/test/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSourceTest.java
index 74ebe80..9ffa721 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/test/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSourceTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/test/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSourceTest.java
@@ -84,7 +84,7 @@ public final class GovernanceShardingSphereDataSourceTest {
     
     @Test
     public void assertInitializeGovernanceShardingSphereDataSource() throws SQLException {
-        assertThat(new GovernanceShardingSphereDataSource(getGovernanceConfiguration()).getConnection(), instanceOf(Connection.class));
+        assertThat(new GovernanceShardingSphereDataSource(DefaultSchema.LOGIC_NAME, getGovernanceConfiguration()).getConnection(), instanceOf(Connection.class));
     }
     
     @Test
@@ -130,13 +130,13 @@ public final class GovernanceShardingSphereDataSourceTest {
     
     @Test
     public void assertRenewProperties() {
-        metaDataContexts.renew(getPropertiesChangedEvent());
-        assertThat(metaDataContexts.getProps().getProps().getProperty(ConfigurationPropertyKey.SQL_SHOW.getKey()), is("true"));
+        metaDataContexts.renew(createPropertiesChangedEvent());
+        assertThat(metaDataContexts.getProps().getProps().getProperty(ConfigurationPropertyKey.SQL_SHOW.getKey()), is(Boolean.TRUE.toString()));
     }
     
-    private PropertiesChangedEvent getPropertiesChangedEvent() {
+    private PropertiesChangedEvent createPropertiesChangedEvent() {
         Properties props = new Properties();
-        props.setProperty(ConfigurationPropertyKey.SQL_SHOW.getKey(), "true");
+        props.setProperty(ConfigurationPropertyKey.SQL_SHOW.getKey(), Boolean.TRUE.toString());
         return new PropertiesChangedEvent(props);
     }