Repository: hbase Updated Branches: refs/heads/master 92f5595e7 -> af5146ee0
HBASE-15465 userPermission returned by getUserPermission() for the selected namespace does not have namespace set (li xiang) Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/af5146ee Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/af5146ee Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/af5146ee Branch: refs/heads/master Commit: af5146ee04ee6f8085e59d93e63a6062c7bb857b Parents: 92f5595 Author: Jerry He <jerry...@apache.org> Authored: Thu May 19 20:35:58 2016 -0700 Committer: Jerry He <jerry...@apache.org> Committed: Thu May 19 20:35:58 2016 -0700 ---------------------------------------------------------------------- .../security/access/AccessControlLists.java | 22 +++++++++++++------- .../security/access/TestAccessController.java | 4 ++++ 2 files changed, 19 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/af5146ee/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessControlLists.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessControlLists.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessControlLists.java index f0723c2..2d98919 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessControlLists.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessControlLists.java @@ -497,11 +497,19 @@ public class AccessControlLists { List<UserPermission> perms = new ArrayList<UserPermission>(); - for (Map.Entry<String, TablePermission> entry : allPerms.entries()) { - UserPermission up = new UserPermission(Bytes.toBytes(entry.getKey()), - entry.getValue().getTableName(), entry.getValue().getFamily(), - entry.getValue().getQualifier(), entry.getValue().getActions()); - perms.add(up); + if(isNamespaceEntry(entryName)) { // Namespace + for (Map.Entry<String, TablePermission> entry : allPerms.entries()) { + UserPermission up = new UserPermission(Bytes.toBytes(entry.getKey()), + entry.getValue().getNamespace(), entry.getValue().getActions()); + perms.add(up); + } + } else { // Table + for (Map.Entry<String, TablePermission> entry : allPerms.entries()) { + UserPermission up = new UserPermission(Bytes.toBytes(entry.getKey()), + entry.getValue().getTableName(), entry.getValue().getFamily(), + entry.getValue().getQualifier(), entry.getValue().getActions()); + perms.add(up); + } } return perms; } @@ -620,11 +628,11 @@ public class AccessControlLists { } public static boolean isNamespaceEntry(String entryName) { - return entryName.charAt(0) == NAMESPACE_PREFIX; + return entryName != null && entryName.charAt(0) == NAMESPACE_PREFIX; } public static boolean isNamespaceEntry(byte[] entryName) { - return entryName[0] == NAMESPACE_PREFIX; + return entryName != null && entryName.length !=0 && entryName[0] == NAMESPACE_PREFIX; } public static String toNamespaceEntry(String namespace) { http://git-wip-us.apache.org/repos/asf/hbase/blob/af5146ee/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java index 92d7806..f5d7606 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java @@ -2601,6 +2601,10 @@ public class TestAccessController extends SecureTestUtil { systemUserConnection, AccessControlLists.toNamespaceEntry(namespace)); assertTrue(namespacePermissions != null); assertTrue(namespacePermissions.size() == 1); + for (UserPermission namespacePermission : namespacePermissions) { + assertFalse(namespacePermission.isGlobal()); // Verify it is not a global user permission + assertEquals(namespace, namespacePermission.getNamespace()); // Verify namespace is set + } } catch (Throwable thw) { throw new HBaseException(thw); }