FALCON-595 Improvements to DefaultAuthorizationProvider code. Contributed by 
Raghav Kumar Gautam


Project: http://git-wip-us.apache.org/repos/asf/incubator-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-falcon/commit/d2a25082
Tree: http://git-wip-us.apache.org/repos/asf/incubator-falcon/tree/d2a25082
Diff: http://git-wip-us.apache.org/repos/asf/incubator-falcon/diff/d2a25082

Branch: refs/heads/master
Commit: d2a25082b85f5075eef4cd50e18efe2fce67e46b
Parents: 8190456
Author: Venkatesh Seetharam <venkat...@apache.org>
Authored: Fri Nov 7 20:18:12 2014 -0800
Committer: Venkatesh Seetharam <venkat...@apache.org>
Committed: Fri Nov 7 21:33:25 2014 -0800

----------------------------------------------------------------------
 CHANGES.txt                                     |  3 +++
 .../security/DefaultAuthorizationProvider.java  | 28 +++++++-------------
 2 files changed, 13 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/d2a25082/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index d6d8747..aaea457 100755
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -129,6 +129,9 @@ Trunk (Unreleased)
   OPTIMIZATIONS
 
   BUG FIXES
+   FALCON-595 Improvements to DefaultAuthorizationProvider code
+   (Raghav Kumar Gautam via Venkatesh Seetharam)
+
    FALCON-868 Rerun command incorrect in falcon CLI documentation
    (Karishma Gulati via Venkatesh Seetharam)
 

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/d2a25082/common/src/main/java/org/apache/falcon/security/DefaultAuthorizationProvider.java
----------------------------------------------------------------------
diff --git 
a/common/src/main/java/org/apache/falcon/security/DefaultAuthorizationProvider.java
 
b/common/src/main/java/org/apache/falcon/security/DefaultAuthorizationProvider.java
index b59718c..d2d48c7 100644
--- 
a/common/src/main/java/org/apache/falcon/security/DefaultAuthorizationProvider.java
+++ 
b/common/src/main/java/org/apache/falcon/security/DefaultAuthorizationProvider.java
@@ -85,9 +85,9 @@ public class DefaultAuthorizationProvider implements 
AuthorizationProvider {
     /**
      * Super user group.
      */
-    private String superUserGroup;
-    private Set<String> adminUsers;
-    private Set<String> adminGroups;
+    private final String superUserGroup;
+    private final Set<String> adminUsers;
+    private final Set<String> adminGroups;
 
     public DefaultAuthorizationProvider() {
         superUserGroup = 
StartupProperties.get().getProperty(SUPER_USER_GROUP_KEY);
@@ -95,14 +95,14 @@ public class DefaultAuthorizationProvider implements 
AuthorizationProvider {
         adminGroups = getAdminNamesFromConfig(ADMIN_GROUPS_KEY);
     }
 
-    private HashSet<String> getAdminNamesFromConfig(String key) {
-        HashSet<String> adminNames = new HashSet<String>();
+    private Set<String> getAdminNamesFromConfig(String key) {
+        Set<String> adminNames = new HashSet<String>();
         String adminNamesConfig = StartupProperties.get().getProperty(key);
         if (!StringUtils.isEmpty(adminNamesConfig)) {
             adminNames.addAll(Arrays.asList(adminNamesConfig.split(",")));
         }
 
-        return adminNames;
+        return Collections.unmodifiableSet(adminNames);
     }
 
     /**
@@ -180,8 +180,7 @@ public class DefaultAuthorizationProvider implements 
AuthorizationProvider {
     }
 
     protected Set<String> getGroupNames(UserGroupInformation proxyUgi) {
-        HashSet<String> s = new 
HashSet<String>(Arrays.asList(proxyUgi.getGroupNames()));
-        return Collections.unmodifiableSet(s);
+        return new HashSet<String>(Arrays.asList(proxyUgi.getGroupNames()));
     }
 
     /**
@@ -288,16 +287,9 @@ public class DefaultAuthorizationProvider implements 
AuthorizationProvider {
     }
 
     protected boolean isUserInAdminGroups(UserGroupInformation proxyUgi) {
-        Set<String> groups = getGroupNames(proxyUgi);
-        boolean isUserGroupInAdmin = false;
-        for (String group : groups) {
-            if (adminGroups.contains(group)) {
-                isUserGroupInAdmin = true;
-                break;
-            }
-        }
-
-        return isUserGroupInAdmin;
+        final Set<String> groups = getGroupNames(proxyUgi);
+        groups.retainAll(adminGroups);
+        return !groups.isEmpty();
     }
 
     protected void authorizeEntityResource(UserGroupInformation 
authenticatedUGI,

Reply via email to