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

sunnianjun 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 c1ae61a3d03 Refactor ReadwriteSplittingRuleConfigurationChecker 
(#30890)
c1ae61a3d03 is described below

commit c1ae61a3d0354c55207d5aab679e86d55719f4ae
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Apr 15 12:20:06 2024 +0800

    Refactor ReadwriteSplittingRuleConfigurationChecker (#30890)
---
 ...ReadwriteSplittingRuleConfigurationChecker.java | 40 ++++++++++++----------
 1 file changed, 21 insertions(+), 19 deletions(-)

diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
index 4788da9a55b..7db7bab1d72 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
@@ -62,29 +62,31 @@ public final class 
ReadwriteSplittingRuleConfigurationChecker implements RuleCon
         Collection<String> readDataSourceNames = new HashSet<>();
         for (ReadwriteSplittingDataSourceRuleConfiguration each : configs) {
             
ShardingSpherePreconditions.checkState(!Strings.isNullOrEmpty(each.getName()), 
() -> new 
MissingRequiredReadwriteSplittingDataSourceRuleNameException(databaseName));
-            checkDataSources(databaseName, dataSourceMap, each, 
writeDataSourceNames, readDataSourceNames, builtRules);
+            checkDataSources(dataSourceMap, each, writeDataSourceNames, 
readDataSourceNames, builtRules, new 
ReadwriteSplittingRuleExceptionIdentifier(databaseName, each.getName()));
         }
     }
     
-    private void checkDataSources(final String databaseName, final Map<String, 
DataSource> dataSourceMap, final ReadwriteSplittingDataSourceRuleConfiguration 
config,
-                                  final Collection<String> 
writeDataSourceNames, final Collection<String> readDataSourceNames, final 
Collection<ShardingSphereRule> builtRules) {
-        
ShardingSpherePreconditions.checkState(!Strings.isNullOrEmpty(config.getWriteDataSourceName()),
 () -> new MissingRequiredReadwriteSplittingActualDataSourceException(
-                ReadwriteSplittingDataSourceType.WRITE, new 
ReadwriteSplittingRuleExceptionIdentifier(databaseName, config.getName())));
-        
ShardingSpherePreconditions.checkState(!config.getReadDataSourceNames().isEmpty(),
 () -> new MissingRequiredReadwriteSplittingActualDataSourceException(
-                ReadwriteSplittingDataSourceType.READ, new 
ReadwriteSplittingRuleExceptionIdentifier(databaseName, config.getName())));
-        checkWriteDataSourceNames(databaseName, dataSourceMap, 
writeDataSourceNames, config, builtRules);
+    private void checkDataSources(final Map<String, DataSource> dataSourceMap, 
final ReadwriteSplittingDataSourceRuleConfiguration config,
+                                  final Collection<String> 
writeDataSourceNames, final Collection<String> readDataSourceNames, final 
Collection<ShardingSphereRule> builtRules,
+                                  final 
ReadwriteSplittingRuleExceptionIdentifier exceptionIdentifier) {
+        
ShardingSpherePreconditions.checkState(!Strings.isNullOrEmpty(config.getWriteDataSourceName()),
+                () -> new 
MissingRequiredReadwriteSplittingActualDataSourceException(ReadwriteSplittingDataSourceType.WRITE,
 exceptionIdentifier));
+        
ShardingSpherePreconditions.checkState(!config.getReadDataSourceNames().isEmpty(),
+                () -> new 
MissingRequiredReadwriteSplittingActualDataSourceException(ReadwriteSplittingDataSourceType.READ,
 exceptionIdentifier));
+        checkWriteDataSourceNames(dataSourceMap, writeDataSourceNames, config, 
builtRules, exceptionIdentifier);
         for (String each : config.getReadDataSourceNames()) {
-            checkReadeDataSourceNames(databaseName, dataSourceMap, 
readDataSourceNames, each, config, builtRules);
+            checkReadeDataSourceNames(dataSourceMap, readDataSourceNames, 
each, builtRules, exceptionIdentifier);
         }
     }
     
-    private void checkWriteDataSourceNames(final String databaseName, final 
Map<String, DataSource> dataSourceMap, final Collection<String> 
writeDataSourceNames,
-                                           final 
ReadwriteSplittingDataSourceRuleConfiguration config, final 
Collection<ShardingSphereRule> builtRules) {
+    private void checkWriteDataSourceNames(final Map<String, DataSource> 
dataSourceMap, final Collection<String> writeDataSourceNames,
+                                           final 
ReadwriteSplittingDataSourceRuleConfiguration config, final 
Collection<ShardingSphereRule> builtRules,
+                                           final 
ReadwriteSplittingRuleExceptionIdentifier exceptionIdentifier) {
         for (String each : 
InlineExpressionParserFactory.newInstance(config.getWriteDataSourceName()).splitAndEvaluate())
 {
-            
ShardingSpherePreconditions.checkState(dataSourceMap.containsKey(each) || 
containsInOtherRules(each, builtRules), () -> new 
ReadwriteSplittingActualDataSourceNotFoundException(
-                    ReadwriteSplittingDataSourceType.WRITE, each, new 
ReadwriteSplittingRuleExceptionIdentifier(databaseName, config.getName())));
-            
ShardingSpherePreconditions.checkState(writeDataSourceNames.add(each), () -> 
new DuplicateReadwriteSplittingActualDataSourceException(
-                    ReadwriteSplittingDataSourceType.WRITE, each, new 
ReadwriteSplittingRuleExceptionIdentifier(databaseName, config.getName())));
+            
ShardingSpherePreconditions.checkState(dataSourceMap.containsKey(each) || 
containsInOtherRules(each, builtRules),
+                    () -> new 
ReadwriteSplittingActualDataSourceNotFoundException(ReadwriteSplittingDataSourceType.WRITE,
 each, exceptionIdentifier));
+            
ShardingSpherePreconditions.checkState(writeDataSourceNames.add(each),
+                    () -> new 
DuplicateReadwriteSplittingActualDataSourceException(ReadwriteSplittingDataSourceType.WRITE,
 each, exceptionIdentifier));
         }
     }
     
@@ -93,13 +95,13 @@ public final class 
ReadwriteSplittingRuleConfigurationChecker implements RuleCon
                 .anyMatch(optional -> optional.isPresent() && 
optional.get().getDataSourceMapper().containsKey(datasourceName));
     }
     
-    private void checkReadeDataSourceNames(final String databaseName, final 
Map<String, DataSource> dataSourceMap, final Collection<String> 
readDataSourceNames,
-                                           final String readDataSourceName, 
final ReadwriteSplittingDataSourceRuleConfiguration config, final 
Collection<ShardingSphereRule> builtRules) {
+    private void checkReadeDataSourceNames(final Map<String, DataSource> 
dataSourceMap, final Collection<String> readDataSourceNames,
+                                           final String readDataSourceName, 
final Collection<ShardingSphereRule> builtRules, final 
ReadwriteSplittingRuleExceptionIdentifier exceptionIdentifier) {
         for (String each : 
InlineExpressionParserFactory.newInstance(readDataSourceName).splitAndEvaluate())
 {
             
ShardingSpherePreconditions.checkState(dataSourceMap.containsKey(each) || 
containsInOtherRules(each, builtRules), () -> new 
ReadwriteSplittingActualDataSourceNotFoundException(
-                    ReadwriteSplittingDataSourceType.READ, each, new 
ReadwriteSplittingRuleExceptionIdentifier(databaseName, config.getName())));
+                    ReadwriteSplittingDataSourceType.READ, each, 
exceptionIdentifier));
             
ShardingSpherePreconditions.checkState(readDataSourceNames.add(each), () -> new 
DuplicateReadwriteSplittingActualDataSourceException(
-                    ReadwriteSplittingDataSourceType.READ, each, new 
ReadwriteSplittingRuleExceptionIdentifier(databaseName, config.getName())));
+                    ReadwriteSplittingDataSourceType.READ, each, 
exceptionIdentifier));
         }
     }
     

Reply via email to