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