You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2022/07/22 09:00:04 UTC
[shardingsphere] branch master updated: Move common check logic to AbstractShardingRuleConfigurationChecker (#19469)
This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 09945ec80df Move common check logic to AbstractShardingRuleConfigurationChecker (#19469)
09945ec80df is described below
commit 09945ec80df01762a8c1e52cf22db870a433395f
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Fri Jul 22 16:59:59 2022 +0800
Move common check logic to AbstractShardingRuleConfigurationChecker (#19469)
---
.../AbstractShardingRuleConfigurationChecker.java | 76 +++++++++-------------
...hmProvidedShardingRuleConfigurationChecker.java | 62 ++++++++++++++----
.../checker/ShardingRuleConfigurationChecker.java | 62 ++++++++++++++----
3 files changed, 131 insertions(+), 69 deletions(-)
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/checker/AbstractShardingRuleConfigurationChecker.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/checker/AbstractShardingRuleConfigurationChecker.java
index 4d0af78a54e..88d978f53d7 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/checker/AbstractShardingRuleConfigurationChecker.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/checker/AbstractShardingRuleConfigurationChecker.java
@@ -38,29 +38,18 @@ public abstract class AbstractShardingRuleConfigurationChecker<T extends RuleCon
@Override
public final void check(final String databaseName, final T config) {
- checkShardingRuleConfiguration(databaseName, config);
+ Collection<String> keyGenerators = getKeyGenerators(config);
+ Collection<String> auditors = getAuditors(config);
+ Collection<String> shardingAlgorithms = getShardingAlgorithms(config);
+ checkTableConfiguration(getTables(config), getAutoTables(config), keyGenerators, auditors, shardingAlgorithms, databaseName);
+ checkKeyGenerateStrategy(getDefaultKeyGenerateStrategy(config), keyGenerators, databaseName);
+ checkAuditStrategy(getDefaultAuditStrategy(config), auditors, databaseName);
+ checkShardingStrategy(getDefaultDatabaseShardingStrategy(config), shardingAlgorithms, databaseName);
+ checkShardingStrategy(getDefaultTableShardingStrategy(config), shardingAlgorithms, databaseName);
}
- /**
- * Check sharding rule configuration.
- *
- * @param databaseName database name
- * @param config config
- */
- protected abstract void checkShardingRuleConfiguration(String databaseName, T config);
-
- /**
- * Check table configuration.
- *
- * @param tables table configurations
- * @param autoTables autoTable configurations
- * @param keyGenerators keyGenerators
- * @param auditors auditors
- * @param shardingAlgorithms shardingAlgorithms
- * @param databaseName database name
- */
- protected void checkTableConfiguration(final Collection<ShardingTableRuleConfiguration> tables, final Collection<ShardingAutoTableRuleConfiguration> autoTables,
- final Collection<String> keyGenerators, final Collection<String> auditors, final Collection<String> shardingAlgorithms, final String databaseName) {
+ private void checkTableConfiguration(final Collection<ShardingTableRuleConfiguration> tables, final Collection<ShardingAutoTableRuleConfiguration> autoTables,
+ final Collection<String> keyGenerators, final Collection<String> auditors, final Collection<String> shardingAlgorithms, final String databaseName) {
Preconditions.checkState(!tables.isEmpty() || !autoTables.isEmpty(),
"No available sharding table or autoTable configurations in database `%s`.", databaseName);
for (ShardingTableRuleConfiguration each : tables) {
@@ -76,14 +65,7 @@ public abstract class AbstractShardingRuleConfigurationChecker<T extends RuleCon
}
}
- /**
- * Check key generate strategy.
- *
- * @param keyGenerateStrategy key generate strategy
- * @param keyGenerators keyGenerators
- * @param databaseName database name
- */
- protected void checkKeyGenerateStrategy(final KeyGenerateStrategyConfiguration keyGenerateStrategy, final Collection<String> keyGenerators, final String databaseName) {
+ private void checkKeyGenerateStrategy(final KeyGenerateStrategyConfiguration keyGenerateStrategy, final Collection<String> keyGenerators, final String databaseName) {
if (null == keyGenerateStrategy) {
return;
}
@@ -91,14 +73,7 @@ public abstract class AbstractShardingRuleConfigurationChecker<T extends RuleCon
"Can not find keyGenerator `%s` in database `%s`.", keyGenerateStrategy.getKeyGeneratorName(), databaseName);
}
- /**
- * Check audit strategy.
- *
- * @param auditStrategy audit strategy
- * @param auditors auditors
- * @param databaseName database name
- */
- protected void checkAuditStrategy(final ShardingAuditStrategyConfiguration auditStrategy, final Collection<String> auditors, final String databaseName) {
+ private void checkAuditStrategy(final ShardingAuditStrategyConfiguration auditStrategy, final Collection<String> auditors, final String databaseName) {
if (null == auditStrategy) {
return;
}
@@ -106,18 +81,29 @@ public abstract class AbstractShardingRuleConfigurationChecker<T extends RuleCon
"Can not find all auditors `%s` in database `%s`.", auditStrategy.getAuditorNames(), databaseName);
}
- /**
- * Check sharding strategy.
- *
- * @param shardingStrategy sharding strategy
- * @param shardingAlgorithms shardingAlgorithms
- * @param databaseName database name
- */
- protected void checkShardingStrategy(final ShardingStrategyConfiguration shardingStrategy, final Collection<String> shardingAlgorithms, final String databaseName) {
+ private void checkShardingStrategy(final ShardingStrategyConfiguration shardingStrategy, final Collection<String> shardingAlgorithms, final String databaseName) {
if (null == shardingStrategy || shardingStrategy instanceof NoneShardingStrategyConfiguration) {
return;
}
Preconditions.checkState(shardingAlgorithms.contains(shardingStrategy.getShardingAlgorithmName()),
"Can not find shardingAlgorithm `%s` in database `%s`.", shardingStrategy.getShardingAlgorithmName(), databaseName);
}
+
+ protected abstract Collection<String> getKeyGenerators(T config);
+
+ protected abstract Collection<String> getAuditors(T config);
+
+ protected abstract Collection<String> getShardingAlgorithms(T config);
+
+ protected abstract Collection<ShardingTableRuleConfiguration> getTables(T config);
+
+ protected abstract Collection<ShardingAutoTableRuleConfiguration> getAutoTables(T config);
+
+ protected abstract KeyGenerateStrategyConfiguration getDefaultKeyGenerateStrategy(T config);
+
+ protected abstract ShardingAuditStrategyConfiguration getDefaultAuditStrategy(T config);
+
+ protected abstract ShardingStrategyConfiguration getDefaultDatabaseShardingStrategy(T config);
+
+ protected abstract ShardingStrategyConfiguration getDefaultTableShardingStrategy(T config);
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/checker/AlgorithmProvidedShardingRuleConfigurationChecker.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/checker/AlgorithmProvidedShardingRuleConfigurationChecker.java
index e04efd19a74..56096c96e01 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/checker/AlgorithmProvidedShardingRuleConfigurationChecker.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/checker/AlgorithmProvidedShardingRuleConfigurationChecker.java
@@ -18,6 +18,11 @@
package org.apache.shardingsphere.sharding.checker;
import org.apache.shardingsphere.sharding.algorithm.config.AlgorithmProvidedShardingRuleConfiguration;
+import org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
+import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
+import org.apache.shardingsphere.sharding.api.config.strategy.audit.ShardingAuditStrategyConfiguration;
+import org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
+import org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingStrategyConfiguration;
import org.apache.shardingsphere.sharding.constant.ShardingOrder;
import java.util.Collection;
@@ -27,18 +32,6 @@ import java.util.Collection;
*/
public final class AlgorithmProvidedShardingRuleConfigurationChecker extends AbstractShardingRuleConfigurationChecker<AlgorithmProvidedShardingRuleConfiguration> {
- @Override
- protected void checkShardingRuleConfiguration(final String databaseName, final AlgorithmProvidedShardingRuleConfiguration config) {
- Collection<String> keyGenerators = config.getKeyGenerators().keySet();
- Collection<String> auditors = config.getAuditors().keySet();
- Collection<String> shardingAlgorithms = config.getShardingAlgorithms().keySet();
- checkTableConfiguration(config.getTables(), config.getAutoTables(), keyGenerators, auditors, shardingAlgorithms, databaseName);
- checkKeyGenerateStrategy(config.getDefaultKeyGenerateStrategy(), keyGenerators, databaseName);
- checkAuditStrategy(config.getDefaultAuditStrategy(), auditors, databaseName);
- checkShardingStrategy(config.getDefaultDatabaseShardingStrategy(), shardingAlgorithms, databaseName);
- checkShardingStrategy(config.getDefaultTableShardingStrategy(), shardingAlgorithms, databaseName);
- }
-
@Override
public int getOrder() {
return ShardingOrder.ALGORITHM_PROVIDER_ORDER;
@@ -48,4 +41,49 @@ public final class AlgorithmProvidedShardingRuleConfigurationChecker extends Abs
public Class<AlgorithmProvidedShardingRuleConfiguration> getTypeClass() {
return AlgorithmProvidedShardingRuleConfiguration.class;
}
+
+ @Override
+ protected Collection<String> getKeyGenerators(final AlgorithmProvidedShardingRuleConfiguration config) {
+ return config.getKeyGenerators().keySet();
+ }
+
+ @Override
+ protected Collection<String> getAuditors(final AlgorithmProvidedShardingRuleConfiguration config) {
+ return config.getAuditors().keySet();
+ }
+
+ @Override
+ protected Collection<String> getShardingAlgorithms(final AlgorithmProvidedShardingRuleConfiguration config) {
+ return config.getShardingAlgorithms().keySet();
+ }
+
+ @Override
+ protected Collection<ShardingTableRuleConfiguration> getTables(final AlgorithmProvidedShardingRuleConfiguration config) {
+ return config.getTables();
+ }
+
+ @Override
+ protected Collection<ShardingAutoTableRuleConfiguration> getAutoTables(final AlgorithmProvidedShardingRuleConfiguration config) {
+ return config.getAutoTables();
+ }
+
+ @Override
+ protected KeyGenerateStrategyConfiguration getDefaultKeyGenerateStrategy(final AlgorithmProvidedShardingRuleConfiguration config) {
+ return config.getDefaultKeyGenerateStrategy();
+ }
+
+ @Override
+ protected ShardingAuditStrategyConfiguration getDefaultAuditStrategy(final AlgorithmProvidedShardingRuleConfiguration config) {
+ return config.getDefaultAuditStrategy();
+ }
+
+ @Override
+ protected ShardingStrategyConfiguration getDefaultDatabaseShardingStrategy(final AlgorithmProvidedShardingRuleConfiguration config) {
+ return config.getDefaultDatabaseShardingStrategy();
+ }
+
+ @Override
+ protected ShardingStrategyConfiguration getDefaultTableShardingStrategy(final AlgorithmProvidedShardingRuleConfiguration config) {
+ return config.getDefaultTableShardingStrategy();
+ }
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/checker/ShardingRuleConfigurationChecker.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/checker/ShardingRuleConfigurationChecker.java
index 8e9c5eb550a..afcce83622e 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/checker/ShardingRuleConfigurationChecker.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/checker/ShardingRuleConfigurationChecker.java
@@ -18,6 +18,11 @@
package org.apache.shardingsphere.sharding.checker;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
+import org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
+import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
+import org.apache.shardingsphere.sharding.api.config.strategy.audit.ShardingAuditStrategyConfiguration;
+import org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
+import org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingStrategyConfiguration;
import org.apache.shardingsphere.sharding.constant.ShardingOrder;
import java.util.Collection;
@@ -27,18 +32,6 @@ import java.util.Collection;
*/
public final class ShardingRuleConfigurationChecker extends AbstractShardingRuleConfigurationChecker<ShardingRuleConfiguration> {
- @Override
- protected void checkShardingRuleConfiguration(final String databaseName, final ShardingRuleConfiguration config) {
- Collection<String> keyGenerators = config.getKeyGenerators().keySet();
- Collection<String> auditors = config.getAuditors().keySet();
- Collection<String> shardingAlgorithms = config.getShardingAlgorithms().keySet();
- checkTableConfiguration(config.getTables(), config.getAutoTables(), keyGenerators, auditors, shardingAlgorithms, databaseName);
- checkKeyGenerateStrategy(config.getDefaultKeyGenerateStrategy(), keyGenerators, databaseName);
- checkAuditStrategy(config.getDefaultAuditStrategy(), auditors, databaseName);
- checkShardingStrategy(config.getDefaultDatabaseShardingStrategy(), shardingAlgorithms, databaseName);
- checkShardingStrategy(config.getDefaultTableShardingStrategy(), shardingAlgorithms, databaseName);
- }
-
@Override
public int getOrder() {
return ShardingOrder.ORDER;
@@ -48,4 +41,49 @@ public final class ShardingRuleConfigurationChecker extends AbstractShardingRule
public Class<ShardingRuleConfiguration> getTypeClass() {
return ShardingRuleConfiguration.class;
}
+
+ @Override
+ protected Collection<String> getKeyGenerators(final ShardingRuleConfiguration config) {
+ return config.getKeyGenerators().keySet();
+ }
+
+ @Override
+ protected Collection<String> getAuditors(final ShardingRuleConfiguration config) {
+ return config.getAuditors().keySet();
+ }
+
+ @Override
+ protected Collection<String> getShardingAlgorithms(final ShardingRuleConfiguration config) {
+ return config.getShardingAlgorithms().keySet();
+ }
+
+ @Override
+ protected Collection<ShardingTableRuleConfiguration> getTables(final ShardingRuleConfiguration config) {
+ return config.getTables();
+ }
+
+ @Override
+ protected Collection<ShardingAutoTableRuleConfiguration> getAutoTables(final ShardingRuleConfiguration config) {
+ return config.getAutoTables();
+ }
+
+ @Override
+ protected KeyGenerateStrategyConfiguration getDefaultKeyGenerateStrategy(final ShardingRuleConfiguration config) {
+ return config.getDefaultKeyGenerateStrategy();
+ }
+
+ @Override
+ protected ShardingAuditStrategyConfiguration getDefaultAuditStrategy(final ShardingRuleConfiguration config) {
+ return config.getDefaultAuditStrategy();
+ }
+
+ @Override
+ protected ShardingStrategyConfiguration getDefaultDatabaseShardingStrategy(final ShardingRuleConfiguration config) {
+ return config.getDefaultDatabaseShardingStrategy();
+ }
+
+ @Override
+ protected ShardingStrategyConfiguration getDefaultTableShardingStrategy(final ShardingRuleConfiguration config) {
+ return config.getDefaultTableShardingStrategy();
+ }
}