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 6cdbbf3bb49 Refactor ShadowRule (#33546)
6cdbbf3bb49 is described below

commit 6cdbbf3bb49db593228e97c7bd7b76471dd572c3
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Nov 4 23:14:15 2024 +0800

    Refactor ShadowRule (#33546)
    
    * Refactor ShadowRule
    
    * Refactor ShadowRule
---
 .../org/apache/shardingsphere/shadow/rule/ShadowRule.java     | 11 ++++++++++-
 .../org/apache/shardingsphere/shadow/rule/ShadowRuleTest.java |  6 ++++++
 .../handler/update/CreateDefaultShadowAlgorithmExecutor.java  |  4 ++--
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/rule/ShadowRule.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/rule/ShadowRule.java
index 74456156f78..c2bd609b253 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/rule/ShadowRule.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/rule/ShadowRule.java
@@ -49,7 +49,6 @@ public final class ShadowRule implements DatabaseRule {
     @Getter
     private final ShadowRuleConfiguration configuration;
     
-    @Getter
     private final Map<String, ShadowAlgorithm> shadowAlgorithms;
     
     private final ShadowAlgorithm defaultShadowAlgorithm;
@@ -85,6 +84,16 @@ public final class ShadowRule implements DatabaseRule {
                 entry -> new ShadowTableRule(entry.getKey(), 
entry.getValue().getDataSourceNames(), 
entry.getValue().getShadowAlgorithmNames(), shadowAlgorithms), (a, b) -> b, 
LinkedHashMap::new));
     }
     
+    /**
+     * Whether contains shadow algorithm.
+     *
+     * @param algorithmName algorithm name
+     * @return contains shadow algorithm or not
+     */
+    public boolean containsShadowAlgorithm(final String algorithmName) {
+        return shadowAlgorithms.containsKey(algorithmName);
+    }
+    
     /**
      * Get default shadow algorithm.
      *
diff --git 
a/features/shadow/core/src/test/java/org/apache/shardingsphere/shadow/rule/ShadowRuleTest.java
 
b/features/shadow/core/src/test/java/org/apache/shardingsphere/shadow/rule/ShadowRuleTest.java
index 487e0692302..79cc0e975f3 100644
--- 
a/features/shadow/core/src/test/java/org/apache/shardingsphere/shadow/rule/ShadowRuleTest.java
+++ 
b/features/shadow/core/src/test/java/org/apache/shardingsphere/shadow/rule/ShadowRuleTest.java
@@ -39,6 +39,7 @@ import java.util.Optional;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 class ShadowRuleTest {
     
@@ -93,6 +94,11 @@ class ShadowRuleTest {
         return result;
     }
     
+    @Test
+    void assertContainsShadowAlgorithm() {
+        assertTrue(rule.containsShadowAlgorithm("sql-hint-algorithm"));
+    }
+    
     @Test
     void assertGetDefaultShadowAlgorithm() {
         assertFalse(rule.getDefaultShadowAlgorithm().isPresent());
diff --git 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateDefaultShadowAlgorithmExecutor.java
 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateDefaultShadowAlgorithmExecutor.java
index c74a2ffc95b..320a9888271 100644
--- 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateDefaultShadowAlgorithmExecutor.java
+++ 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateDefaultShadowAlgorithmExecutor.java
@@ -55,7 +55,7 @@ public final class CreateDefaultShadowAlgorithmExecutor 
implements DatabaseRuleC
     }
     
     private void checkAlgorithmExisted() {
-        boolean isDuplicatedAlgorithmName = null != rule && 
rule.getShadowAlgorithms().containsKey("default_shadow_algorithm");
+        boolean isDuplicatedAlgorithmName = null != rule && 
rule.containsShadowAlgorithm("default_shadow_algorithm");
         ShardingSpherePreconditions.checkState(!isDuplicatedAlgorithmName, () 
-> new InUsedAlgorithmException("Shadow", database.getName(), 
Collections.singleton("default_shadow_algorithm")));
     }
     
@@ -72,7 +72,7 @@ public final class CreateDefaultShadowAlgorithmExecutor 
implements DatabaseRuleC
     @Override
     public ShadowRuleConfiguration buildToBeCreatedRuleConfiguration(final 
CreateDefaultShadowAlgorithmStatement sqlStatement) {
         ShadowRuleConfiguration result = new ShadowRuleConfiguration();
-        if (null == rule || 
!rule.getShadowAlgorithms().containsKey("default_shadow_algorithm")) {
+        if (null == rule || 
!rule.containsShadowAlgorithm("default_shadow_algorithm")) {
             result.setShadowAlgorithms(buildAlgorithmMap(sqlStatement));
             result.setDefaultShadowAlgorithmName("default_shadow_algorithm");
         }

Reply via email to