This is an automated email from the ASF dual-hosted git repository.

chengzhang 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 c3fcf086182 Minor refactor for ShadowRuleConfigurationChecker logic 
(#30664)
c3fcf086182 is described below

commit c3fcf0861823a408e1e317131e79346aec23a9a9
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Wed Mar 27 08:25:01 2024 +0800

    Minor refactor for ShadowRuleConfigurationChecker logic (#30664)
---
 .../checker/ShadowRuleConfigurationChecker.java    | 36 +++++++++++++---------
 1 file changed, 21 insertions(+), 15 deletions(-)

diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/checker/ShadowRuleConfigurationChecker.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/checker/ShadowRuleConfigurationChecker.java
index 0b2dde8770e..27fb7f80107 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/checker/ShadowRuleConfigurationChecker.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/checker/ShadowRuleConfigurationChecker.java
@@ -49,10 +49,12 @@ public final class ShadowRuleConfigurationChecker 
implements RuleConfigurationCh
         checkShadowAlgorithms(ruleConfig.getShadowAlgorithms());
         
checkDefaultShadowAlgorithmConfiguration(ruleConfig.getDefaultShadowAlgorithmName(),
 ruleConfig.getShadowAlgorithms());
         checkDataSources(ruleConfig.getDataSources(), dataSourceMap, 
databaseName);
-        checkShadowTableDataSourcesAutoReferences(ruleConfig.getTables(), 
ruleConfig.getDataSources());
+        // TODO move setDefaultShadowDataSource to yaml swapper
+        setDefaultShadowDataSource(ruleConfig.getTables(), 
ruleConfig.getDataSources());
         checkShadowTableDataSourcesReferences(ruleConfig.getTables(), 
ruleConfig.getDataSources());
-        checkShadowTableAlgorithmsAutoReferences(ruleConfig.getTables(), 
ruleConfig.getShadowAlgorithms(), ruleConfig.getDefaultShadowAlgorithmName());
-        checkShadowTableAlgorithmsReferences(ruleConfig.getTables(), 
databaseName);
+        // TODO move setDefaultShadowAlgorithm to yaml swapper
+        setDefaultShadowAlgorithm(ruleConfig.getTables(), 
ruleConfig.getDefaultShadowAlgorithmName());
+        checkShadowTableAlgorithmsReferences(ruleConfig.getTables(), 
ruleConfig.getShadowAlgorithms(), databaseName);
     }
     
     private void checkShadowAlgorithms(final Map<String, 
AlgorithmConfiguration> shadowAlgorithmConfigs) {
@@ -68,10 +70,13 @@ public final class ShadowRuleConfigurationChecker 
implements RuleConfigurationCh
         }
     }
     
-    private void checkShadowTableDataSourcesAutoReferences(final Map<String, 
ShadowTableConfiguration> shadowTables, final 
Collection<ShadowDataSourceConfiguration> shadowDataSources) {
+    private void setDefaultShadowDataSource(final Map<String, 
ShadowTableConfiguration> shadowTables, final 
Collection<ShadowDataSourceConfiguration> shadowDataSources) {
         if (1 == shadowDataSources.size()) {
-            String dataSourceName = 
shadowDataSources.iterator().next().getName();
-            
shadowTables.values().stream().map(ShadowTableConfiguration::getDataSourceNames).filter(Collection::isEmpty).forEach(dataSourceNames
 -> dataSourceNames.add(dataSourceName));
+            for (ShadowTableConfiguration each : shadowTables.values()) {
+                if (each.getDataSourceNames().isEmpty()) {
+                    
each.getDataSourceNames().add(shadowDataSources.iterator().next().getName());
+                }
+            }
         }
     }
     
@@ -91,20 +96,21 @@ public final class ShadowRuleConfigurationChecker 
implements RuleConfigurationCh
         }
     }
     
-    private void checkShadowTableAlgorithmsAutoReferences(final Map<String, 
ShadowTableConfiguration> shadowTables,
-                                                          final Map<String, 
AlgorithmConfiguration> shadowAlgorithms, final String 
defaultShadowAlgorithmName) {
+    private void setDefaultShadowAlgorithm(final Map<String, 
ShadowTableConfiguration> shadowTables, final String 
defaultShadowAlgorithmName) {
         for (ShadowTableConfiguration each : shadowTables.values()) {
-            Collection<String> names = each.getShadowAlgorithmNames();
-            names.removeIf(next -> !shadowAlgorithms.containsKey(next));
-            if (null != defaultShadowAlgorithmName && names.isEmpty()) {
-                names.add(defaultShadowAlgorithmName);
+            Collection<String> shadowAlgorithmNames = 
each.getShadowAlgorithmNames();
+            if (null != defaultShadowAlgorithmName && 
shadowAlgorithmNames.isEmpty()) {
+                shadowAlgorithmNames.add(defaultShadowAlgorithmName);
             }
         }
     }
     
-    private void checkShadowTableAlgorithmsReferences(final Map<String, 
ShadowTableConfiguration> shadowTables, final String databaseName) {
-        shadowTables.forEach((key, value) -> 
ShardingSpherePreconditions.checkState(!value.getShadowAlgorithmNames().isEmpty(),
-                () -> new EmptyAlgorithmException("Shadow", new 
SQLExceptionIdentifier(databaseName))));
+    private void checkShadowTableAlgorithmsReferences(final Map<String, 
ShadowTableConfiguration> shadowTables, final Map<String, 
AlgorithmConfiguration> shadowAlgorithms, final String databaseName) {
+        for (ShadowTableConfiguration each : shadowTables.values()) {
+            
ShardingSpherePreconditions.checkState(!each.getShadowAlgorithmNames().isEmpty(),
 () -> new EmptyAlgorithmException("Shadow", new 
SQLExceptionIdentifier(databaseName)));
+            each.getShadowAlgorithmNames().forEach(shadowAlgorithmName -> 
ShardingSpherePreconditions.checkState(shadowAlgorithms.containsKey(shadowAlgorithmName),
+                    () -> new 
MissingRequiredShadowConfigurationException("ShadowAlgorithmName", 
databaseName)));
+        }
     }
     
     @Override

Reply via email to