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/10/29 00:23:33 UTC
[shardingsphere] branch master updated: Move empty judge from
ShardingRule to AlgorithmProvidedShardingRuleBuilder (#13335)
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 67b15e2 Move empty judge from ShardingRule to AlgorithmProvidedShardingRuleBuilder (#13335)
67b15e2 is described below
commit 67b15e295a5f55bc816a3e336ba10a899e67165f
Author: Hongsheng Zhong <sa...@126.com>
AuthorDate: Fri Oct 29 08:22:20 2021 +0800
Move empty judge from ShardingRule to AlgorithmProvidedShardingRuleBuilder (#13335)
---
.../shardingsphere/sharding/rule/ShardingRule.java | 1 -
.../AlgorithmProvidedShardingRuleBuilder.java | 4 ++-
.../AlgorithmProvidedShardingRuleBuilderTest.java | 41 ++++++++++++++++++----
3 files changed, 38 insertions(+), 8 deletions(-)
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
index 87ab6dd..e9be9de 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
@@ -102,7 +102,6 @@ public final class ShardingRule implements SchemaRule, DataNodeContainedRule, Ta
}
public ShardingRule(final AlgorithmProvidedShardingRuleConfiguration config, final Collection<String> dataSourceNames) {
- Preconditions.checkArgument(null != dataSourceNames && !dataSourceNames.isEmpty(), "Data source names cannot be empty.");
this.dataSourceNames = getDataSourceNames(config.getTables(), config.getAutoTables(), dataSourceNames);
shardingAlgorithms.putAll(config.getShardingAlgorithms());
keyGenerators.putAll(config.getKeyGenerators());
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/builder/AlgorithmProvidedShardingRuleBuilder.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/builder/AlgorithmProvidedShardingRuleBuilder.java
index e3ec967..a8d1a6d 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/builder/AlgorithmProvidedShardingRuleBuilder.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/builder/AlgorithmProvidedShardingRuleBuilder.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.sharding.rule.builder;
+import com.google.common.base.Preconditions;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.rule.builder.schema.SchemaRulesBuilderMaterials;
import org.apache.shardingsphere.infra.rule.builder.schema.SchemaRuleBuilder;
@@ -36,7 +37,8 @@ public final class AlgorithmProvidedShardingRuleBuilder implements SchemaRuleBui
@Override
public ShardingRule build(final SchemaRulesBuilderMaterials materials, final AlgorithmProvidedShardingRuleConfiguration config, final Collection<ShardingSphereRule> builtRules) {
Map<String, DataSource> dataSourceMap = materials.getDataSourceMap();
- return new ShardingRule(config, null != dataSourceMap ? dataSourceMap.keySet() : null);
+ Preconditions.checkArgument(null != dataSourceMap && !dataSourceMap.isEmpty(), "Data sources cannot be empty.");
+ return new ShardingRule(config, dataSourceMap.keySet());
}
@Override
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/builder/AlgorithmProvidedShardingRuleBuilderTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/builder/AlgorithmProvidedShardingRuleBuilderTest.java
index 8e59eb1..84863a9 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/builder/AlgorithmProvidedShardingRuleBuilderTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/builder/AlgorithmProvidedShardingRuleBuilderTest.java
@@ -25,10 +25,12 @@ import org.apache.shardingsphere.sharding.algorithm.config.AlgorithmProvidedShar
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.spi.ordered.OrderedSPIRegistry;
+import org.junit.Before;
import org.junit.Test;
import javax.sql.DataSource;
import java.util.Collections;
+import java.util.Map;
import java.util.Properties;
import static org.hamcrest.CoreMatchers.instanceOf;
@@ -42,13 +44,40 @@ public final class AlgorithmProvidedShardingRuleBuilderTest {
ShardingSphereServiceLoader.register(SchemaRuleBuilder.class);
}
- @SuppressWarnings({"rawtypes", "unchecked"})
+ private AlgorithmProvidedShardingRuleConfiguration ruleConfig;
+
+ @SuppressWarnings("rawtypes")
+ private SchemaRuleBuilder builder;
+
+ @Before
+ public void setUp() {
+ ruleConfig = mock(AlgorithmProvidedShardingRuleConfiguration.class);
+ builder = OrderedSPIRegistry.getRegisteredServices(SchemaRuleBuilder.class, Collections.singletonList(ruleConfig)).get(ruleConfig);
+ }
+
+ @SuppressWarnings("unchecked")
@Test
public void assertBuild() {
- AlgorithmProvidedShardingRuleConfiguration ruleConfig = mock(AlgorithmProvidedShardingRuleConfiguration.class);
- SchemaRuleBuilder builder = OrderedSPIRegistry.getRegisteredServices(SchemaRuleBuilder.class, Collections.singletonList(ruleConfig)).get(ruleConfig);
- assertThat(builder.build(new SchemaRulesBuilderMaterials("test_schema", Collections.emptyList(),
- mock(DatabaseType.class), Collections.singletonMap("name", mock(DataSource.class, RETURNS_DEEP_STUBS)),
- new ConfigurationProperties(new Properties())), ruleConfig, Collections.emptyList()), instanceOf(ShardingRule.class));
+ SchemaRulesBuilderMaterials materials = createSchemaRulesBuilderMaterials(Collections.singletonMap("name", mock(DataSource.class, RETURNS_DEEP_STUBS)));
+ assertThat(builder.build(materials, ruleConfig, Collections.emptyList()), instanceOf(ShardingRule.class));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test(expected = IllegalArgumentException.class)
+ public void assertBuildWithNullDataSourceMap() {
+ SchemaRulesBuilderMaterials materials = createSchemaRulesBuilderMaterials(null);
+ assertThat(builder.build(materials, ruleConfig, Collections.emptyList()), instanceOf(ShardingRule.class));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test(expected = IllegalArgumentException.class)
+ public void assertBuildWithEmptyDataSourceMap() {
+ SchemaRulesBuilderMaterials materials = createSchemaRulesBuilderMaterials(Collections.emptyMap());
+ assertThat(builder.build(materials, ruleConfig, Collections.emptyList()), instanceOf(ShardingRule.class));
+ }
+
+ private SchemaRulesBuilderMaterials createSchemaRulesBuilderMaterials(final Map<String, DataSource> dataSourceMap) {
+ return new SchemaRulesBuilderMaterials("test_schema", Collections.emptyList(),
+ mock(DatabaseType.class), dataSourceMap, new ConfigurationProperties(new Properties()));
}
}