You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by su...@apache.org on 2024/04/15 04:20:12 UTC
(shardingsphere) branch master updated: Refactor ReadwriteSplittingRuleConfigurationChecker (#30890)
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 <zh...@apache.org>
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));
}
}