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 7319e02  Refactor PrivilegeBuilder (#9739)
7319e02 is described below

commit 7319e025054843419b8bdd871c06d66cc663272f
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Mar 19 07:11:42 2021 +0800

    Refactor PrivilegeBuilder (#9739)
---
 .../metadata/auth/builder/PrivilegeBuilder.java    | 63 +++++++++++-----------
 .../auth/builder/loader/PrivilegeLoader.java       |  6 +--
 .../auth/builder/loader/PrivilegeLoaderEngine.java |  4 +-
 3 files changed, 36 insertions(+), 37 deletions(-)

diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/PrivilegeBuilder.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/PrivilegeBuilder.java
index f467dc3..98c7a0e 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/PrivilegeBuilder.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/PrivilegeBuilder.java
@@ -53,70 +53,69 @@ public final class PrivilegeBuilder {
     /**
      * Build privileges.
      *
-     * @param metaDatas metadatas
+     * @param metaDataList meta data list
      * @param users users
-     * @param props props
+     * @param props configuration properties
      * @return privileges
      */
-    public static Map<ShardingSphereUser, ShardingSpherePrivilege> build(final 
Collection<ShardingSphereMetaData> metaDatas,
+    public static Map<ShardingSphereUser, ShardingSpherePrivilege> build(final 
Collection<ShardingSphereMetaData> metaDataList,
                                                                          final 
Collection<ShardingSphereUser> users, final ConfigurationProperties props) {
-        if (metaDatas.isEmpty()) {
-            return getDefaultShardingSpherePrivileges(users);
+        if (metaDataList.isEmpty()) {
+            return createDefaultPrivileges(users);
         }
-        Optional<PrivilegeLoader> loader = 
PrivilegeLoaderEngine.getPrivilegeLoader(metaDatas.iterator().next().getResource().getDatabaseType());
-        return loader.map(privilegeLoader -> build(metaDatas, users, props, 
privilegeLoader)).orElseGet(() -> getDefaultShardingSpherePrivileges(users));
+        Optional<PrivilegeLoader> loader = 
PrivilegeLoaderEngine.findPrivilegeLoader(metaDataList.iterator().next().getResource().getDatabaseType());
+        return loader.map(optional -> build(metaDataList, users, props, 
optional)).orElseGet(() -> createDefaultPrivileges(users));
     }
     
-    private static Map<ShardingSphereUser, ShardingSpherePrivilege> 
build(final Collection<ShardingSphereMetaData> metaDatas,
+    private static Map<ShardingSphereUser, ShardingSpherePrivilege> 
build(final Collection<ShardingSphereMetaData> metaDataList,
                                                                           
final Collection<ShardingSphereUser> users, final ConfigurationProperties 
props, final PrivilegeLoader loader) {
         Map<ShardingSphereUser, ShardingSpherePrivilege> result = new 
LinkedHashMap<>();
-        for (ShardingSphereMetaData each : metaDatas) {
-            result.putAll(build0(each, users, loader, props));
+        for (ShardingSphereMetaData each : metaDataList) {
+            result.putAll(build(each, users, props, loader));
         }
         return result;
     }
     
-    private static Map<ShardingSphereUser, ShardingSpherePrivilege> 
getDefaultShardingSpherePrivileges(final Collection<ShardingSphereUser> users) {
-        Map<ShardingSphereUser, ShardingSpherePrivilege> result = new 
LinkedHashMap<>();
-        ShardingSpherePrivilege privilege = new ShardingSpherePrivilege();
-        privilege.setSuperPrivilege();
-        users.forEach(each -> result.put(each, privilege));
-        return result;
-    }
-    
-    private static Map<ShardingSphereUser, ShardingSpherePrivilege> 
build0(final ShardingSphereMetaData metaData, final 
Collection<ShardingSphereUser> users,
-                                                                               
 final PrivilegeLoader loader, final ConfigurationProperties props) {
-        Map<ShardingSphereUser, Collection<ShardingSpherePrivilege>> result =
-                build0(metaData.getResource().getDataSources(), users, loader, 
props.getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY));
+    private static Map<ShardingSphereUser, ShardingSpherePrivilege> 
build(final ShardingSphereMetaData metaData, final 
Collection<ShardingSphereUser> users,
+                                                                          
final ConfigurationProperties props, final PrivilegeLoader loader) {
+        int maxConnectionsSizePerQuery = 
props.getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
+        Map<ShardingSphereUser, Collection<ShardingSpherePrivilege>> result = 
build(metaData.getResource().getDataSources().values(), users, loader, 
maxConnectionsSizePerQuery);
         return PrivilegeMerger.merge(result, metaData.getName(), 
metaData.getRuleMetaData().getRules());
     }
     
-    private static Map<ShardingSphereUser, 
Collection<ShardingSpherePrivilege>> build0(final Map<String, DataSource> 
dataSources, final Collection<ShardingSphereUser> users,
-                                                                   final 
PrivilegeLoader loader, final int maxConnectionsSizePerQuery) {
-        Map<ShardingSphereUser, Collection<ShardingSpherePrivilege>> result = 
new LinkedHashMap<>();
+    private static Map<ShardingSphereUser, 
Collection<ShardingSpherePrivilege>> build(final Collection<DataSource> 
dataSources, final Collection<ShardingSphereUser> users,
+                                                                               
       final PrivilegeLoader loader, final int maxConnectionsSizePerQuery) {
+        Map<ShardingSphereUser, Collection<ShardingSpherePrivilege>> result = 
new LinkedHashMap<>(users.size(), 1);
         for (ShardingSphereUser each : users) {
-            Collection<ShardingSpherePrivilege> privileges = 
parallelLoadPrivileges(dataSources, each, loader, maxConnectionsSizePerQuery);
-            result.put(each, privileges);
+            result.put(each, load(dataSources, each, loader, 
maxConnectionsSizePerQuery));
         }
         return result;
     }
     
-    private static Collection<ShardingSpherePrivilege> 
parallelLoadPrivileges(final Map<String, DataSource> dataSources,
-                                                                       final 
ShardingSphereUser user, final PrivilegeLoader loader, final int 
maxConnectionsSizePerQuery) {
+    private static Collection<ShardingSpherePrivilege> load(final 
Collection<DataSource> dataSources,
+                                                            final 
ShardingSphereUser user, final PrivilegeLoader loader, final int 
maxConnectionsSizePerQuery) {
         Collection<ShardingSpherePrivilege> result = new 
LinkedHashSet<>(dataSources.size(), 1);
-        Collection<Future<Optional<ShardingSpherePrivilege>>> futures = new 
LinkedHashSet<>(dataSources.size(), 1);
         ExecutorService executorService = 
Executors.newFixedThreadPool(Math.min(CPU_CORES * 2, dataSources.size() * 
maxConnectionsSizePerQuery));
-        for (DataSource each : dataSources.values()) {
+        Collection<Future<Optional<ShardingSpherePrivilege>>> futures = new 
LinkedHashSet<>(dataSources.size(), 1);
+        for (DataSource each : dataSources) {
             futures.add(executorService.submit(() -> loader.load(user, each)));
         }
         futures.forEach(each -> {
             try {
                 each.get(FUTURE_GET_TIME_OUT_SECOND, 
TimeUnit.SECONDS).ifPresent(result::add);
             } catch (final InterruptedException | ExecutionException | 
TimeoutException ex) {
-                throw new IllegalStateException(String.format("Error while 
fetching privilege with %s", each), ex);
+                throw new IllegalStateException(String.format("Error while 
loading privilege with %s", each), ex);
             }
         });
         executorService.shutdownNow();
         return result;
     }
+    
+    private static Map<ShardingSphereUser, ShardingSpherePrivilege> 
createDefaultPrivileges(final Collection<ShardingSphereUser> users) {
+        Map<ShardingSphereUser, ShardingSpherePrivilege> result = new 
LinkedHashMap<>(users.size(), 1);
+        ShardingSpherePrivilege privilege = new ShardingSpherePrivilege();
+        privilege.setSuperPrivilege();
+        users.forEach(each -> result.put(each, privilege));
+        return result;
+    }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/loader/PrivilegeLoader.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/loader/PrivilegeLoader.java
index 49015b3..63f4a77 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/loader/PrivilegeLoader.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/loader/PrivilegeLoader.java
@@ -30,12 +30,12 @@ import java.util.Optional;
 public interface PrivilegeLoader {
     
     /**
-     * Load.
+     * Load privilege.
      *
      * @param user user
      * @param dataSource data source
-     * @return sharding sphere privilege
-     * @throws SQLException sql exception
+     * @return ShardingSphere privilege
+     * @throws SQLException SQL exception
      */
     Optional<ShardingSpherePrivilege> load(ShardingSphereUser user, DataSource 
dataSource) throws SQLException;
     
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/loader/PrivilegeLoaderEngine.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/loader/PrivilegeLoaderEngine.java
index 2278af6..809e544 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/loader/PrivilegeLoaderEngine.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/loader/PrivilegeLoaderEngine.java
@@ -35,12 +35,12 @@ public final class PrivilegeLoaderEngine {
     }
     
     /**
-     * Get privilege loader.
+     * Find privilege loader.
      *
      * @param databaseType database type
      * @return privilege loader
      */
-    public static Optional<PrivilegeLoader> getPrivilegeLoader(final 
DatabaseType databaseType) {
+    public static Optional<PrivilegeLoader> findPrivilegeLoader(final 
DatabaseType databaseType) {
         for (PrivilegeLoader each : 
ShardingSphereServiceLoader.newServiceInstances(PrivilegeLoader.class)) {
             if (each.getDatabaseType().equals(databaseType.getName())) {
                 return Optional.of(each);

Reply via email to