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 <zhangli...@apache.org> 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"));