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 779d4de2f19 Remove unnecessary check of shadow rule configuration 
(#19749)
779d4de2f19 is described below

commit 779d4de2f19ff1a313d16581466ef19e2ade573d
Author: gin <[email protected]>
AuthorDate: Mon Aug 1 21:14:35 2022 +0800

    Remove unnecessary check of shadow rule configuration (#19749)
    
    * Remove unnecessary check of shadow rule configuration
    
    * Add init capacity for map
---
 .../AbstractShadowRuleConfigurationChecker.java    | 22 ++++++++--------------
 ...ithmProvidedShadowRuleConfigurationChecker.java | 10 +++++-----
 .../checker/ShadowRuleConfigurationChecker.java    | 10 +++++-----
 ...ProvidedShadowRuleConfigurationCheckerTest.java | 14 +++++++++++++-
 .../ShadowRuleConfigurationCheckerTest.java        | 12 +++++++++++-
 .../spring/boot/SpringBootStarterTest.java         |  4 ++--
 .../src/test/resources/application.properties      |  4 ++--
 7 files changed, 46 insertions(+), 30 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/checker/AbstractShadowRuleConfigurationChecker.java
 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/checker/AbstractShadowRuleConfigurationChecker.java
index 3394a16cd9d..ffc6c2e4d7e 100644
--- 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/checker/AbstractShadowRuleConfigurationChecker.java
+++ 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/checker/AbstractShadowRuleConfigurationChecker.java
@@ -42,26 +42,20 @@ public abstract class 
AbstractShadowRuleConfigurationChecker<T extends RuleConfi
     
     @Override
     public final void check(final String databaseName, final T config, final 
Map<String, DataSource> dataSourceMap, final Collection<ShardingSphereRule> 
rules) {
-        checkShadowRuleConfiguration(config);
+        checkShadowRuleConfiguration(config, dataSourceMap);
     }
     
-    protected abstract void checkShadowRuleConfiguration(T config);
+    protected abstract void checkShadowRuleConfiguration(T config, Map<String, 
DataSource> dataSources);
     
-    protected void sizeCheck(final Map<String, ShadowDataSourceConfiguration> 
dataSources, final Map<String, ShadowTableConfiguration> shadowTables, final 
String defaultShadowAlgorithmName) {
-        Preconditions.checkState(!dataSources.isEmpty(), "No available shadow 
data sources mappings in shadow configuration.");
-        if (null == defaultShadowAlgorithmName) {
-            Preconditions.checkState(!shadowTables.isEmpty(), "No available 
shadow tables in shadow configuration.");
+    protected void checkDataSources(final Map<String, 
ShadowDataSourceConfiguration> shadowDataSources, final Map<String, DataSource> 
dataSourceMap) {
+        Set<String> dataSource = dataSourceMap.keySet();
+        for (Entry<String, ShadowDataSourceConfiguration> entry : 
shadowDataSources.entrySet()) {
+            ShadowDataSourceConfiguration shadowConfiguration = 
entry.getValue();
+            boolean shadowDataSourceState = 
dataSource.contains(shadowConfiguration.getSourceDataSourceName()) && 
dataSource.contains(shadowConfiguration.getShadowDataSourceName());
+            Preconditions.checkState(shadowDataSourceState, "No available data 
source for shadow data source mapping configuration");
         }
     }
     
-    protected void shadowAlgorithmsSizeCheck(final Map<String, 
ShadowAlgorithm> shadowAlgorithms) {
-        Preconditions.checkState(!shadowAlgorithms.isEmpty(), "No available 
shadow algorithms in shadow configuration.");
-    }
-    
-    protected void shadowAlgorithmConfigurationsSizeCheck(final Map<String, 
ShardingSphereAlgorithmConfiguration> shadowAlgorithmConfigs) {
-        Preconditions.checkState(!shadowAlgorithmConfigs.isEmpty(), "No 
available shadow data algorithms in shadow configuration.");
-    }
-    
     protected void shadowTableDataSourcesAutoReferences(final Map<String, 
ShadowTableConfiguration> shadowTables, final Map<String, 
ShadowDataSourceConfiguration> dataSources) {
         if (1 == dataSources.size()) {
             String dataSourceName = dataSources.keySet().iterator().next();
diff --git 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/checker/AlgorithmProvidedShadowRuleConfigurationChecker.java
 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/checker/AlgorithmProvidedShadowRuleConfigurationChecker.java
index 429b68c3b26..50f297db98c 100644
--- 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/checker/AlgorithmProvidedShadowRuleConfigurationChecker.java
+++ 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/checker/AlgorithmProvidedShadowRuleConfigurationChecker.java
@@ -23,6 +23,7 @@ import 
org.apache.shardingsphere.shadow.api.config.table.ShadowTableConfiguratio
 import org.apache.shardingsphere.shadow.constant.ShadowOrder;
 import org.apache.shardingsphere.shadow.spi.ShadowAlgorithm;
 
+import javax.sql.DataSource;
 import java.util.Map;
 
 /**
@@ -31,15 +32,14 @@ import java.util.Map;
 public final class AlgorithmProvidedShadowRuleConfigurationChecker extends 
AbstractShadowRuleConfigurationChecker<AlgorithmProvidedShadowRuleConfiguration>
 {
     
     @Override
-    protected void checkShadowRuleConfiguration(final 
AlgorithmProvidedShadowRuleConfiguration config) {
+    protected void checkShadowRuleConfiguration(final 
AlgorithmProvidedShadowRuleConfiguration config, final Map<String, DataSource> 
dataSourceMap) {
         Map<String, ShadowDataSourceConfiguration> dataSources = 
config.getDataSources();
+        checkDataSources(dataSources, dataSourceMap);
         Map<String, ShadowTableConfiguration> shadowTables = 
config.getTables();
-        Map<String, ShadowAlgorithm> shadowAlgorithms = 
config.getShadowAlgorithms();
-        String defaultShadowAlgorithmName = 
config.getDefaultShadowAlgorithmName();
-        sizeCheck(dataSources, shadowTables, defaultShadowAlgorithmName);
-        shadowAlgorithmsSizeCheck(shadowAlgorithms);
         shadowTableDataSourcesAutoReferences(shadowTables, dataSources);
         shadowTableDataSourcesReferencesCheck(shadowTables, dataSources);
+        Map<String, ShadowAlgorithm> shadowAlgorithms = 
config.getShadowAlgorithms();
+        String defaultShadowAlgorithmName = 
config.getDefaultShadowAlgorithmName();
         defaultShadowAlgorithmCheck(defaultShadowAlgorithmName, 
shadowAlgorithms);
         shadowTableAlgorithmsAutoReferences(shadowTables, 
shadowAlgorithms.keySet(), defaultShadowAlgorithmName);
         shadowTableAlgorithmsReferencesCheck(shadowTables);
diff --git 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/checker/ShadowRuleConfigurationChecker.java
 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/checker/ShadowRuleConfigurationChecker.java
index 06fb112ba98..3b66a4f2992 100644
--- 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/checker/ShadowRuleConfigurationChecker.java
+++ 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/checker/ShadowRuleConfigurationChecker.java
@@ -23,6 +23,7 @@ import 
org.apache.shardingsphere.shadow.api.config.datasource.ShadowDataSourceCo
 import 
org.apache.shardingsphere.shadow.api.config.table.ShadowTableConfiguration;
 import org.apache.shardingsphere.shadow.constant.ShadowOrder;
 
+import javax.sql.DataSource;
 import java.util.Map;
 
 /**
@@ -31,15 +32,14 @@ import java.util.Map;
 public final class ShadowRuleConfigurationChecker extends 
AbstractShadowRuleConfigurationChecker<ShadowRuleConfiguration> {
     
     @Override
-    protected void checkShadowRuleConfiguration(final ShadowRuleConfiguration 
config) {
+    protected void checkShadowRuleConfiguration(final ShadowRuleConfiguration 
config, final Map<String, DataSource> dataSourceMap) {
         Map<String, ShadowDataSourceConfiguration> dataSources = 
config.getDataSources();
+        checkDataSources(dataSources, dataSourceMap);
         Map<String, ShadowTableConfiguration> shadowTables = 
config.getTables();
-        Map<String, ShardingSphereAlgorithmConfiguration> 
shadowAlgorithmConfigs = config.getShadowAlgorithms();
-        String defaultShadowAlgorithmName = 
config.getDefaultShadowAlgorithmName();
-        sizeCheck(dataSources, shadowTables, defaultShadowAlgorithmName);
-        shadowAlgorithmConfigurationsSizeCheck(shadowAlgorithmConfigs);
         shadowTableDataSourcesAutoReferences(shadowTables, dataSources);
         shadowTableDataSourcesReferencesCheck(shadowTables, dataSources);
+        Map<String, ShardingSphereAlgorithmConfiguration> 
shadowAlgorithmConfigs = config.getShadowAlgorithms();
+        String defaultShadowAlgorithmName = 
config.getDefaultShadowAlgorithmName();
         defaultShadowAlgorithmConfigurationCheck(defaultShadowAlgorithmName, 
shadowAlgorithmConfigs);
         shadowTableAlgorithmsAutoReferences(shadowTables, 
shadowAlgorithmConfigs.keySet(), defaultShadowAlgorithmName);
         shadowTableAlgorithmsReferencesCheck(shadowTables);
diff --git 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/checker/AlgorithmProvidedShadowRuleConfigurationCheckerTest.java
 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/checker/AlgorithmProvidedShadowRuleConfigurationCheckerTest.java
index a94589a1662..dae3c731fab 100644
--- 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/checker/AlgorithmProvidedShadowRuleConfigurationCheckerTest.java
+++ 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/checker/AlgorithmProvidedShadowRuleConfigurationCheckerTest.java
@@ -24,15 +24,27 @@ import 
org.apache.shardingsphere.shadow.api.config.table.ShadowTableConfiguratio
 import org.apache.shardingsphere.shadow.factory.ShadowAlgorithmFactory;
 import org.junit.Test;
 
+import javax.sql.DataSource;
+import java.util.LinkedHashMap;
 import java.util.LinkedList;
+import java.util.Map;
 import java.util.Properties;
 import java.util.Collections;
 
+import static org.mockito.Mockito.mock;
+
 public final class AlgorithmProvidedShadowRuleConfigurationCheckerTest {
     
     @Test
     public void assertCheck() {
-        new AlgorithmProvidedShadowRuleConfigurationChecker().check("", 
createAlgorithmProvidedShadowRuleConfiguration(), Collections.emptyMap(), 
Collections.emptyList());
+        new AlgorithmProvidedShadowRuleConfigurationChecker().check("", 
createAlgorithmProvidedShadowRuleConfiguration(), createDataSourceMap(), 
Collections.emptyList());
+    }
+    
+    private Map<String, DataSource> createDataSourceMap() {
+        Map<String, DataSource> result = new LinkedHashMap<>(2, 1);
+        result.put("ds", mock(DataSource.class));
+        result.put("ds_shadow", mock(DataSource.class));
+        return result;
     }
     
     private AlgorithmProvidedShadowRuleConfiguration 
createAlgorithmProvidedShadowRuleConfiguration() {
diff --git 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/checker/ShadowRuleConfigurationCheckerTest.java
 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/checker/ShadowRuleConfigurationCheckerTest.java
index 857e4a1f5dc..051deff9ded 100644
--- 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/checker/ShadowRuleConfigurationCheckerTest.java
+++ 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/checker/ShadowRuleConfigurationCheckerTest.java
@@ -23,6 +23,7 @@ import 
org.apache.shardingsphere.shadow.api.config.datasource.ShadowDataSourceCo
 import 
org.apache.shardingsphere.shadow.api.config.table.ShadowTableConfiguration;
 import org.junit.Test;
 
+import javax.sql.DataSource;
 import java.util.Collection;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
@@ -30,11 +31,20 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.Collections;
 
+import static org.mockito.Mockito.mock;
+
 public final class ShadowRuleConfigurationCheckerTest {
     
     @Test
     public void assertCheck() {
-        new ShadowRuleConfigurationChecker().check("", 
createShadowRuleConfiguration(), Collections.emptyMap(), 
Collections.emptyList());
+        new ShadowRuleConfigurationChecker().check("", 
createShadowRuleConfiguration(), createDataSourceMap(), 
Collections.emptyList());
+    }
+    
+    private Map<String, DataSource> createDataSourceMap() {
+        Map<String, DataSource> result = new LinkedHashMap<>(2, 1);
+        result.put("ds", mock(DataSource.class));
+        result.put("ds_shadow", mock(DataSource.class));
+        return result;
     }
     
     private ShadowRuleConfiguration createShadowRuleConfiguration() {
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/SpringBootStarterTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/SpringBootStarterTest.java
index 86446c7e915..029e9052cee 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/SpringBootStarterTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/SpringBootStarterTest.java
@@ -170,8 +170,8 @@ public class SpringBootStarterTest {
     
     private void assertShadowDataSourceMappings(final Map<String, 
ShadowDataSourceRule> actual) {
         assertThat(actual.size(), is(1));
-        assertThat(actual.get("shadow-data-source").getSourceDataSource(), 
is("ds"));
-        assertThat(actual.get("shadow-data-source").getShadowDataSource(), 
is("ds-shadow"));
+        assertThat(actual.get("shadow-data-source").getSourceDataSource(), 
is("ds0"));
+        assertThat(actual.get("shadow-data-source").getShadowDataSource(), 
is("ds1"));
     }
     
     private void assertShadowAlgorithms(final Map<String, ShadowAlgorithm> 
actual) {
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application.properties
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application.properties
index f6dcc0e00cd..6a71135f75f 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application.properties
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application.properties
@@ -52,8 +52,8 @@ 
spring.shardingsphere.rules.encrypt.tables.t_order.columns.pwd.plain-column=pwd_
 
spring.shardingsphere.rules.encrypt.tables.t_order.columns.pwd.encryptor-name=aesEncryptor
 
spring.shardingsphere.rules.encrypt.tables.t_order.columns.pwd.assisted-query-encryptor-name=aesEncryptor
 
-spring.shardingsphere.rules.shadow.data-sources.shadow-data-source.source-data-source-name=ds
-spring.shardingsphere.rules.shadow.data-sources.shadow-data-source.shadow-data-source-name=ds-shadow
+spring.shardingsphere.rules.shadow.data-sources.shadow-data-source.source-data-source-name=ds0
+spring.shardingsphere.rules.shadow.data-sources.shadow-data-source.shadow-data-source-name=ds1
 
 
spring.shardingsphere.rules.shadow.tables.t_order.data-source-names=shadow-data-source
 
spring.shardingsphere.rules.shadow.tables.t_order.shadow-algorithm-names=user-id-match-algorithm,order-id-match-algorithm,simple-hint-algorithm

Reply via email to