You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2021/04/06 05:45:50 UTC
[shardingsphere] branch master updated: Fix compile error (#9944)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 1918a93 Fix compile error (#9944)
1918a93 is described below
commit 1918a93fc0dc6a66142c751bc968fae0419a4676
Author: Liang Zhang <te...@163.com>
AuthorDate: Tue Apr 6 13:45:02 2021 +0800
Fix compile error (#9944)
---
.../loader/dialect/PostgreSQLPrivilegeLoader.java | 51 +++++++++++-----------
.../dialect/PostgreSQLPrivilegeLoaderTest.java | 32 +++++++-------
.../user/yaml/swapper/UsersYamlSwapperTest.java | 11 +++--
3 files changed, 46 insertions(+), 48 deletions(-)
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/loader/dialect/PostgreSQLPrivilegeLoader.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/loader/dialect/PostgreSQLPrivilegeLoader.java
index f56f158..3d41491 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/loader/dialect/PostgreSQLPrivilegeLoader.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/loader/dialect/PostgreSQLPrivilegeLoader.java
@@ -22,8 +22,8 @@ import org.apache.shardingsphere.infra.metadata.auth.model.privilege.PrivilegeTy
import org.apache.shardingsphere.infra.metadata.auth.model.privilege.ShardingSpherePrivilege;
import org.apache.shardingsphere.infra.metadata.auth.model.privilege.database.SchemaPrivilege;
import org.apache.shardingsphere.infra.metadata.auth.model.privilege.database.TablePrivilege;
-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.metadata.user.Grantee;
+import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
import javax.sql.DataSource;
import java.sql.Connection;
@@ -37,6 +37,7 @@ import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Optional;
import java.util.stream.Collectors;
@@ -44,11 +45,11 @@ import java.util.stream.Collectors;
* PostgreSQL privilege loader.
*/
public final class PostgreSQLPrivilegeLoader implements PrivilegeLoader {
-
+
private static final String ROLES_SQL = "select * from pg_roles WHERE rolname IN (%s)";
-
+
private static final String TABLE_PRIVILEGE_SQL = "SELECT grantor, grantee, table_catalog, table_name, privilege_type, is_grantable from information_schema.table_privileges WHERE grantee IN (%s)";
-
+
@Override
public Map<ShardingSphereUser, ShardingSpherePrivilege> load(final Collection<ShardingSphereUser> users, final DataSource dataSource) throws SQLException {
Map<ShardingSphereUser, ShardingSpherePrivilege> result = new LinkedHashMap<>();
@@ -70,13 +71,13 @@ public final class PostgreSQLPrivilegeLoader implements PrivilegeLoader {
}
fillTablePrivilege(privilegeCache, privileges);
}
-
+
private void fillTablePrivilege(final Map<ShardingSphereUser, Map<String, Map<String, List<PrivilegeType>>>> privilegeCache, final Map<ShardingSphereUser, ShardingSpherePrivilege> privileges) {
- for (ShardingSphereUser user : privilegeCache.keySet()) {
- for (String db : privilegeCache.get(user).keySet()) {
- for (String tableName : privilegeCache.get(user).get(db).keySet()) {
- TablePrivilege tablePrivilege = new TablePrivilege(tableName, privilegeCache.get(user).get(db).get(tableName));
- ShardingSpherePrivilege privilege = privileges.get(user);
+ for (Entry<ShardingSphereUser, Map<String, Map<String, List<PrivilegeType>>>> entry : privilegeCache.entrySet()) {
+ for (String db : entry.getValue().keySet()) {
+ for (String tableName : entry.getValue().get(db).keySet()) {
+ TablePrivilege tablePrivilege = new TablePrivilege(tableName, entry.getValue().get(db).get(tableName));
+ ShardingSpherePrivilege privilege = privileges.get(entry.getKey());
if (!privilege.getDatabasePrivilege().getSpecificPrivileges().containsKey(db)) {
privilege.getDatabasePrivilege().getSpecificPrivileges().put(db, new SchemaPrivilege(db));
}
@@ -85,12 +86,12 @@ public final class PostgreSQLPrivilegeLoader implements PrivilegeLoader {
}
}
}
-
+
private void collectPrivilege(final Map<ShardingSphereUser, Map<String, Map<String, List<PrivilegeType>>>> privilegeCache, final ResultSet resultSet) throws SQLException {
String db = resultSet.getString("table_catalog");
String tableName = resultSet.getString("table_name");
String privilegeType = resultSet.getString("privilege_type");
- Boolean hasPrivilege = resultSet.getString("is_grantable").equalsIgnoreCase("TRUE");
+ boolean hasPrivilege = resultSet.getString("is_grantable").equalsIgnoreCase("TRUE");
String grantee = resultSet.getString("grantee");
if (hasPrivilege) {
privilegeCache
@@ -100,7 +101,7 @@ public final class PostgreSQLPrivilegeLoader implements PrivilegeLoader {
.add(getPrivilegeType(privilegeType));
}
}
-
+
private void fillRolePrivilege(final Map<ShardingSphereUser, ShardingSpherePrivilege> privileges, final DataSource dataSource, final Collection<ShardingSphereUser> users) throws SQLException {
try (Connection connection = dataSource.getConnection()) {
Statement statement = connection.createStatement();
@@ -111,19 +112,19 @@ public final class PostgreSQLPrivilegeLoader implements PrivilegeLoader {
}
}
}
-
+
private void fillRolePrivilege(final Map<ShardingSphereUser, ShardingSpherePrivilege> privileges, final ResultSet resultSet) throws SQLException {
Optional<ShardingSphereUser> user = getShardingSphereUser(privileges, resultSet);
if (user.isPresent()) {
privileges.get(user.get()).getAdministrativePrivilege().getPrivileges().addAll(loadRolePrivileges(resultSet));
}
}
-
+
private Optional<ShardingSphereUser> getShardingSphereUser(final Map<ShardingSphereUser, ShardingSpherePrivilege> privileges, final ResultSet resultSet) throws SQLException {
Grantee grantee = new Grantee(resultSet.getString("rolname"), "");
return privileges.keySet().stream().filter(each -> each.getGrantee().equals(grantee)).findFirst();
}
-
+
private Collection<PrivilegeType> loadRolePrivileges(final ResultSet resultSet) throws SQLException {
Collection<PrivilegeType> result = new LinkedList<>();
addToPrivilegeTypesIfPresent(resultSet.getBoolean("rolsuper"), PrivilegeType.SUPER, result);
@@ -134,19 +135,17 @@ public final class PostgreSQLPrivilegeLoader implements PrivilegeLoader {
addToPrivilegeTypesIfPresent(resultSet.getBoolean("rolcanlogin"), PrivilegeType.CAN_LOGIN, result);
return result;
}
-
+
private String getTablePrivilegeSQL(final Collection<ShardingSphereUser> users) {
- String userList = users.stream().map(each -> String.format("'%s'", each.getGrantee().getUsername()))
- .collect(Collectors.joining(", "));
+ String userList = users.stream().map(each -> String.format("'%s'", each.getGrantee().getUsername())).collect(Collectors.joining(", "));
return String.format(TABLE_PRIVILEGE_SQL, userList);
}
-
+
private String getRolePrivilegeSQL(final Collection<ShardingSphereUser> users) {
- String userList = users.stream().map(each -> String.format("'%s'", each.getGrantee().getUsername()))
- .collect(Collectors.joining(", "));
+ String userList = users.stream().map(each -> String.format("'%s'", each.getGrantee().getUsername())).collect(Collectors.joining(", "));
return String.format(ROLES_SQL, userList);
}
-
+
private PrivilegeType getPrivilegeType(final String privilege) {
switch (privilege) {
case "SELECT":
@@ -177,13 +176,13 @@ public final class PostgreSQLPrivilegeLoader implements PrivilegeLoader {
throw new UnsupportedOperationException(privilege);
}
}
-
+
private void addToPrivilegeTypesIfPresent(final boolean hasPrivilege, final PrivilegeType privilegeType, final Collection<PrivilegeType> target) {
if (hasPrivilege) {
target.add(privilegeType);
}
}
-
+
@Override
public String getDatabaseType() {
return "PostgreSQL";
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/auth/builder/loader/dialect/PostgreSQLPrivilegeLoaderTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/auth/builder/loader/dialect/PostgreSQLPrivilegeLoaderTest.java
index 156c1c6..420470f 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/auth/builder/loader/dialect/PostgreSQLPrivilegeLoaderTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/auth/builder/loader/dialect/PostgreSQLPrivilegeLoaderTest.java
@@ -21,7 +21,7 @@ import org.apache.shardingsphere.infra.metadata.auth.builder.loader.PrivilegeLoa
import org.apache.shardingsphere.infra.metadata.auth.model.privilege.PrivilegeType;
import org.apache.shardingsphere.infra.metadata.auth.model.privilege.ShardingSpherePrivilege;
import org.apache.shardingsphere.infra.metadata.auth.model.privilege.database.SchemaPrivilege;
-import org.apache.shardingsphere.infra.metadata.auth.model.user.ShardingSphereUser;
+import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -47,19 +47,19 @@ import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public final class PostgreSQLPrivilegeLoaderTest {
-
+
@BeforeClass
public static void setUp() {
ShardingSphereServiceLoader.register(PrivilegeLoader.class);
}
-
+
@Test
public void assertLoad() throws SQLException {
Collection<ShardingSphereUser> users = createUsers();
DataSource dataSource = mockDataSource(users);
assertPrivilege(getPrivilegeLoader().load(users, dataSource));
}
-
+
private void assertPrivilege(final Map<ShardingSphereUser, ShardingSpherePrivilege> actual) {
assertThat(actual.size(), is(1));
ShardingSphereUser user = new ShardingSphereUser("postgres", "", "");
@@ -74,25 +74,25 @@ public final class PostgreSQLPrivilegeLoaderTest {
PrivilegeType.CREATE_DATABASE, PrivilegeType.CAN_LOGIN));
assertEquals(actual.get(user).getAdministrativePrivilege().getPrivileges(), expectedAdministrativePrivilege);
}
-
+
private Collection<ShardingSphereUser> createUsers() {
- LinkedList<ShardingSphereUser> users = new LinkedList<>();
- users.add(new ShardingSphereUser("postgres", "", ""));
- return users;
+ LinkedList<ShardingSphereUser> result = new LinkedList<>();
+ result.add(new ShardingSphereUser("postgres", "", ""));
+ return result;
}
-
+
private DataSource mockDataSource(final Collection<ShardingSphereUser> users) throws SQLException {
ResultSet tablePrivilegeResultSet = mockTablePrivilegeResultSet();
- DataSource dataSource = mock(DataSource.class, RETURNS_DEEP_STUBS);
+ DataSource result = mock(DataSource.class, RETURNS_DEEP_STUBS);
String tablePrivilegeSql = "SELECT grantor, grantee, table_catalog, table_name, privilege_type, is_grantable from information_schema.table_privileges WHERE grantee IN (%s)";
String userList = users.stream().map(item -> String.format("'%s'", item.getGrantee().getUsername(), item.getGrantee().getHostname())).collect(Collectors.joining(", "));
- when(dataSource.getConnection().createStatement().executeQuery(String.format(tablePrivilegeSql, userList))).thenReturn(tablePrivilegeResultSet);
+ when(result.getConnection().createStatement().executeQuery(String.format(tablePrivilegeSql, userList))).thenReturn(tablePrivilegeResultSet);
ResultSet rolePrivilegeResultSet = mockRolePrivilegeResultSet();
String rolePrivilegeSql = "select * from pg_roles WHERE rolname IN (%s)";
- when(dataSource.getConnection().createStatement().executeQuery(String.format(rolePrivilegeSql, userList))).thenReturn(rolePrivilegeResultSet);
- return dataSource;
+ when(result.getConnection().createStatement().executeQuery(String.format(rolePrivilegeSql, userList))).thenReturn(rolePrivilegeResultSet);
+ return result;
}
-
+
private ResultSet mockTablePrivilegeResultSet() throws SQLException {
ResultSet result = mock(ResultSet.class, RETURNS_DEEP_STUBS);
when(result.next()).thenReturn(true, true, true, true, true, true, true, false);
@@ -103,7 +103,7 @@ public final class PostgreSQLPrivilegeLoaderTest {
when(result.getString("grantee")).thenReturn("postgres");
return result;
}
-
+
private ResultSet mockRolePrivilegeResultSet() throws SQLException {
ResultSet result = mock(ResultSet.class, RETURNS_DEEP_STUBS);
when(result.next()).thenReturn(true, false);
@@ -116,7 +116,7 @@ public final class PostgreSQLPrivilegeLoaderTest {
when(result.getBoolean("rolcanlogin")).thenReturn(true);
return result;
}
-
+
private PrivilegeLoader getPrivilegeLoader() {
for (PrivilegeLoader each : ShardingSphereServiceLoader.getSingletonServiceInstances(PrivilegeLoader.class)) {
if ("PostgreSQL".equals(each.getDatabaseType())) {
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/user/yaml/swapper/UsersYamlSwapperTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/user/yaml/swapper/UsersYamlSwapperTest.java
index d5f5ebe..dff4a88 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/user/yaml/swapper/UsersYamlSwapperTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/user/yaml/swapper/UsersYamlSwapperTest.java
@@ -17,8 +17,6 @@
package org.apache.shardingsphere.infra.metadata.user.yaml.swapper;
-import org.apache.shardingsphere.infra.metadata.auth.builtin.DefaultAuthentication;
-import org.apache.shardingsphere.infra.metadata.auth.model.privilege.ShardingSpherePrivilege;
import org.apache.shardingsphere.infra.metadata.user.Grantee;
import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
import org.apache.shardingsphere.infra.metadata.user.yaml.config.YamlUserConfiguration;
@@ -27,6 +25,7 @@ import org.junit.Test;
import java.util.Collection;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.Map;
import java.util.Optional;
@@ -38,10 +37,10 @@ public final class UsersYamlSwapperTest {
@Test
public void assertSwapToYaml() {
- 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());
- YamlUsersConfiguration actual = new UsersYamlSwapper().swapToYamlConfiguration(authentication.getAllUsers());
+ Collection<ShardingSphereUser> users = new LinkedList<>();
+ users.add(new ShardingSphereUser("user1", "pwd1", "127.0.0.1"));
+ users.add(new ShardingSphereUser("user2", "pwd2", "127.0.0.2"));
+ YamlUsersConfiguration actual = new UsersYamlSwapper().swapToYamlConfiguration(users);
assertThat(actual.getUsers().size(), is(2));
assertThat(actual.getUsers().get("user1").getPassword(), is("pwd1"));
assertThat(actual.getUsers().get("user1").getHostname(), is("127.0.0.1"));