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 2023/05/17 07:39:29 UTC

[shardingsphere] branch master updated: Fix sonar issues on UnusedAlgorithmFinder (#25729)

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 53fdf842511 Fix sonar issues on UnusedAlgorithmFinder (#25729)
53fdf842511 is described below

commit 53fdf84251141bd568b6f623f51a6e12b319b757
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Wed May 17 15:39:19 2023 +0800

    Fix sonar issues on UnusedAlgorithmFinder (#25729)
    
    * Fix sonar issues on Replace this lambda with method reference
    
    * Fix sonar issues on Use concise character class syntax '\\d' instead of '[0-9]'
    
    * Fix sonar issues on ShardingRenameTableStatementValidatorTest
    
    * Fix sonar issues on UnusedAlgorithmFinder
---
 .../DropDefaultStrategyStatementUpdater.java       |  4 +--
 .../DropShardingTableRuleStatementUpdater.java     |  4 +--
 ...RuleUpdater.java => UnusedAlgorithmFinder.java} | 33 ++++++++++++----------
 3 files changed, 22 insertions(+), 19 deletions(-)

diff --git a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultStrategyStatementUpdater.java b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultStrategyStatementUpdater.java
index e96c1c40be3..deae1b60465 100644
--- a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultStrategyStatementUpdater.java
+++ b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultStrategyStatementUpdater.java
@@ -31,7 +31,7 @@ import java.util.Optional;
 /**
  * Drop sharding table rule statement updater.
  */
-public final class DropDefaultStrategyStatementUpdater extends AbstractDropShardingRuleUpdater implements RuleDefinitionDropUpdater<DropDefaultShardingStrategyStatement, ShardingRuleConfiguration> {
+public final class DropDefaultStrategyStatementUpdater implements RuleDefinitionDropUpdater<DropDefaultShardingStrategyStatement, ShardingRuleConfiguration> {
     
     @Override
     public void checkSQLStatement(final ShardingSphereDatabase database, final DropDefaultShardingStrategyStatement sqlStatement,
@@ -79,7 +79,7 @@ public final class DropDefaultStrategyStatementUpdater extends AbstractDropShard
         } else {
             currentRuleConfig.setDefaultDatabaseShardingStrategy(null);
         }
-        dropUnusedAlgorithm(currentRuleConfig);
+        UnusedAlgorithmFinder.find(currentRuleConfig).forEach(each -> currentRuleConfig.getShardingAlgorithms().remove(each));
         return currentRuleConfig.getTables().isEmpty() && currentRuleConfig.getAutoTables().isEmpty() && currentRuleConfig.getBroadcastTables().isEmpty()
                 && null == currentRuleConfig.getDefaultDatabaseShardingStrategy() && null == currentRuleConfig.getDefaultTableShardingStrategy();
     }
diff --git a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleStatementUpdater.java b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleStatementUpdater.java
index 7bd18bb1d5e..a389f4b20fb 100644
--- a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleStatementUpdater.java
+++ b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleStatementUpdater.java
@@ -38,7 +38,7 @@ import java.util.stream.Collectors;
 /**
  * Drop sharding table rule statement updater.
  */
-public final class DropShardingTableRuleStatementUpdater extends AbstractDropShardingRuleUpdater implements RuleDefinitionDropUpdater<DropShardingTableRuleStatement, ShardingRuleConfiguration> {
+public final class DropShardingTableRuleStatementUpdater implements RuleDefinitionDropUpdater<DropShardingTableRuleStatement, ShardingRuleConfiguration> {
     
     @Override
     public void checkSQLStatement(final ShardingSphereDatabase database, final DropShardingTableRuleStatement sqlStatement, final ShardingRuleConfiguration currentRuleConfig) {
@@ -109,7 +109,7 @@ public final class DropShardingTableRuleStatementUpdater extends AbstractDropSha
     public boolean updateCurrentRuleConfiguration(final DropShardingTableRuleStatement sqlStatement, final ShardingRuleConfiguration currentRuleConfig) {
         Collection<String> toBeDroppedShardingTableNames = getToBeDroppedShardingTableNames(sqlStatement);
         toBeDroppedShardingTableNames.forEach(each -> dropShardingTable(currentRuleConfig, each));
-        dropUnusedAlgorithm(currentRuleConfig);
+        UnusedAlgorithmFinder.find(currentRuleConfig).forEach(each -> currentRuleConfig.getShardingAlgorithms().remove(each));
         dropUnusedKeyGenerator(currentRuleConfig);
         dropUnusedAuditor(currentRuleConfig);
         return currentRuleConfig.getTables().isEmpty() && currentRuleConfig.getAutoTables().isEmpty() && currentRuleConfig.getBroadcastTables().isEmpty()
diff --git a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AbstractDropShardingRuleUpdater.java b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/UnusedAlgorithmFinder.java
similarity index 53%
rename from features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AbstractDropShardingRuleUpdater.java
rename to features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/UnusedAlgorithmFinder.java
index e26e080eab9..22473344936 100644
--- a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AbstractDropShardingRuleUpdater.java
+++ b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/UnusedAlgorithmFinder.java
@@ -17,6 +17,8 @@
 
 package org.apache.shardingsphere.sharding.distsql.handler.update;
 
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingStrategyConfiguration;
 
@@ -26,31 +28,32 @@ import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
- * Abstract drop sharding table rule updater.
+ * Unused algorithm finder.
  */
-public abstract class AbstractDropShardingRuleUpdater {
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class UnusedAlgorithmFinder {
     
     /**
-     * Drop unused algorithm.
+     * Find unused algorithms.
      * 
-     * @param currentRuleConfig current sharding rule configuration
+     * @param ruleConfig sharding rule configuration
+     * @return found unused algorithms
      */
-    public void dropUnusedAlgorithm(final ShardingRuleConfiguration currentRuleConfig) {
-        Collection<String> inUsedAlgorithms = currentRuleConfig.getTables().stream().map(each -> Arrays.asList(each.getTableShardingStrategy(), each.getDatabaseShardingStrategy()))
+    public static Collection<String> find(final ShardingRuleConfiguration ruleConfig) {
+        Collection<String> inUsedAlgorithms = ruleConfig.getTables().stream().map(each -> Arrays.asList(each.getTableShardingStrategy(), each.getDatabaseShardingStrategy()))
                 .flatMap(Collection::stream).filter(Objects::nonNull).map(ShardingStrategyConfiguration::getShardingAlgorithmName).collect(Collectors.toSet());
-        inUsedAlgorithms.addAll(currentRuleConfig.getTables().stream().filter(each -> Objects.nonNull(each.getDatabaseShardingStrategy()))
+        inUsedAlgorithms.addAll(ruleConfig.getTables().stream().filter(each -> Objects.nonNull(each.getDatabaseShardingStrategy()))
                 .map(each -> each.getDatabaseShardingStrategy().getShardingAlgorithmName()).collect(Collectors.toSet()));
-        inUsedAlgorithms.addAll(currentRuleConfig.getTables().stream().filter(each -> Objects.nonNull(each.getTableShardingStrategy()))
+        inUsedAlgorithms.addAll(ruleConfig.getTables().stream().filter(each -> Objects.nonNull(each.getTableShardingStrategy()))
                 .map(each -> each.getTableShardingStrategy().getShardingAlgorithmName()).collect(Collectors.toSet()));
-        inUsedAlgorithms.addAll(currentRuleConfig.getAutoTables().stream().filter(each -> Objects.nonNull(each.getShardingStrategy()))
+        inUsedAlgorithms.addAll(ruleConfig.getAutoTables().stream().filter(each -> Objects.nonNull(each.getShardingStrategy()))
                 .map(each -> each.getShardingStrategy().getShardingAlgorithmName()).collect(Collectors.toSet()));
-        if (null != currentRuleConfig.getDefaultDatabaseShardingStrategy()) {
-            inUsedAlgorithms.add(currentRuleConfig.getDefaultDatabaseShardingStrategy().getShardingAlgorithmName());
+        if (null != ruleConfig.getDefaultDatabaseShardingStrategy()) {
+            inUsedAlgorithms.add(ruleConfig.getDefaultDatabaseShardingStrategy().getShardingAlgorithmName());
         }
-        if (null != currentRuleConfig.getDefaultTableShardingStrategy()) {
-            inUsedAlgorithms.add(currentRuleConfig.getDefaultTableShardingStrategy().getShardingAlgorithmName());
+        if (null != ruleConfig.getDefaultTableShardingStrategy()) {
+            inUsedAlgorithms.add(ruleConfig.getDefaultTableShardingStrategy().getShardingAlgorithmName());
         }
-        Collection<String> unusedAlgorithms = currentRuleConfig.getShardingAlgorithms().keySet().stream().filter(each -> !inUsedAlgorithms.contains(each)).collect(Collectors.toSet());
-        unusedAlgorithms.forEach(each -> currentRuleConfig.getShardingAlgorithms().remove(each));
+        return ruleConfig.getShardingAlgorithms().keySet().stream().filter(each -> !inUsedAlgorithms.contains(each)).collect(Collectors.toSet());
     }
 }