This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 39b5102712a Refactor YamlRuleRepositoryTupleSwapperEngine (#34830)
39b5102712a is described below
commit 39b5102712a8ef1774b2fa9ed11be4685c36d5e3
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Mar 1 15:55:00 2025 +0800
Refactor YamlRuleRepositoryTupleSwapperEngine (#34830)
---
.../config/database/DatabaseRulePersistService.java | 4 ++--
.../tuple/YamlRuleRepositoryTupleSwapperEngine.java | 19 +++++++++----------
.../YamlRuleRepositoryTupleSwapperEngineTest.java | 7 -------
.../yaml/YamlRuleRepositoryTupleSwapperEngineIT.java | 2 +-
4 files changed, 12 insertions(+), 20 deletions(-)
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DatabaseRulePersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DatabaseRulePersistService.java
index c63acb2b686..5d2f2e40ea0 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DatabaseRulePersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DatabaseRulePersistService.java
@@ -72,8 +72,8 @@ public final class DatabaseRulePersistService {
}
private RuleConfiguration load(final String databaseName, final String
ruleType) {
- return new
YamlRuleConfigurationSwapperEngine().swapToRuleConfiguration(yamlRuleRepositoryTupleSwapperEngine.swapToYamlDatabaseRuleConfigurations(
- Collections.singletonMap(ruleType, load(databaseName,
DatabaseRuleNodeGenerator.generate(ruleType)))).iterator().next());
+ return new
YamlRuleConfigurationSwapperEngine().swapToRuleConfiguration(
+
yamlRuleRepositoryTupleSwapperEngine.swapToYamlDatabaseRuleConfiguration(ruleType,
load(databaseName, DatabaseRuleNodeGenerator.generate(ruleType))));
}
private Collection<RuleRepositoryTuple> load(final String databaseName,
final DatabaseRuleNode databaseRuleNode) {
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/rule/tuple/YamlRuleRepositoryTupleSwapperEngine.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/rule/tuple/YamlRuleRepositoryTupleSwapperEngine.java
index 93838393c80..5fa010ebad8 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/rule/tuple/YamlRuleRepositoryTupleSwapperEngine.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/rule/tuple/YamlRuleRepositoryTupleSwapperEngine.java
@@ -133,25 +133,24 @@ public final class YamlRuleRepositoryTupleSwapperEngine {
}
/**
- * Swap to YAML database rule configurations.
+ * Swap to YAML database rule configuration.
*
+ * @param ruleType rule type
* @param tuples rule repository tuples
- * @return global rule configurations
+ * @return database rule configuration
+ * @throws IllegalArgumentException throw if rule configuration not found
*/
@SuppressWarnings("rawtypes")
- public Collection<YamlRuleConfiguration>
swapToYamlDatabaseRuleConfigurations(final Map<String,
Collection<RuleRepositoryTuple>> tuples) {
- if (tuples.isEmpty()) {
- return Collections.emptyList();
- }
- Collection<YamlRuleConfiguration> result = new LinkedList<>();
+ public YamlRuleConfiguration swapToYamlDatabaseRuleConfiguration(final
String ruleType, final Collection<RuleRepositoryTuple> tuples) {
for (YamlRuleConfigurationSwapper each :
OrderedSPILoader.getServices(YamlRuleConfigurationSwapper.class)) {
Class<? extends YamlRuleConfiguration> yamlRuleConfigClass =
getYamlRuleConfigurationClass(each);
RuleRepositoryTupleEntity entity =
yamlRuleConfigClass.getAnnotation(RuleRepositoryTupleEntity.class);
- if (null != entity && tuples.containsKey(entity.value())) {
- swapToYamlRuleConfiguration(tuples.get(entity.value()),
yamlRuleConfigClass).ifPresent(result::add);
+ if (null != entity && entity.value().equals(ruleType)) {
+ return swapToYamlRuleConfiguration(tuples, yamlRuleConfigClass)
+ .orElseThrow(() -> new
IllegalArgumentException(String.format("Can not find rule configuration with
type: %s", ruleType)));
}
}
- return result;
+ throw new IllegalArgumentException(String.format("Can not find rule
configuration with type: %s", ruleType));
}
/**
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/rule/tuple/YamlRuleRepositoryTupleSwapperEngineTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/rule/tuple/YamlRuleRepositoryTupleSwapperEngineTest.java
index 0fa1c780c48..812212476ba 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/rule/tuple/YamlRuleRepositoryTupleSwapperEngineTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/rule/tuple/YamlRuleRepositoryTupleSwapperEngineTest.java
@@ -29,7 +29,6 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.Map;
import java.util.Optional;
import static org.hamcrest.CoreMatchers.is;
@@ -131,12 +130,6 @@ class YamlRuleRepositoryTupleSwapperEngineTest {
assertThat(actualYamlConfig.getEnumValue(),
is(NodeYamlRuleConfigurationEnum.FOO));
}
- @Test
- void assertSwapToEmptyYamlRuleConfigurations() {
- Map<String, Collection<RuleRepositoryTuple>> tuples =
Collections.emptyMap();
- assertTrue(new
YamlRuleRepositoryTupleSwapperEngine().swapToYamlDatabaseRuleConfigurations(tuples).isEmpty());
- }
-
@Test
void assertSwapToNotFoundYamlGlobalRuleConfiguration() {
assertThrows(IllegalStateException.class, () -> new
YamlRuleRepositoryTupleSwapperEngine().swapToYamlGlobalRuleConfiguration("invalid",
"value: foo"));
diff --git
a/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/YamlRuleRepositoryTupleSwapperEngineIT.java
b/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/YamlRuleRepositoryTupleSwapperEngineIT.java
index fc63f188644..5679f4e52e2 100644
---
a/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/YamlRuleRepositoryTupleSwapperEngineIT.java
+++
b/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/YamlRuleRepositoryTupleSwapperEngineIT.java
@@ -98,7 +98,7 @@ public abstract class YamlRuleRepositoryTupleSwapperEngineIT {
.map(each -> new
RuleRepositoryTuple(getRepositoryTupleKey(yamlRuleConfig instanceof
YamlGlobalRuleConfiguration, ruleType, each),
each.getValue())).collect(Collectors.toList());
YamlRuleConfiguration actualYamlRuleConfig = entity.leaf()
? engine.swapToYamlGlobalRuleConfiguration(ruleType,
tuples.iterator().next().getValue())
- :
engine.swapToYamlDatabaseRuleConfigurations(Collections.singletonMap(ruleType,
tuples)).iterator().next();
+ : engine.swapToYamlDatabaseRuleConfiguration(ruleType, tuples);
YamlRootConfiguration yamlRootConfig = new YamlRootConfiguration();
yamlRootConfig.setRules(Collections.singletonList(actualYamlRuleConfig));
return YamlEngine.marshal(yamlRootConfig);