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

Reply via email to