1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.authority.yaml.swapper;
19
20 import com.google.common.base.Preconditions;
21 import com.google.common.base.Strings;
22 import org.apache.shardingsphere.authority.yaml.config.YamlUserConfiguration;
23 import org.apache.shardingsphere.infra.metadata.user.Grantee;
24 import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
25 import org.apache.shardingsphere.infra.util.yaml.swapper.YamlConfigurationSwapper;
26
27
28
29
30 public final class YamlUserSwapper implements YamlConfigurationSwapper<YamlUserConfiguration, ShardingSphereUser> {
31
32 @Override
33 public YamlUserConfiguration swapToYamlConfiguration(final ShardingSphereUser data) {
34 if (null == data) {
35 return null;
36 }
37 YamlUserConfiguration result = new YamlUserConfiguration();
38 result.setUser(data.getGrantee().toString());
39 result.setPassword(data.getPassword());
40 result.setAuthenticationMethodName(data.getAuthenticationMethodName());
41 result.setAdmin(data.isAdmin());
42 return result;
43 }
44
45 @Override
46 public ShardingSphereUser swapToObject(final YamlUserConfiguration yamlConfig) {
47 if (null == yamlConfig) {
48 return null;
49 }
50 Grantee grantee = convertYamlUserToGrantee(yamlConfig.getUser());
51 return new ShardingSphereUser(grantee.getUsername(), yamlConfig.getPassword(), grantee.getHostname(), yamlConfig.getAuthenticationMethodName(), yamlConfig.isAdmin());
52 }
53
54 private Grantee convertYamlUserToGrantee(final String yamlUser) {
55 if (!yamlUser.contains("@")) {
56 return new Grantee(yamlUser, "");
57 }
58 String username = yamlUser.substring(0, yamlUser.indexOf('@'));
59 String hostname = yamlUser.substring(yamlUser.indexOf('@') + 1);
60 Preconditions.checkArgument(!Strings.isNullOrEmpty(username), "user configuration `%s` is invalid, the legal format is `username@hostname`", yamlUser);
61 return new Grantee(username, hostname);
62 }
63 }