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();
+    }
 }