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 853a34e Add Authentication.init() (#9835)
853a34e is described below
commit 853a34ec745687bdd34b38ed7d383fb0665494da
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Mar 26 16:36:58 2021 +0800
Add Authentication.init() (#9835)
* Add Authentication.init()
* Refactor Authentication.init()
* Remove useless constructor
---
.../metadata/GovernanceMetaDataContexts.java | 23 ++++++++++++----------
.../infra/metadata/auth/Authentication.java | 9 +++++++++
.../auth/builtin/DefaultAuthentication.java | 8 ++++----
.../yaml/swapper/UserRuleYamlSwapperTest.java | 3 +--
.../context/metadata/MetaDataContextsBuilder.java | 2 +-
.../impl/GovernanceBootstrapInitializerTest.java | 8 ++++++--
.../impl/StandardBootstrapInitializerTest.java | 17 +++++++++-------
.../swapper/YamlProxyConfigurationSwapperTest.java | 4 +++-
8 files changed, 47 insertions(+), 27 deletions(-)
diff --git
a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
index 890af4a..50953d7 100644
---
a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
+++
b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
@@ -211,11 +211,8 @@ public final class GovernanceMetaDataContexts implements
MetaDataContexts {
*/
@Subscribe
public synchronized void renew(final UserRuleChangedEvent event) {
- Collection<ShardingSphereUser> users = event.getUsers();
- DefaultAuthentication authentication = new
DefaultAuthentication(getNewUsers(users));
- authentication.getAuthentication().putAll(getModifiedUsers(users));
- metaDataContexts = new
StandardMetaDataContexts(metaDataContexts.getMetaDataMap(),
metaDataContexts.getExecutorEngine(), authentication,
metaDataContexts.getProps());
- reloadPrivilege(users);
+ metaDataContexts = new
StandardMetaDataContexts(metaDataContexts.getMetaDataMap(),
metaDataContexts.getExecutorEngine(), createAuthentication(event.getUsers()),
metaDataContexts.getProps());
+ reloadPrivilege(event.getUsers());
}
/**
@@ -311,6 +308,12 @@ public final class GovernanceMetaDataContexts implements
MetaDataContexts {
}
}
+ private DefaultAuthentication createAuthentication(final
Collection<ShardingSphereUser> users) {
+ DefaultAuthentication result = new DefaultAuthentication();
+ result.init(getNewUsers(users), getModifiedUsers(users));
+ return result;
+ }
+
private ShardingSphereMetaData buildMetaData(final MetaDataPersistedEvent
event) throws SQLException {
String schemaName = event.getSchemaName();
if
(!governanceFacade.getRegistryCenter().hasDataSourceConfiguration(schemaName)) {
@@ -416,12 +419,12 @@ public final class GovernanceMetaDataContexts implements
MetaDataContexts {
return;
}
Map<ShardingSphereUser, ShardingSpherePrivilege> result =
PrivilegeBuilder.build(metaDataContexts.getMetaDataMap().values(), users,
metaDataContexts.getProps());
- for (Entry<ShardingSphereUser, ShardingSpherePrivilege> each :
result.entrySet()) {
+ for (Entry<ShardingSphereUser, ShardingSpherePrivilege> entry :
result.entrySet()) {
Optional<ShardingSphereUser> user =
metaDataContexts.getAuthentication().getAuthentication().keySet().stream().filter(t
-> t.getGrantee().equals(t.getGrantee())).findFirst();
- if (user.isPresent() && null != result.get(each.getKey())) {
-
metaDataContexts.getAuthentication().getAuthentication().put(user.get(),
each.getValue());
- } else if (!user.isPresent() && null != result.get(each.getKey()))
{
-
metaDataContexts.getAuthentication().getAuthentication().put(each.getKey(),
each.getValue());
+ if (user.isPresent() && null != result.get(entry.getKey())) {
+
metaDataContexts.getAuthentication().getAuthentication().put(user.get(),
entry.getValue());
+ } else if (!user.isPresent() && null !=
result.get(entry.getKey())) {
+
metaDataContexts.getAuthentication().getAuthentication().put(entry.getKey(),
entry.getValue());
}
}
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/Authentication.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/Authentication.java
index a6c496b..f2530ea 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/Authentication.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/Authentication.java
@@ -21,6 +21,7 @@ import
org.apache.shardingsphere.infra.metadata.auth.model.privilege.ShardingSph
import org.apache.shardingsphere.infra.metadata.auth.model.user.Grantee;
import
org.apache.shardingsphere.infra.metadata.auth.model.user.ShardingSphereUser;
+import java.util.Collection;
import java.util.Map;
import java.util.Optional;
@@ -30,6 +31,14 @@ import java.util.Optional;
public interface Authentication {
/**
+ * Initialize authentication.
+ *
+ * @param initializedUsers initialized users
+ * @param loadedPrivileges loaded privileges
+ */
+ void init(Collection<ShardingSphereUser> initializedUsers,
Map<ShardingSphereUser, ShardingSpherePrivilege> loadedPrivileges);
+
+ /**
* Get authentication.
*
* @return Authentication
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builtin/DefaultAuthentication.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builtin/DefaultAuthentication.java
index 4dac150..348a190 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builtin/DefaultAuthentication.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builtin/DefaultAuthentication.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.infra.metadata.auth.builtin;
import lombok.Getter;
-import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.metadata.auth.Authentication;
import
org.apache.shardingsphere.infra.metadata.auth.model.privilege.ShardingSpherePrivilege;
import org.apache.shardingsphere.infra.metadata.auth.model.user.Grantee;
@@ -32,16 +31,17 @@ import java.util.concurrent.ConcurrentHashMap;
/**
* Default authentication.
*/
-@NoArgsConstructor
@Getter
public final class DefaultAuthentication implements Authentication {
private final Map<ShardingSphereUser, ShardingSpherePrivilege>
authentication = new ConcurrentHashMap<>();
- public DefaultAuthentication(final Collection<ShardingSphereUser> users) {
- for (ShardingSphereUser each : users) {
+ @Override
+ public void init(final Collection<ShardingSphereUser> initializedUsers,
final Map<ShardingSphereUser, ShardingSpherePrivilege> loadedPrivileges) {
+ for (ShardingSphereUser each : initializedUsers) {
authentication.put(each, createShardingSpherePrivilege());
}
+ authentication.putAll(loadedPrivileges);
}
private ShardingSpherePrivilege createShardingSpherePrivilege() {
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/auth/builtin/yaml/swapper/UserRuleYamlSwapperTest.java
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/auth/builtin/yaml/swapper/UserRuleYamlSwapperTest.java
index 5f11286..d5cc037 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/auth/builtin/yaml/swapper/UserRuleYamlSwapperTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/auth/builtin/yaml/swapper/UserRuleYamlSwapperTest.java
@@ -28,7 +28,6 @@ import org.junit.Test;
import java.util.Collection;
import java.util.HashMap;
-import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Optional;
@@ -40,7 +39,7 @@ public final class UserRuleYamlSwapperTest {
@Test
public void assertSwapToYaml() {
- DefaultAuthentication authentication = new DefaultAuthentication(new
LinkedHashSet<>(2, 1));
+ DefaultAuthentication authentication = new DefaultAuthentication();
authentication.getAuthentication().put(new ShardingSphereUser("user1",
"pwd1", "127.0.0.1"), new ShardingSpherePrivilege());
authentication.getAuthentication().put(new ShardingSphereUser("user2",
"pwd2", "127.0.0.2"), new ShardingSpherePrivilege());
YamlUserRuleConfiguration actual = new
UserRuleYamlSwapper().swapToYamlConfiguration(authentication.getAuthentication().keySet());
diff --git
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
index a660edd..f8fc4a6 100644
---
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
+++
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
@@ -158,7 +158,7 @@ public final class MetaDataContextsBuilder {
private Authentication buildAuthentication(final
Collection<ShardingSphereUser> users, final Map<String, ShardingSphereMetaData>
metaDataMap) {
DefaultAuthentication result = new DefaultAuthentication();
-
result.getAuthentication().putAll(PrivilegeBuilder.build(metaDataMap.values(),
users, props));
+ result.init(Collections.emptyList(),
PrivilegeBuilder.build(metaDataMap.values(), users, props));
return result;
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializerTest.java
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializerTest.java
index 894f79d..9ff3c02 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializerTest.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializerTest.java
@@ -27,6 +27,7 @@ import
org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
import
org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
import
org.apache.shardingsphere.infra.context.metadata.impl.StandardMetaDataContexts;
+import org.apache.shardingsphere.infra.metadata.auth.Authentication;
import
org.apache.shardingsphere.infra.metadata.auth.builtin.DefaultAuthentication;
import org.apache.shardingsphere.infra.metadata.auth.model.user.Grantee;
import
org.apache.shardingsphere.infra.metadata.auth.model.user.ShardingSphereUser;
@@ -47,6 +48,7 @@ import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Collection;
+import java.util.Collections;
import java.util.Map;
import java.util.Optional;
import java.util.Properties;
@@ -112,7 +114,9 @@ public final class GovernanceBootstrapInitializerTest
extends AbstractBootstrapI
assertNotNull(actual);
assertSchemaDataSources(actual.getSchemaDataSources());
assertSchemaRules(actual.getSchemaRules());
- assertAuthentication(new DefaultAuthentication(actual.getUsers()));
+ Authentication authentication = new DefaultAuthentication();
+ authentication.init(actual.getUsers(), Collections.emptyMap());
+ assertAuthentication(authentication);
assertProps(actual.getProps());
}
@@ -192,7 +196,7 @@ public final class GovernanceBootstrapInitializerTest
extends AbstractBootstrapI
assertThat(props.getProperty("algorithm-expression"),
is(expectedAlgorithmExpr));
}
- private void assertAuthentication(final DefaultAuthentication actual) {
+ private void assertAuthentication(final Authentication actual) {
Optional<ShardingSphereUser> rootUser = actual.findUser(new
Grantee("root", ""));
assertTrue(rootUser.isPresent());
assertThat(rootUser.get().getPassword(), is("root"));
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializerTest.java
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializerTest.java
index 47813db..924258e 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializerTest.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializerTest.java
@@ -17,14 +17,15 @@
package org.apache.shardingsphere.proxy.initializer.impl;
-import org.apache.shardingsphere.infra.metadata.auth.model.user.Grantee;
-import
org.apache.shardingsphere.infra.metadata.auth.builtin.DefaultAuthentication;
-import
org.apache.shardingsphere.infra.metadata.auth.model.user.ShardingSphereUser;
-import
org.apache.shardingsphere.infra.metadata.auth.builtin.yaml.config.YamlUserRuleConfiguration;
-import
org.apache.shardingsphere.infra.metadata.auth.builtin.yaml.config.YamlUserConfiguration;
import org.apache.shardingsphere.infra.config.RuleConfiguration;
import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
+import org.apache.shardingsphere.infra.metadata.auth.Authentication;
+import
org.apache.shardingsphere.infra.metadata.auth.builtin.DefaultAuthentication;
+import
org.apache.shardingsphere.infra.metadata.auth.builtin.yaml.config.YamlUserConfiguration;
+import
org.apache.shardingsphere.infra.metadata.auth.builtin.yaml.config.YamlUserRuleConfiguration;
+import org.apache.shardingsphere.infra.metadata.auth.model.user.Grantee;
+import
org.apache.shardingsphere.infra.metadata.auth.model.user.ShardingSphereUser;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.infra.yaml.config.YamlRuleConfiguration;
import
org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapper;
@@ -110,7 +111,9 @@ public final class StandardBootstrapInitializerTest extends
AbstractBootstrapIni
private void assertProxyConfiguration(final ProxyConfiguration actual) {
assertSchemaDataSources(actual.getSchemaDataSources());
assertSchemaRules(actual.getSchemaRules());
- assertAuthentication(new DefaultAuthentication(actual.getUsers()));
+ Authentication authentication = new DefaultAuthentication();
+ authentication.init(actual.getUsers(), Collections.emptyMap());
+ assertAuthentication(authentication);
assertProps(actual.getProps());
}
@@ -148,7 +151,7 @@ public final class StandardBootstrapInitializerTest extends
AbstractBootstrapIni
assertThat(((FixtureRuleConfiguration) actual).getName(),
is("testRule"));
}
- private void assertAuthentication(final DefaultAuthentication actual) {
+ private void assertAuthentication(final Authentication actual) {
Optional<ShardingSphereUser> rootUser = actual.findUser(new
Grantee("root", ""));
assertTrue(rootUser.isPresent());
assertThat(rootUser.get().getPassword(), is("root"));
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapperTest.java
b/shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapperTest.java
index 40719c1..6c051a5 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapperTest.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapperTest.java
@@ -37,6 +37,7 @@ import
org.apache.shardingsphere.proxy.config.yaml.YamlProxyServerConfiguration;
import org.junit.Test;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
@@ -103,7 +104,8 @@ public final class YamlProxyConfigurationSwapperTest {
}
private void assertAuthentication(final ProxyConfiguration proxyConfig) {
- DefaultAuthentication authentication = new
DefaultAuthentication(proxyConfig.getUsers());
+ DefaultAuthentication authentication = new DefaultAuthentication();
+ authentication.init(proxyConfig.getUsers(), Collections.emptyMap());
assertNotNull(authentication);
Optional<ShardingSphereUser> user = authentication.findUser(new
Grantee("user1", ""));
assertTrue(user.isPresent());