This is an automated email from the ASF dual-hosted git repository.

menghaoran 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 1bc7921  Remove databaseType parameter for GlobalRuleBuilder (#10010)
1bc7921 is described below

commit 1bc79218770c21d211ef04f3e0280df73a6cb657
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Apr 9 17:57:58 2021 +0800

    Remove databaseType parameter for GlobalRuleBuilder (#10010)
    
    * Refactor StoragePrivilegeMerger
    
    * Refactor StoragePrivilegeMerger
    
    * remove databaseType parameter for GlobalRuleBuilder
---
 .../storage/impl/StoragePrivilegeMerger.java       |  7 +++---
 .../rule/builder/AuthorityRuleBuilder.java         | 28 ++++++++++++++++++++--
 .../infra/rule/builder/GlobalRuleBuilder.java      |  4 +---
 .../rule/builder/ShardingSphereRulesBuilder.java   | 26 +-------------------
 4 files changed, 31 insertions(+), 34 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-authority/shardingsphere-authority-common/src/main/java/org/apache/shardingsphere/authority/loader/storage/impl/StoragePrivilegeMerger.java
 
b/shardingsphere-features/shardingsphere-authority/shardingsphere-authority-common/src/main/java/org/apache/shardingsphere/authority/loader/storage/impl/StoragePrivilegeMerger.java
index 4f0a8c3..3ca8976 100644
--- 
a/shardingsphere-features/shardingsphere-authority/shardingsphere-authority-common/src/main/java/org/apache/shardingsphere/authority/loader/storage/impl/StoragePrivilegeMerger.java
+++ 
b/shardingsphere-features/shardingsphere-authority/shardingsphere-authority-common/src/main/java/org/apache/shardingsphere/authority/loader/storage/impl/StoragePrivilegeMerger.java
@@ -55,8 +55,7 @@ public final class StoragePrivilegeMerger {
         return result;
     }
     
-    private static ShardingSpherePrivileges merge(final 
Collection<ShardingSpherePrivileges> privileges, final String schemaName,
-                                                 final 
Collection<ShardingSphereRule> rules) {
+    private static ShardingSpherePrivileges merge(final 
Collection<ShardingSpherePrivileges> privileges, final String schemaName, final 
Collection<ShardingSphereRule> rules) {
         return privileges.isEmpty() ? new ShardingSpherePrivileges() : 
getMergedPrivileges(privileges.iterator().next(), schemaName, rules);
     }
     
@@ -69,7 +68,7 @@ public final class StoragePrivilegeMerger {
     }
     
     private static Map<String, SchemaPrivileges> 
getMergedSchemaPrivileges(final ShardingSpherePrivileges privilege, final 
String schemaName, final Collection<ShardingSphereRule> rules) {
-        Map<String, SchemaPrivileges> result = new HashMap<>();
+        Map<String, SchemaPrivileges> result = new 
HashMap<>(privilege.getDatabasePrivileges().getSpecificPrivileges().size(), 1);
         for (Entry<String, SchemaPrivileges> entry : 
privilege.getDatabasePrivileges().getSpecificPrivileges().entrySet()) {
             if (!result.containsKey(schemaName)) {
                 SchemaPrivileges schemaPrivileges = new 
SchemaPrivileges(schemaName);
@@ -82,7 +81,7 @@ public final class StoragePrivilegeMerger {
     }
     
     private static Map<String, TablePrivileges> getMergedTablePrivileges(final 
SchemaPrivileges privilege, final Collection<ShardingSphereRule> rules) {
-        Map<String, TablePrivileges> result = new HashMap<>();
+        Map<String, TablePrivileges> result = new 
HashMap<>(privilege.getSpecificPrivileges().size(), 1);
         for (Entry<String, TablePrivileges> entry : 
privilege.getSpecificPrivileges().entrySet()) {
             Optional<String> logicalTable = getLogicalTable(entry, rules);
             if (logicalTable.isPresent() && 
!result.containsKey(logicalTable.get())) {
diff --git 
a/shardingsphere-features/shardingsphere-authority/shardingsphere-authority-common/src/main/java/org/apache/shardingsphere/authority/rule/builder/AuthorityRuleBuilder.java
 
b/shardingsphere-features/shardingsphere-authority/shardingsphere-authority-common/src/main/java/org/apache/shardingsphere/authority/rule/builder/AuthorityRuleBuilder.java
index c3a6070..b136d26 100644
--- 
a/shardingsphere-features/shardingsphere-authority/shardingsphere-authority-common/src/main/java/org/apache/shardingsphere/authority/rule/builder/AuthorityRuleBuilder.java
+++ 
b/shardingsphere-features/shardingsphere-authority/shardingsphere-authority-common/src/main/java/org/apache/shardingsphere/authority/rule/builder/AuthorityRuleBuilder.java
@@ -17,14 +17,20 @@
 
 package org.apache.shardingsphere.authority.rule.builder;
 
+import com.google.common.base.Preconditions;
 import 
org.apache.shardingsphere.authority.api.config.AuthorityRuleConfiguration;
 import org.apache.shardingsphere.authority.constant.AuthorityOrder;
 import org.apache.shardingsphere.authority.rule.AuthorityRule;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
+import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.apache.shardingsphere.infra.rule.builder.GlobalRuleBuilder;
 
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.SQLException;
 import java.util.Collection;
 import java.util.Map;
 
@@ -34,11 +40,29 @@ import java.util.Map;
 public final class AuthorityRuleBuilder implements 
GlobalRuleBuilder<AuthorityRule, AuthorityRuleConfiguration> {
     
     @Override
-    public AuthorityRule build(final Map<String, ShardingSphereMetaData> 
mataDataMap, final DatabaseType databaseType,
-                               final AuthorityRuleConfiguration ruleConfig, 
final Collection<ShardingSphereUser> users) {
+    public AuthorityRule build(final Map<String, ShardingSphereMetaData> 
mataDataMap, final AuthorityRuleConfiguration ruleConfig, final 
Collection<ShardingSphereUser> users) {
+        DatabaseType databaseType = mataDataMap.isEmpty() ? new 
MySQLDatabaseType() : 
getDatabaseType(mataDataMap.values().iterator().next().getResource().getDataSources());
         return new AuthorityRule(ruleConfig, mataDataMap, databaseType, users);
     }
     
+    private static DatabaseType getDatabaseType(final Map<String, DataSource> 
dataSourceMap) {
+        DatabaseType result = null;
+        for (DataSource each : dataSourceMap.values()) {
+            DatabaseType databaseType = getDatabaseType(each);
+            Preconditions.checkState(null == result || result == databaseType, 
String.format("Database type inconsistent with '%s' and '%s'", result, 
databaseType));
+            result = databaseType;
+        }
+        return null == result ? DatabaseTypeRegistry.getDefaultDatabaseType() 
: result;
+    }
+
+    private static DatabaseType getDatabaseType(final DataSource dataSource) {
+        try (Connection connection = dataSource.getConnection()) {
+            return 
DatabaseTypeRegistry.getDatabaseTypeByURL(connection.getMetaData().getURL());
+        } catch (final SQLException ex) {
+            return null;
+        }
+    }
+    
     @Override
     public int getOrder() {
         return AuthorityOrder.ORDER;
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/GlobalRuleBuilder.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/GlobalRuleBuilder.java
index 9ea02ae..6fe891b 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/GlobalRuleBuilder.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/GlobalRuleBuilder.java
@@ -18,7 +18,6 @@
 package org.apache.shardingsphere.infra.rule.builder;
 
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.apache.shardingsphere.infra.rule.scope.GlobalRule;
@@ -39,10 +38,9 @@ public interface GlobalRuleBuilder<R extends GlobalRule, T 
extends RuleConfigura
      * Build global rule.
      *
      * @param mataDataMap mata data map
-     * @param databaseType database type
      * @param ruleConfig rule configuration
      * @param users users
      * @return global rule
      */
-    R build(Map<String, ShardingSphereMetaData> mataDataMap, DatabaseType 
databaseType, T ruleConfig, Collection<ShardingSphereUser> users);
+    R build(Map<String, ShardingSphereMetaData> mataDataMap, T ruleConfig, 
Collection<ShardingSphereUser> users);
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/ShardingSphereRulesBuilder.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/ShardingSphereRulesBuilder.java
index a5dfe4a..bc2470c 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/ShardingSphereRulesBuilder.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/ShardingSphereRulesBuilder.java
@@ -17,13 +17,10 @@
 
 package org.apache.shardingsphere.infra.rule.builder;
 
-import com.google.common.base.Preconditions;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
-import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
@@ -31,8 +28,6 @@ import 
org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
 import org.apache.shardingsphere.infra.spi.ordered.OrderedSPIRegistry;
 
 import javax.sql.DataSource;
-import java.sql.Connection;
-import java.sql.SQLException;
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.Map;
@@ -80,27 +75,8 @@ public final class ShardingSphereRulesBuilder {
         Map<RuleConfiguration, GlobalRuleBuilder> builders = 
OrderedSPIRegistry.getRegisteredServices(globalRuleConfigurations, 
GlobalRuleBuilder.class);
         Collection<ShardingSphereRule> result = new LinkedList<>();
         for (Entry<RuleConfiguration, GlobalRuleBuilder> entry : 
builders.entrySet()) {
-            DatabaseType databaseType = mataDataMap.isEmpty() ? new 
MySQLDatabaseType() : 
getDatabaseType(mataDataMap.values().iterator().next().getResource().getDataSources());
-            result.add(entry.getValue().build(mataDataMap, databaseType, 
entry.getKey(), users));
+            result.add(entry.getValue().build(mataDataMap, entry.getKey(), 
users));
         }
         return result;
     }
-    
-    private static DatabaseType getDatabaseType(final Map<String, DataSource> 
dataSourceMap) {
-        DatabaseType result = null;
-        for (DataSource each : dataSourceMap.values()) {
-            DatabaseType databaseType = getDatabaseType(each);
-            Preconditions.checkState(null == result || result == databaseType, 
String.format("Database type inconsistent with '%s' and '%s'", result, 
databaseType));
-            result = databaseType;
-        }
-        return null == result ? DatabaseTypeRegistry.getDefaultDatabaseType() 
: result;
-    }
-    
-    private static DatabaseType getDatabaseType(final DataSource dataSource) {
-        try (Connection connection = dataSource.getConnection()) {
-            return 
DatabaseTypeRegistry.getDatabaseTypeByURL(connection.getMetaData().getURL());
-        } catch (final SQLException ex) {
-            return null;
-        }
-    }
 }

Reply via email to