This is an automated email from the ASF dual-hosted git repository.
tuichenchuxin 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 e5b5bed6bb7 Refactor YamlShardingAutoTableRuleConfigurationSwapper
(#19922)
e5b5bed6bb7 is described below
commit e5b5bed6bb704e079bdadfc70c9aea664deb4e4c
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Aug 6 14:46:53 2022 +0800
Refactor YamlShardingAutoTableRuleConfigurationSwapper (#19922)
* Remove test only constructor for ShardingAutoTableRuleConfiguration
* Refactor YamlShardingAutoTableRuleConfigurationSwapper
---
...lShardingAutoTableRuleConfigurationSwapper.java | 51 +++++++++++-----------
...rdingAutoTableRuleConfigurationSwapperTest.java | 10 ++---
2 files changed, 30 insertions(+), 31 deletions(-)
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingAutoTableRuleConfigurationSwapper.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingAutoTableRuleConfigurationSwapper.java
index 71f2d2d3f7e..42744baa5fc 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingAutoTableRuleConfigurationSwapper.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingAutoTableRuleConfigurationSwapper.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.sharding.yaml.swapper.rule;
import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
import org.apache.shardingsphere.infra.datanode.DataNodeUtil;
@@ -71,31 +72,16 @@ public final class
YamlShardingAutoTableRuleConfigurationSwapper implements Yaml
return result;
}
- @Override
- public ShardingAutoTableRuleConfiguration swapToObject(final
YamlShardingAutoTableRuleConfiguration yamlConfig) {
- Preconditions.checkNotNull(yamlConfig.getLogicTable(), "Logic table
cannot be null.");
- ShardingAutoTableRuleConfiguration result = new
ShardingAutoTableRuleConfiguration(yamlConfig.getLogicTable(),
yamlConfig.getActualDataSources());
- result.setActualTablePrefix(yamlConfig.getActualTablePrefix());
- result.setActualDataNodes(yamlConfig.getActualDataNodes());
- if (null != yamlConfig.getShardingStrategy()) {
-
result.setShardingStrategy(shardingStrategySwapper.swapToObject(yamlConfig.getShardingStrategy()));
- }
- if (null != yamlConfig.getKeyGenerateStrategy()) {
-
result.setKeyGenerateStrategy(keyGenerateStrategySwapper.swapToObject(yamlConfig.getKeyGenerateStrategy()));
- }
- return result;
- }
-
- private void setActualDataNodesWithAlgorithms(final
ShardingAutoTableRuleConfiguration data, final
YamlShardingAutoTableRuleConfiguration result) {
- if (null != data.getActualDataSources() &&
!data.getActualDataSources().isEmpty()) {
- getShardingCountWithAlgorithms(data,
shardingAlgorithms).ifPresent(shardingCount ->
result.setActualDataNodes(getActualDataNodes(data, shardingCount)));
- getShardingCountWithAlgorithmConfig(data,
shardingAlgorithmConfigs).ifPresent(shardingCount ->
result.setActualDataNodes(getActualDataNodes(data, shardingCount)));
+ private void setActualDataNodesWithAlgorithms(final
ShardingAutoTableRuleConfiguration data, final
YamlShardingAutoTableRuleConfiguration yamlData) {
+ if (!Strings.isNullOrEmpty(data.getActualDataSources())) {
+ getShardingCountWithAlgorithms(data).ifPresent(optional ->
yamlData.setActualDataNodes(getActualDataNodes(data, optional)));
+
getShardingCountWithAlgorithmConfiguration(data).ifPresent(optional ->
yamlData.setActualDataNodes(getActualDataNodes(data, optional)));
}
}
- private Optional<Integer> getShardingCountWithAlgorithms(final
ShardingAutoTableRuleConfiguration configuration, final Map<String,
ShardingAlgorithm> shardingAlgorithms) {
- if (null != configuration.getShardingStrategy() &&
shardingAlgorithms.containsKey(configuration.getShardingStrategy().getShardingAlgorithmName()))
{
- ShardingAlgorithm algorithm =
shardingAlgorithms.get(configuration.getShardingStrategy().getShardingAlgorithmName());
+ private Optional<Integer> getShardingCountWithAlgorithms(final
ShardingAutoTableRuleConfiguration data) {
+ if (null != data.getShardingStrategy() &&
shardingAlgorithms.containsKey(data.getShardingStrategy().getShardingAlgorithmName()))
{
+ ShardingAlgorithm algorithm =
shardingAlgorithms.get(data.getShardingStrategy().getShardingAlgorithmName());
if (algorithm instanceof ShardingAutoTableAlgorithm) {
return Optional.of(((ShardingAutoTableAlgorithm)
algorithm).getAutoTablesAmount());
}
@@ -103,9 +89,9 @@ public final class
YamlShardingAutoTableRuleConfigurationSwapper implements Yaml
return Optional.empty();
}
- private Optional<Integer> getShardingCountWithAlgorithmConfig(final
ShardingAutoTableRuleConfiguration configuration, final Map<String,
AlgorithmConfiguration> shardingAlgorithms) {
- if (null != configuration.getShardingStrategy() &&
shardingAlgorithms.containsKey(configuration.getShardingStrategy().getShardingAlgorithmName()))
{
- ShardingAlgorithm algorithm =
ShardingAlgorithmFactory.newInstance(shardingAlgorithms.get(configuration.getShardingStrategy().getShardingAlgorithmName()));
+ private Optional<Integer> getShardingCountWithAlgorithmConfiguration(final
ShardingAutoTableRuleConfiguration data) {
+ if (null != data.getShardingStrategy() &&
shardingAlgorithmConfigs.containsKey(data.getShardingStrategy().getShardingAlgorithmName()))
{
+ ShardingAlgorithm algorithm =
ShardingAlgorithmFactory.newInstance(shardingAlgorithmConfigs.get(data.getShardingStrategy().getShardingAlgorithmName()));
if (algorithm instanceof ShardingAutoTableAlgorithm) {
return Optional.of(((ShardingAutoTableAlgorithm)
algorithm).getAutoTablesAmount());
}
@@ -117,4 +103,19 @@ public final class
YamlShardingAutoTableRuleConfigurationSwapper implements Yaml
Collection<String> dataSourceNames = new
InlineExpressionParser(data.getActualDataSources()).splitAndEvaluate();
return String.join(",", DataNodeUtil.getFormatDataNodes(shardingCount,
data.getLogicTable(), dataSourceNames));
}
+
+ @Override
+ public ShardingAutoTableRuleConfiguration swapToObject(final
YamlShardingAutoTableRuleConfiguration yamlConfig) {
+ Preconditions.checkNotNull(yamlConfig.getLogicTable(), "Logic table
cannot be null.");
+ ShardingAutoTableRuleConfiguration result = new
ShardingAutoTableRuleConfiguration(yamlConfig.getLogicTable(),
yamlConfig.getActualDataSources());
+ result.setActualTablePrefix(yamlConfig.getActualTablePrefix());
+ result.setActualDataNodes(yamlConfig.getActualDataNodes());
+ if (null != yamlConfig.getShardingStrategy()) {
+
result.setShardingStrategy(shardingStrategySwapper.swapToObject(yamlConfig.getShardingStrategy()));
+ }
+ if (null != yamlConfig.getKeyGenerateStrategy()) {
+
result.setKeyGenerateStrategy(keyGenerateStrategySwapper.swapToObject(yamlConfig.getKeyGenerateStrategy()));
+ }
+ return result;
+ }
}
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingAutoTableRuleConfigurationSwapperTest.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingAutoTableRuleConfigurationSwapperTest.java
index 0c411623232..c0f4ff065d2 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingAutoTableRuleConfigurationSwapperTest.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingAutoTableRuleConfigurationSwapperTest.java
@@ -46,7 +46,7 @@ public final class
YamlShardingAutoTableRuleConfigurationSwapperTest {
}
@Test
- public void assertSwapToYamlWithMinProperties() {
+ public void assertSwapToYamlConfigurationWithMinProperties() {
YamlShardingAutoTableRuleConfiguration actual =
swapper.swapToYamlConfiguration(new ShardingAutoTableRuleConfiguration("tbl",
"ds0,ds1"));
assertThat(actual.getLogicTable(), is("tbl"));
assertThat(actual.getActualDataSources(), is("ds0,ds1"));
@@ -55,7 +55,7 @@ public final class
YamlShardingAutoTableRuleConfigurationSwapperTest {
}
@Test
- public void assertSwapToYamlWithMaxProperties() {
+ public void assertSwapToYamlConfigurationWithMaxProperties() {
ShardingAutoTableRuleConfiguration shardingTableRuleConfig = new
ShardingAutoTableRuleConfiguration("tbl", "ds0,ds1");
shardingTableRuleConfig.setActualTablePrefix("tmp_");
shardingTableRuleConfig.setShardingStrategy(mock(StandardShardingStrategyConfiguration.class));
@@ -71,12 +71,10 @@ public final class
YamlShardingAutoTableRuleConfigurationSwapperTest {
}
@Test
- public void assertSwapToYamlAutoAddActualDataNodes() {
+ public void assertSwapToYamlConfigurationWithAutoAddActualDataNodes() {
ShardingAutoTableRuleConfiguration shardingTableRuleConfig = new
ShardingAutoTableRuleConfiguration("tbl", "ds0,ds1");
shardingTableRuleConfig.setActualTablePrefix("tmp_");
- StandardShardingStrategyConfiguration strategyConfiguration =
mock(StandardShardingStrategyConfiguration.class);
-
when(strategyConfiguration.getShardingAlgorithmName()).thenReturn("foo_algorithm");
- shardingTableRuleConfig.setShardingStrategy(strategyConfiguration);
+ shardingTableRuleConfig.setShardingStrategy(new
StandardShardingStrategyConfiguration("col", "foo_algorithm"));
shardingTableRuleConfig.setKeyGenerateStrategy(mock(KeyGenerateStrategyConfiguration.class));
YamlShardingAutoTableRuleConfiguration actual =
swapper.swapToYamlConfiguration(shardingTableRuleConfig);
assertThat(actual.getLogicTable(), is("tbl"));