This is an automated email from the ASF dual-hosted git repository.
chengzhang 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 c3fcf086182 Minor refactor for ShadowRuleConfigurationChecker logic
(#30664)
c3fcf086182 is described below
commit c3fcf0861823a408e1e317131e79346aec23a9a9
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Wed Mar 27 08:25:01 2024 +0800
Minor refactor for ShadowRuleConfigurationChecker logic (#30664)
---
.../checker/ShadowRuleConfigurationChecker.java | 36 +++++++++++++---------
1 file changed, 21 insertions(+), 15 deletions(-)
diff --git
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/checker/ShadowRuleConfigurationChecker.java
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/checker/ShadowRuleConfigurationChecker.java
index 0b2dde8770e..27fb7f80107 100644
---
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/checker/ShadowRuleConfigurationChecker.java
+++
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/checker/ShadowRuleConfigurationChecker.java
@@ -49,10 +49,12 @@ public final class ShadowRuleConfigurationChecker
implements RuleConfigurationCh
checkShadowAlgorithms(ruleConfig.getShadowAlgorithms());
checkDefaultShadowAlgorithmConfiguration(ruleConfig.getDefaultShadowAlgorithmName(),
ruleConfig.getShadowAlgorithms());
checkDataSources(ruleConfig.getDataSources(), dataSourceMap,
databaseName);
- checkShadowTableDataSourcesAutoReferences(ruleConfig.getTables(),
ruleConfig.getDataSources());
+ // TODO move setDefaultShadowDataSource to yaml swapper
+ setDefaultShadowDataSource(ruleConfig.getTables(),
ruleConfig.getDataSources());
checkShadowTableDataSourcesReferences(ruleConfig.getTables(),
ruleConfig.getDataSources());
- checkShadowTableAlgorithmsAutoReferences(ruleConfig.getTables(),
ruleConfig.getShadowAlgorithms(), ruleConfig.getDefaultShadowAlgorithmName());
- checkShadowTableAlgorithmsReferences(ruleConfig.getTables(),
databaseName);
+ // TODO move setDefaultShadowAlgorithm to yaml swapper
+ setDefaultShadowAlgorithm(ruleConfig.getTables(),
ruleConfig.getDefaultShadowAlgorithmName());
+ checkShadowTableAlgorithmsReferences(ruleConfig.getTables(),
ruleConfig.getShadowAlgorithms(), databaseName);
}
private void checkShadowAlgorithms(final Map<String,
AlgorithmConfiguration> shadowAlgorithmConfigs) {
@@ -68,10 +70,13 @@ public final class ShadowRuleConfigurationChecker
implements RuleConfigurationCh
}
}
- private void checkShadowTableDataSourcesAutoReferences(final Map<String,
ShadowTableConfiguration> shadowTables, final
Collection<ShadowDataSourceConfiguration> shadowDataSources) {
+ private void setDefaultShadowDataSource(final Map<String,
ShadowTableConfiguration> shadowTables, final
Collection<ShadowDataSourceConfiguration> shadowDataSources) {
if (1 == shadowDataSources.size()) {
- String dataSourceName =
shadowDataSources.iterator().next().getName();
-
shadowTables.values().stream().map(ShadowTableConfiguration::getDataSourceNames).filter(Collection::isEmpty).forEach(dataSourceNames
-> dataSourceNames.add(dataSourceName));
+ for (ShadowTableConfiguration each : shadowTables.values()) {
+ if (each.getDataSourceNames().isEmpty()) {
+
each.getDataSourceNames().add(shadowDataSources.iterator().next().getName());
+ }
+ }
}
}
@@ -91,20 +96,21 @@ public final class ShadowRuleConfigurationChecker
implements RuleConfigurationCh
}
}
- private void checkShadowTableAlgorithmsAutoReferences(final Map<String,
ShadowTableConfiguration> shadowTables,
- final Map<String,
AlgorithmConfiguration> shadowAlgorithms, final String
defaultShadowAlgorithmName) {
+ private void setDefaultShadowAlgorithm(final Map<String,
ShadowTableConfiguration> shadowTables, final String
defaultShadowAlgorithmName) {
for (ShadowTableConfiguration each : shadowTables.values()) {
- Collection<String> names = each.getShadowAlgorithmNames();
- names.removeIf(next -> !shadowAlgorithms.containsKey(next));
- if (null != defaultShadowAlgorithmName && names.isEmpty()) {
- names.add(defaultShadowAlgorithmName);
+ Collection<String> shadowAlgorithmNames =
each.getShadowAlgorithmNames();
+ if (null != defaultShadowAlgorithmName &&
shadowAlgorithmNames.isEmpty()) {
+ shadowAlgorithmNames.add(defaultShadowAlgorithmName);
}
}
}
- private void checkShadowTableAlgorithmsReferences(final Map<String,
ShadowTableConfiguration> shadowTables, final String databaseName) {
- shadowTables.forEach((key, value) ->
ShardingSpherePreconditions.checkState(!value.getShadowAlgorithmNames().isEmpty(),
- () -> new EmptyAlgorithmException("Shadow", new
SQLExceptionIdentifier(databaseName))));
+ private void checkShadowTableAlgorithmsReferences(final Map<String,
ShadowTableConfiguration> shadowTables, final Map<String,
AlgorithmConfiguration> shadowAlgorithms, final String databaseName) {
+ for (ShadowTableConfiguration each : shadowTables.values()) {
+
ShardingSpherePreconditions.checkState(!each.getShadowAlgorithmNames().isEmpty(),
() -> new EmptyAlgorithmException("Shadow", new
SQLExceptionIdentifier(databaseName)));
+ each.getShadowAlgorithmNames().forEach(shadowAlgorithmName ->
ShardingSpherePreconditions.checkState(shadowAlgorithms.containsKey(shadowAlgorithmName),
+ () -> new
MissingRequiredShadowConfigurationException("ShadowAlgorithmName",
databaseName)));
+ }
}
@Override