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