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