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

Reply via email to