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

zhangliang 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 15798536b23 Refactor PrivilegeProvider.build() (#33082)
15798536b23 is described below

commit 15798536b234f3c3fbf539b04aa4a3fa3980721e
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Oct 1 09:53:46 2024 +0800

    Refactor PrivilegeProvider.build() (#33082)
---
 .../apache/shardingsphere/authority/spi/PrivilegeProvider.java    | 5 ++---
 .../org/apache/shardingsphere/authority/rule/AuthorityRule.java   | 3 ++-
 .../authority/fixture/PrivilegeProviderFixture.java               | 5 ++---
 .../provider/database/DatabasePermittedPrivilegeProvider.java     | 8 ++++----
 .../provider/database/DatabasePermittedPrivilegeProviderTest.java | 6 ++----
 .../authority/provider/simple/AllPermittedPrivilegeProvider.java  | 5 ++---
 .../provider/simple/AllPermittedPrivilegeProviderTest.java        | 3 +--
 7 files changed, 15 insertions(+), 20 deletions(-)

diff --git 
a/kernel/authority/api/src/main/java/org/apache/shardingsphere/authority/spi/PrivilegeProvider.java
 
b/kernel/authority/api/src/main/java/org/apache/shardingsphere/authority/spi/PrivilegeProvider.java
index ccb5839d229..8b4309df5b2 100644
--- 
a/kernel/authority/api/src/main/java/org/apache/shardingsphere/authority/spi/PrivilegeProvider.java
+++ 
b/kernel/authority/api/src/main/java/org/apache/shardingsphere/authority/spi/PrivilegeProvider.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.authority.spi;
 import org.apache.shardingsphere.authority.config.AuthorityRuleConfiguration;
 import org.apache.shardingsphere.authority.model.ShardingSpherePrivileges;
 import org.apache.shardingsphere.infra.metadata.user.Grantee;
-import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;
 
@@ -37,8 +36,8 @@ public interface PrivilegeProvider extends TypedSPI {
      * Build grantee and privileges map.
      *
      * @param ruleConfig authority rule configuration
-     * @param users users
+     * @param grantees grantees
      * @return grantee and privileges map
      */
-    Map<Grantee, ShardingSpherePrivileges> build(AuthorityRuleConfiguration 
ruleConfig, Collection<ShardingSphereUser> users);
+    Map<Grantee, ShardingSpherePrivileges> build(AuthorityRuleConfiguration 
ruleConfig, Collection<Grantee> grantees);
 }
diff --git 
a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/rule/AuthorityRule.java
 
b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/rule/AuthorityRule.java
index 12e149ca6be..c84933702b8 100644
--- 
a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/rule/AuthorityRule.java
+++ 
b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/rule/AuthorityRule.java
@@ -49,7 +49,8 @@ public final class AuthorityRule implements GlobalRule {
         configuration = ruleConfig;
         users = ruleConfig.getUsers().stream()
                 .map(each -> new ShardingSphereUser(each.getUsername(), 
each.getPassword(), each.getHostname(), each.getAuthenticationMethodName(), 
each.isAdmin())).collect(Collectors.toList());
-        privileges = TypedSPILoader.getService(PrivilegeProvider.class, 
ruleConfig.getPrivilegeProvider().getType(), 
ruleConfig.getPrivilegeProvider().getProps()).build(ruleConfig, users);
+        privileges = TypedSPILoader.getService(PrivilegeProvider.class, 
ruleConfig.getPrivilegeProvider().getType(), 
ruleConfig.getPrivilegeProvider().getProps()).build(ruleConfig,
+                
users.stream().map(ShardingSphereUser::getGrantee).collect(Collectors.toList()));
     }
     
     /**
diff --git 
a/kernel/authority/core/src/test/java/org/apache/shardingsphere/authority/fixture/PrivilegeProviderFixture.java
 
b/kernel/authority/core/src/test/java/org/apache/shardingsphere/authority/fixture/PrivilegeProviderFixture.java
index 679f4d2d134..12aa04bb1ff 100644
--- 
a/kernel/authority/core/src/test/java/org/apache/shardingsphere/authority/fixture/PrivilegeProviderFixture.java
+++ 
b/kernel/authority/core/src/test/java/org/apache/shardingsphere/authority/fixture/PrivilegeProviderFixture.java
@@ -21,7 +21,6 @@ import 
org.apache.shardingsphere.authority.config.AuthorityRuleConfiguration;
 import org.apache.shardingsphere.authority.model.ShardingSpherePrivileges;
 import org.apache.shardingsphere.authority.spi.PrivilegeProvider;
 import org.apache.shardingsphere.infra.metadata.user.Grantee;
-import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.mockito.Answers;
 
 import java.util.Collection;
@@ -34,9 +33,9 @@ import static org.mockito.Mockito.withSettings;
 public final class PrivilegeProviderFixture implements PrivilegeProvider {
     
     @Override
-    public Map<Grantee, ShardingSpherePrivileges> build(final 
AuthorityRuleConfiguration ruleConfig, final Collection<ShardingSphereUser> 
users) {
+    public Map<Grantee, ShardingSpherePrivileges> build(final 
AuthorityRuleConfiguration ruleConfig, final Collection<Grantee> grantees) {
         ShardingSpherePrivileges privileges = mockPrivileges();
-        return 
users.stream().collect(Collectors.toMap(ShardingSphereUser::getGrantee, each -> 
privileges));
+        return grantees.stream().collect(Collectors.toMap(each -> each, each 
-> privileges));
     }
     
     private ShardingSpherePrivileges mockPrivileges() {
diff --git 
a/kernel/authority/provider/database/src/main/java/org/apache/shardingsphere/authority/provider/database/DatabasePermittedPrivilegeProvider.java
 
b/kernel/authority/provider/database/src/main/java/org/apache/shardingsphere/authority/provider/database/DatabasePermittedPrivilegeProvider.java
index 7d9209d2509..96e9a4c777f 100644
--- 
a/kernel/authority/provider/database/src/main/java/org/apache/shardingsphere/authority/provider/database/DatabasePermittedPrivilegeProvider.java
+++ 
b/kernel/authority/provider/database/src/main/java/org/apache/shardingsphere/authority/provider/database/DatabasePermittedPrivilegeProvider.java
@@ -55,9 +55,9 @@ public final class DatabasePermittedPrivilegeProvider 
implements PrivilegeProvid
     }
     
     @Override
-    public Map<Grantee, ShardingSpherePrivileges> build(final 
AuthorityRuleConfiguration ruleConfig, final Collection<ShardingSphereUser> 
users) {
+    public Map<Grantee, ShardingSpherePrivileges> build(final 
AuthorityRuleConfiguration ruleConfig, final Collection<Grantee> grantees) {
         Map<ShardingSphereUser, Collection<String>> userDatabasesMappings = 
convertToUserDatabasesMappings();
-        return 
users.stream().collect(Collectors.toMap(ShardingSphereUser::getGrantee, each -> 
new DatabasePermittedPrivileges(getUserDatabases(each, 
userDatabasesMappings))));
+        return grantees.stream().collect(Collectors.toMap(each -> each, each 
-> new DatabasePermittedPrivileges(getUserDatabases(each, 
userDatabasesMappings))));
     }
     
     private Map<ShardingSphereUser, Collection<String>> 
convertToUserDatabasesMappings() {
@@ -73,8 +73,8 @@ public final class DatabasePermittedPrivilegeProvider 
implements PrivilegeProvid
         return result;
     }
     
-    private Collection<String> getUserDatabases(final ShardingSphereUser user, 
final Map<ShardingSphereUser, Collection<String>> userDatabasesMappings) {
-        return userDatabasesMappings.entrySet().stream().filter(entry -> 
entry.getKey().getGrantee().accept(user.getGrantee())).flatMap(entry -> 
entry.getValue().stream()).collect(Collectors.toSet());
+    private Collection<String> getUserDatabases(final Grantee grantee, final 
Map<ShardingSphereUser, Collection<String>> userDatabasesMappings) {
+        return userDatabasesMappings.entrySet().stream().filter(entry -> 
entry.getKey().getGrantee().accept(grantee)).flatMap(entry -> 
entry.getValue().stream()).collect(Collectors.toSet());
     }
     
     @Override
diff --git 
a/kernel/authority/provider/database/src/test/java/org/apache/shardingsphere/authority/provider/database/DatabasePermittedPrivilegeProviderTest.java
 
b/kernel/authority/provider/database/src/test/java/org/apache/shardingsphere/authority/provider/database/DatabasePermittedPrivilegeProviderTest.java
index 2e718ee727e..148ecb9d4f1 100644
--- 
a/kernel/authority/provider/database/src/test/java/org/apache/shardingsphere/authority/provider/database/DatabasePermittedPrivilegeProviderTest.java
+++ 
b/kernel/authority/provider/database/src/test/java/org/apache/shardingsphere/authority/provider/database/DatabasePermittedPrivilegeProviderTest.java
@@ -23,7 +23,6 @@ import 
org.apache.shardingsphere.authority.model.ShardingSpherePrivileges;
 import org.apache.shardingsphere.authority.spi.PrivilegeProvider;
 import 
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
 import org.apache.shardingsphere.infra.metadata.user.Grantee;
-import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.test.util.PropertiesBuilder;
 import org.apache.shardingsphere.test.util.PropertiesBuilder.Property;
@@ -55,9 +54,8 @@ class DatabasePermittedPrivilegeProviderTest {
                 new UserConfiguration("user1", "", "%", null, false),
                 new UserConfiguration("user3", "", "%", null, false));
         AuthorityRuleConfiguration ruleConfig = new 
AuthorityRuleConfiguration(userConfigs, mock(AlgorithmConfiguration.class), 
Collections.emptyMap(), null);
-        Collection<ShardingSphereUser> users = userConfigs.stream()
-                .map(each -> new ShardingSphereUser(each.getUsername(), 
each.getPassword(), each.getHostname(), each.getAuthenticationMethodName(), 
each.isAdmin())).collect(Collectors.toList());
-        Map<Grantee, ShardingSpherePrivileges> actual = 
provider.build(ruleConfig, users);
+        Collection<Grantee> grantees = userConfigs.stream().map(each -> new 
Grantee(each.getUsername(), each.getHostname())).collect(Collectors.toList());
+        Map<Grantee, ShardingSpherePrivileges> actual = 
provider.build(ruleConfig, grantees);
         assertThat(actual.size(), is(4));
         assertTrue(actual.get(new Grantee("root", 
"localhost")).hasPrivileges("sys_db"));
         assertTrue(actual.get(new Grantee("user1", 
"127.0.0.1")).hasPrivileges("sys_db"));
diff --git 
a/kernel/authority/provider/simple/src/main/java/org/apache/shardingsphere/authority/provider/simple/AllPermittedPrivilegeProvider.java
 
b/kernel/authority/provider/simple/src/main/java/org/apache/shardingsphere/authority/provider/simple/AllPermittedPrivilegeProvider.java
index 0b9399e8aa9..8ebf64cd1b8 100644
--- 
a/kernel/authority/provider/simple/src/main/java/org/apache/shardingsphere/authority/provider/simple/AllPermittedPrivilegeProvider.java
+++ 
b/kernel/authority/provider/simple/src/main/java/org/apache/shardingsphere/authority/provider/simple/AllPermittedPrivilegeProvider.java
@@ -21,7 +21,6 @@ import 
org.apache.shardingsphere.authority.config.AuthorityRuleConfiguration;
 import org.apache.shardingsphere.authority.model.ShardingSpherePrivileges;
 import org.apache.shardingsphere.authority.spi.PrivilegeProvider;
 import org.apache.shardingsphere.infra.metadata.user.Grantee;
-import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -34,8 +33,8 @@ import java.util.stream.Collectors;
 public final class AllPermittedPrivilegeProvider implements PrivilegeProvider {
     
     @Override
-    public Map<Grantee, ShardingSpherePrivileges> build(final 
AuthorityRuleConfiguration ruleConfig, final Collection<ShardingSphereUser> 
users) {
-        return 
users.stream().collect(Collectors.toMap(ShardingSphereUser::getGrantee, each -> 
new AllPermittedPrivileges()));
+    public Map<Grantee, ShardingSpherePrivileges> build(final 
AuthorityRuleConfiguration ruleConfig, final Collection<Grantee> grantees) {
+        return grantees.stream().collect(Collectors.toMap(each -> each, each 
-> new AllPermittedPrivileges()));
     }
     
     @Override
diff --git 
a/kernel/authority/provider/simple/src/test/java/org/apache/shardingsphere/authority/provider/simple/AllPermittedPrivilegeProviderTest.java
 
b/kernel/authority/provider/simple/src/test/java/org/apache/shardingsphere/authority/provider/simple/AllPermittedPrivilegeProviderTest.java
index cec4796cf03..a9b04495e4d 100644
--- 
a/kernel/authority/provider/simple/src/test/java/org/apache/shardingsphere/authority/provider/simple/AllPermittedPrivilegeProviderTest.java
+++ 
b/kernel/authority/provider/simple/src/test/java/org/apache/shardingsphere/authority/provider/simple/AllPermittedPrivilegeProviderTest.java
@@ -23,7 +23,6 @@ import 
org.apache.shardingsphere.authority.model.ShardingSpherePrivileges;
 import org.apache.shardingsphere.authority.spi.PrivilegeProvider;
 import 
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
 import org.apache.shardingsphere.infra.metadata.user.Grantee;
-import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.junit.jupiter.api.extension.ExtensionContext;
 import org.junit.jupiter.params.ParameterizedTest;
@@ -47,7 +46,7 @@ class AllPermittedPrivilegeProviderTest {
     void assertBuild(final String name, final PrivilegeProvider provider) {
         AuthorityRuleConfiguration ruleConfig = new AuthorityRuleConfiguration(
                 Collections.singleton(new UserConfiguration("root", "", "%", 
null, false)), mock(AlgorithmConfiguration.class), Collections.emptyMap(), 
null);
-        Map<Grantee, ShardingSpherePrivileges> actual = 
provider.build(ruleConfig, Collections.singleton(new 
ShardingSphereUser("root@%")));
+        Map<Grantee, ShardingSpherePrivileges> actual = 
provider.build(ruleConfig, Collections.singleton(new Grantee("root@%")));
         assertThat(actual.size(), is(1));
         assertThat(actual.get(new Grantee("root", "%")), 
instanceOf(AllPermittedPrivileges.class));
     }

Reply via email to