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