This is an automated email from the ASF dual-hosted git repository.

rmani pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new 68fa17a  RANGER-2512:RangerRolesRESTClient for serving user group 
roles to the plugins for evaluation -part2
68fa17a is described below

commit 68fa17a19a1032c3b3f2bff0df2f4c922b243595
Author: rmani <[email protected]>
AuthorDate: Wed Oct 2 11:11:20 2019 -0700

    RANGER-2512:RangerRolesRESTClient for serving user group roles to the 
plugins for evaluation -part2
---
 .../policyengine/RangerPolicyEngineImpl.java       |  8 +--
 .../main/java/org/apache/ranger/biz/AssetMgr.java  | 18 +++---
 .../java/org/apache/ranger/biz/ServiceDBStore.java | 70 ++++++++++++++++++----
 .../org/apache/ranger/db/XXGlobalStateDao.java     | 44 ++++++++++----
 .../java/org/apache/ranger/db/XXPolicyDao.java     | 11 ++++
 .../apache/ranger/entity/XXServiceVersionInfo.java | 10 +++-
 .../main/java/org/apache/ranger/rest/RoleREST.java |  6 +-
 .../main/resources/META-INF/jpa_named_queries.xml  |  9 +++
 8 files changed, 133 insertions(+), 43 deletions(-)

diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java
index 77648fd..576d5e5 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java
@@ -1347,11 +1347,6 @@ public class RangerPolicyEngineImpl implements 
RangerPolicyEngine {
         public Set<String> getRolesFromUserAndGroups(String user, Set<String> 
groups) {
                 Set<String> allRoles = new HashSet<>();
 
-                               if (rangerRoles != null ) {
-                                       userRoleMapping  = 
MapUtils.isNotEmpty(this.userRoleMapping)  ? this.userRoleMapping  : null;
-                                       groupRoleMapping = 
MapUtils.isNotEmpty(this.groupRoleMapping) ? this.groupRoleMapping : null;
-                               }
-
                                if (MapUtils.isNotEmpty(userRoleMapping) && 
StringUtils.isNotEmpty(user)) {
                         Set<String> userRoles = userRoleMapping.get(user);
                         if (CollectionUtils.isNotEmpty(userRoles)) {
@@ -2025,6 +2020,9 @@ public class RangerPolicyEngineImpl implements 
RangerPolicyEngine {
                        rangerRolesUtil.init(rangerRoleSet);
                        userRoleMapping  = rangerRolesUtil.getUserRoleMapping();
                        groupRoleMapping = 
rangerRolesUtil.getGroupRoleMapping();
+               } else {
+                       userRoleMapping  = null;
+                       groupRoleMapping = null;
                }
        }
 }
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java 
b/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
index 9d26fb5..e17571f 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
@@ -685,19 +685,19 @@ public class AssetMgr extends AssetMgrBase {
                pluginSvcVersionInfo.setIpAddress(ipAddress);
 
                switch (entityType) {
-                       case 0:
+                       case RangerPluginInfo.ENTITY_TYPE_POLICIES:
                                
pluginSvcVersionInfo.setPolicyActiveVersion(lastKnownVersion);
                                
pluginSvcVersionInfo.setPolicyActivationTime(lastActivationTime);
                                
pluginSvcVersionInfo.setPolicyDownloadedVersion(downloadedVersion);
                                pluginSvcVersionInfo.setPolicyDownloadTime(new 
Date().getTime());
                                break;
-                       case 1:
+                       case RangerPluginInfo.ENTITY_TYPE_TAGS:
                                
pluginSvcVersionInfo.setTagActiveVersion(lastKnownVersion);
                                
pluginSvcVersionInfo.setTagActivationTime(lastActivationTime);
                                
pluginSvcVersionInfo.setTagDownloadedVersion(downloadedVersion);
                                pluginSvcVersionInfo.setTagDownloadTime(new 
Date().getTime());
                                break;
-                       case 2:
+                       case RangerPluginInfo.ENTITY_TYPE_ROLES:
                                
pluginSvcVersionInfo.setRoleActiveVersion(lastKnownVersion);
                                
pluginSvcVersionInfo.setRoleActivationTime(lastActivationTime);
                                
pluginSvcVersionInfo.setRoleDownloadedVersion(downloadedVersion);
@@ -722,13 +722,13 @@ public class AssetMgr extends AssetMgrBase {
                        // HttpServletResponse.SC_NOT_MODIFIED
 
                        switch (entityType) {
-                               case 0:
+                               case RangerPluginInfo.ENTITY_TYPE_POLICIES:
                                        isTagVersionResetNeeded = 
rangerDaoManager.getXXService().findAssociatedTagService(pluginInfo.getServiceName())
 == null;
                                        break;
-                               case 1:
+                               case RangerPluginInfo.ENTITY_TYPE_TAGS:
                                        isTagVersionResetNeeded = false;
                                        break;
-                               case 2:
+                               case RangerPluginInfo.ENTITY_TYPE_ROLES:
                                        isTagVersionResetNeeded = false;
                                        break;
                                default:
@@ -1231,14 +1231,14 @@ public class AssetMgr extends AssetMgrBase {
        }
 
        private boolean isPolicyDownloadRequest(int entityType) {
-               return entityType == 0;
+               return entityType == RangerPluginInfo.ENTITY_TYPE_POLICIES;
        }
 
        private boolean isTagDownloadRequest(int entityType) {
-               return entityType == 1;
+               return entityType == RangerPluginInfo.ENTITY_TYPE_TAGS;
        }
 
        private boolean isRoleDownloadRequest(int entityType) {
-               return entityType == 2;
+               return entityType == RangerPluginInfo.ENTITY_TYPE_ROLES;
        }
 }
diff --git 
a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java 
b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
index 85db577..51e08e1 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
@@ -66,6 +66,7 @@ import org.apache.ranger.common.ContextUtil;
 import org.apache.ranger.common.MessageEnums;
 import org.apache.ranger.common.RangerCommonEnums;
 import org.apache.ranger.common.db.RangerTransactionSynchronizationAdapter;
+import org.apache.ranger.db.XXGlobalStateDao;
 import org.apache.ranger.db.XXPolicyDao;
 import org.apache.ranger.entity.XXTagChangeLog;
 import org.apache.ranger.plugin.model.RangerSecurityZone;
@@ -1637,7 +1638,7 @@ public class ServiceDBStore extends AbstractServiceStore {
                        service = svcService.update(service);
 
                        if (hasTagServiceValueChanged || hasIsEnabledChanged) {
-                               updatePolicyVersion(service, 
RangerPolicyDelta.CHANGE_TYPE_SERVICE_CHANGE, null);
+                               updatePolicyVersion(service, 
RangerPolicyDelta.CHANGE_TYPE_SERVICE_CHANGE, null, false);
                        }
                }
 
@@ -1932,6 +1933,8 @@ public class ServiceDBStore extends AbstractServiceStore {
                policy.setVersion(Long.valueOf(1));
                updatePolicySignature(policy);
 
+               boolean updateServiceInfoRoleVersion = 
isRoleDownloadRequired(policy, service.getId());
+
                if(populateExistingBaseFields) {
                        
assignedIdPolicyService.setPopulateExistingBaseFields(true);
                        daoMgr.getXXPolicy().setIdentityInsert(true);
@@ -1950,7 +1953,7 @@ public class ServiceDBStore extends AbstractServiceStore {
                createOrMapLabels(xCreatedPolicy, uniquePolicyLabels);
                 RangerPolicy createdPolicy = 
policyService.getPopulatedViewObject(xCreatedPolicy);
 
-               handlePolicyUpdate(service, 
RangerPolicyDelta.CHANGE_TYPE_POLICY_CREATE, createdPolicy);
+               handlePolicyUpdate(service, 
RangerPolicyDelta.CHANGE_TYPE_POLICY_CREATE, createdPolicy, 
updateServiceInfoRoleVersion);
                dataHistService.createObjectDataHistory(createdPolicy, 
RangerDataHistService.ACTION_CREATE);
 
                List<XXTrxLog> trxLogList = getTransactionLogList(createdPolicy,
@@ -2069,6 +2072,8 @@ public class ServiceDBStore extends AbstractServiceStore {
 
                updatePolicySignature(policy);
 
+               boolean updateServiceInfoRoleVersion = 
isRoleDownloadRequired(policy, service.getId());
+
                policy = policyService.update(policy);
                XXPolicy newUpdPolicy = 
daoMgr.getXXPolicy().getById(policy.getId());
 
@@ -2078,7 +2083,7 @@ public class ServiceDBStore extends AbstractServiceStore {
                policyRefUpdater.createNewPolMappingForRefTable(policy, 
newUpdPolicy, xServiceDef);
                createOrMapLabels(newUpdPolicy, uniquePolicyLabels);
                RangerPolicy updPolicy = 
policyService.getPopulatedViewObject(newUpdPolicy);
-               handlePolicyUpdate(service, 
RangerPolicyDelta.CHANGE_TYPE_POLICY_UPDATE, updPolicy);
+               handlePolicyUpdate(service, 
RangerPolicyDelta.CHANGE_TYPE_POLICY_UPDATE, updPolicy, 
updateServiceInfoRoleVersion);
                dataHistService.createObjectDataHistory(updPolicy, 
RangerDataHistService.ACTION_UPDATE);
 
                bizUtil.createTrxLog(trxLogList);
@@ -2120,7 +2125,7 @@ public class ServiceDBStore extends AbstractServiceStore {
                deleteExistingPolicyLabel(policy);
                policyService.delete(policy);
 
-               handlePolicyUpdate(service, 
RangerPolicyDelta.CHANGE_TYPE_POLICY_DELETE, policy);
+               handlePolicyUpdate(service, 
RangerPolicyDelta.CHANGE_TYPE_POLICY_DELETE, policy, false);
 
                dataHistService.createObjectDataHistory(policy, 
RangerDataHistService.ACTION_DELETE);
 
@@ -2155,7 +2160,7 @@ public class ServiceDBStore extends AbstractServiceStore {
                                deleteExistingPolicyLabel(policy);
                                policyService.delete(policy);
                                List<XXTrxLog> trxLogList = 
getTransactionLogList(policy, 
RangerPolicyService.OPERATION_IMPORT_DELETE_CONTEXT, 
RangerPolicyService.OPERATION_DELETE_CONTEXT);
-                               handlePolicyUpdate(service, 
RangerPolicyDelta.CHANGE_TYPE_POLICY_DELETE, policy);
+                               handlePolicyUpdate(service, 
RangerPolicyDelta.CHANGE_TYPE_POLICY_DELETE, policy, false);
                                dataHistService.createObjectDataHistory(policy, 
RangerDataHistService.ACTION_DELETE);
                                bizUtil.createTrxLog(trxLogList);
                        }
@@ -3289,13 +3294,13 @@ public class ServiceDBStore extends 
AbstractServiceStore {
                return validConfigs;
        }
 
-       private void handlePolicyUpdate(RangerService service, Integer 
policyDeltaType, RangerPolicy policy) throws Exception {
-               updatePolicyVersion(service, policyDeltaType, policy);
+       private void handlePolicyUpdate(RangerService service, Integer 
policyDeltaType, RangerPolicy policy, boolean updateServiceInfoRoleVersion) 
throws Exception {
+               updatePolicyVersion(service, policyDeltaType, policy, 
updateServiceInfoRoleVersion);
        }
 
        public enum VERSION_TYPE { POLICY_VERSION, TAG_VERSION, 
POLICY_AND_TAG_VERSION, ROLE_VERSION }
 
-       private void updatePolicyVersion(RangerService service, Integer 
policyDeltaType, RangerPolicy policy) throws Exception {
+       private void updatePolicyVersion(RangerService service, Integer 
policyDeltaType, RangerPolicy policy, boolean updateServiceInfoRoleVersion) 
throws Exception {
                if(service == null || service.getId() == null) {
                        return;
                }
@@ -3332,6 +3337,11 @@ public class ServiceDBStore extends AbstractServiceStore 
{
 
                Runnable serviceVersionUpdater = new 
ServiceVersionUpdater(daoManager, serviceId, versionType, policy != null ? 
policy.getZoneName() : null, policyDeltaType, policy);
                
transactionSynchronizationAdapter.executeOnTransactionCommit(serviceVersionUpdater);
+
+               if (updateServiceInfoRoleVersion) {
+                       Runnable roleVersionUpdater = new 
ServiceVersionUpdater(daoManager, serviceId, VERSION_TYPE.ROLE_VERSION, policy 
!= null ? policy.getZoneName() : null, policyDeltaType, policy);
+                       
transactionSynchronizationAdapter.executeOnTransactionCommit(roleVersionUpdater);
+               }
        }
 
        public static void persistVersionChange(ServiceVersionUpdater 
serviceVersionUpdater) {
@@ -3359,11 +3369,16 @@ public class ServiceDBStore extends 
AbstractServiceStore {
                                serviceVersionInfoDbObj.setTagUpdateTime(now);
                        }
 
-                       if (versionType == VERSION_TYPE.ROLE_VERSION) {
+                       if(versionType == VERSION_TYPE.ROLE_VERSION) {
                                // get the LatestRoleVersion from the 
GlobalTable and update ServiceInfo for a service
-                               Long currentRoleVersion = 
daoMgr.getXXGlobalState().getRoleVersion("RangerRole");
-                               
serviceVersionInfoDbObj.setRolVersion(currentRoleVersion);
-                               serviceVersionInfoDbObj.setRoleUpdateTime(now);
+                               XXGlobalStateDao xxGlobalStateDao = 
daoMgr.getXXGlobalState();
+                               if (xxGlobalStateDao != null) {
+                                       Long roleVersion = 
xxGlobalStateDao.getRoleVersion("RangerRole");
+                                       if (roleVersion != null) {
+                                               
serviceVersionInfoDbObj.setRoleVersion(roleVersion);
+                                               
serviceVersionInfoDbObj.setRoleUpdateTime(now);
+                                       }
+                               }
                        }
 
                        serviceVersionInfoDao.update(serviceVersionInfoDbObj);
@@ -3376,6 +3391,8 @@ public class ServiceDBStore extends AbstractServiceStore {
                                serviceVersionInfoDbObj.setPolicyUpdateTime(new 
Date());
                                serviceVersionInfoDbObj.setTagVersion(1L);
                                serviceVersionInfoDbObj.setTagUpdateTime(new 
Date());
+                               serviceVersionInfoDbObj.setRoleVersion(1L);
+                               serviceVersionInfoDbObj.setRoleUpdateTime(new 
Date());
 
                                
serviceVersionInfoDao.create(serviceVersionInfoDbObj);
                        }
@@ -3386,6 +3403,35 @@ public class ServiceDBStore extends AbstractServiceStore 
{
                }
        }
 
+       private boolean isRoleDownloadRequired(RangerPolicy policy, Long 
serviceId) {
+               // Role Download to plugin is required if some role in the 
policy created/updated is not present in any other
+               // policy for that service.
+               boolean ret = false;
+
+               if (policy != null) {
+                       List<RangerPolicy.RangerPolicyItem> rangerPolicyItems = 
policy.getPolicyItems();
+                       if (CollectionUtils.isNotEmpty(rangerPolicyItems)) {
+                               for (RangerPolicyItem rangerPolicyItem : 
rangerPolicyItems) {
+                                       List<String> roleNames = 
rangerPolicyItem.getRoles();
+                                       if 
(CollectionUtils.isNotEmpty(roleNames)) {
+                                               for (String roleName : 
roleNames) {
+                                                       List<Long> policyIds = 
daoMgr.getXXPolicy().findPolicyIdsByRoleNameAndServiceId(roleName, serviceId);
+                                                       if 
(CollectionUtils.isEmpty(policyIds)) {
+                                                               ret = true;
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                                       if (ret) {
+                                               break;
+                                       }
+                               }
+                       }
+               }
+
+               return ret;
+       }
+
        private static void persistChangeLog(ServiceVersionUpdater 
serviceVersionUpdater) {
                XXServiceVersionInfoDao serviceVersionInfoDao = 
serviceVersionUpdater.daoManager.getXXServiceVersionInfo();
 
diff --git 
a/security-admin/src/main/java/org/apache/ranger/db/XXGlobalStateDao.java 
b/security-admin/src/main/java/org/apache/ranger/db/XXGlobalStateDao.java
index d687e73..4f7e9d5 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXGlobalStateDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXGlobalStateDao.java
@@ -18,6 +18,7 @@
 package org.apache.ranger.db;
 
 import com.google.gson.Gson;
+import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.ranger.common.DateUtil;
@@ -34,7 +35,7 @@ import java.util.Map;
 public class XXGlobalStateDao extends BaseDao<XXGlobalState> {
     private static final Logger logger = 
Logger.getLogger(RangerDaoManager.class);
 
-    final static String RANGER_ROLE_VERSION_LABEL = "RangerRoleVersion";
+    final static String APP_DATA_ENTRY_ROLE_VERSION = "RangerRoleVersion";
 
     public void onGlobalStateChange(String stateName) throws Exception {
 
@@ -73,18 +74,9 @@ public class XXGlobalStateDao extends BaseDao<XXGlobalState> 
{
             try {
                 XXGlobalState globalState = findByStateName(stateName);
                 if (globalState == null) {
-                    globalState = new XXGlobalState();
-                    globalState.setStateName(stateName);
-                    Map<String,String> roleVersion = new HashMap<>();
-                    roleVersion.put(RANGER_ROLE_VERSION_LABEL,new 
String(Long.toString(1L)));
-                    globalState.setAppData(new Gson().toJson(roleVersion));
-                    create(globalState);
+                    createGlobalStateForRoleVersion(globalState, stateName);
                 } else {
-                    Map<String,String> roleVersionJson = new 
Gson().fromJson(globalState.getAppData(),Map.class);
-                    Long               roleVersion     = 
Long.valueOf(roleVersionJson.get(RANGER_ROLE_VERSION_LABEL)) + 1L;
-                    roleVersionJson.put(RANGER_ROLE_VERSION_LABEL,new 
String(Long.toString(roleVersion)));
-                    globalState.setAppData(new Gson().toJson(roleVersionJson));
-                    update(globalState);
+                    updateGlobalStateForRoleVersion(globalState, stateName);
                 }
             } catch (Exception exception) {
                 logger.error("Cannot create/update GlobalState for state:[" + 
stateName + "]", exception);
@@ -98,7 +90,11 @@ public class XXGlobalStateDao extends BaseDao<XXGlobalState> 
{
         try {
             XXGlobalState       globalState     = findByStateName(stateName);
             Map<String, String> roleVersionJson = new 
Gson().fromJson(globalState.getAppData(), Map.class);
-            ret                                 = 
Long.valueOf(roleVersionJson.get(RANGER_ROLE_VERSION_LABEL));
+            if(MapUtils.isNotEmpty(roleVersionJson)) {
+                ret = 
Long.valueOf(roleVersionJson.get(APP_DATA_ENTRY_ROLE_VERSION));
+            } else {
+                ret = 1L;
+            }
         } catch (Exception exception) {
             logger.warn("Unable to find the role version in Ranger Database");
         }
@@ -139,5 +135,27 @@ public class XXGlobalStateDao extends 
BaseDao<XXGlobalState> {
             return null;
         }
     }
+
+    private void createGlobalStateForRoleVersion(XXGlobalState globalState, 
String stateName) {
+        globalState.setStateName(stateName);
+        Map<String,String> roleVersion = new HashMap<>();
+        roleVersion.put(APP_DATA_ENTRY_ROLE_VERSION,new 
String(Long.toString(1L)));
+        globalState.setAppData(new Gson().toJson(roleVersion));
+        create(globalState);
+    }
+
+    private void updateGlobalStateForRoleVersion(XXGlobalState globalState, 
String stateName) {
+        Map<String,String> roleVersionJson = new 
Gson().fromJson(globalState.getAppData(),Map.class);
+        if (MapUtils.isNotEmpty(roleVersionJson)) {
+            Long roleVersion = 
Long.valueOf(roleVersionJson.get(APP_DATA_ENTRY_ROLE_VERSION)) + 1L;
+            roleVersionJson.put(APP_DATA_ENTRY_ROLE_VERSION, new 
String(Long.toString(roleVersion)));
+            globalState.setAppData(new Gson().toJson(roleVersionJson));
+            update(globalState);
+        } else {
+            //if not present create Global State for Role Version.
+            XXGlobalState xxGlobalState = new XXGlobalState();
+            createGlobalStateForRoleVersion(xxGlobalState, stateName);
+        }
+    }
 }
 
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java 
b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java
index 06a4063..0d46ca8 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java
@@ -222,4 +222,15 @@ public class XXPolicyDao extends BaseDao<XXPolicy> {
                return ret;
        }
 
+       public List<Long> findPolicyIdsByRoleNameAndServiceId(String roleName, 
Long serviceId) {
+               List<Long> ret = null;
+               try {
+                       return getEntityManager()
+                                       
.createNamedQuery("XXPolicy.findPolicyIdsByRoleNameAndServiceId", Long.class)
+                                       .setParameter("serviceId", serviceId)
+                                       .setParameter("roleName", 
roleName).getResultList();
+               } catch (Exception e) {
+               }
+               return ret;
+       }
 }
\ No newline at end of file
diff --git 
a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceVersionInfo.java
 
b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceVersionInfo.java
index 1d81337..5d0f886 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceVersionInfo.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceVersionInfo.java
@@ -137,7 +137,7 @@ public class XXServiceVersionInfo implements 
java.io.Serializable {
                return this.tagUpdateTime;
        }
 
-       public void setRolVersion(Long roleVersion) {
+       public void setRoleVersion(Long roleVersion) {
                this.roleVersion = roleVersion;
        }
 
@@ -166,6 +166,8 @@ public class XXServiceVersionInfo implements 
java.io.Serializable {
                str += "policyUpdateTime={" + policyUpdateTime + "} ";
                str += "tagVersion={" + tagVersion + "} ";
                str += "tagUpdateTime={" + tagUpdateTime + "} ";
+               str += "setRoleVersion={" + roleVersion + "}" ;
+               str += "setRoleUpdateTime={" + roleUpdateTime + "}" ;
                str += "}";
                return str;
        }
@@ -203,6 +205,12 @@ public class XXServiceVersionInfo implements 
java.io.Serializable {
                if ((this.tagUpdateTime == null && other.tagUpdateTime != null) 
|| (this.tagUpdateTime != null && 
!this.tagUpdateTime.equals(other.tagUpdateTime))) {
                        return false;
                }
+               if ((this.roleVersion == null && other.roleVersion != null) || 
(this.roleVersion != null && !this.roleVersion.equals(other.roleVersion))) {
+                       return false;
+               }
+               if ((this.roleUpdateTime == null && other.roleUpdateTime != 
null) || (this.roleUpdateTime != null && 
!this.roleUpdateTime.equals(other.roleUpdateTime))) {
+                       return false;
+               }
                return true;
        }
 
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/RoleREST.java 
b/security-admin/src/main/java/org/apache/ranger/rest/RoleREST.java
index d28cf3d..268c8c4 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/RoleREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/RoleREST.java
@@ -80,7 +80,7 @@ public class RoleREST {
 
     private static List<String> INVALID_USERS = new ArrayList<>();
 
-    public static final String Allowed_User_List_For_Download = 
"policy.download.auth.users";
+    public static final String POLICY_DOWNLOAD_USERS = 
"policy.download.auth.users";
 
     @Autowired
     RESTErrorUtil restErrorUtil;
@@ -798,13 +798,13 @@ public class RoleREST {
                     if (isKeyAdmin) {
                         isAllowed = true;
                     }else {
-                        isAllowed = bizUtil.isUserAllowed(rangerService, 
Allowed_User_List_For_Download);
+                        isAllowed = bizUtil.isUserAllowed(rangerService, 
POLICY_DOWNLOAD_USERS);
                     }
                 }else{
                     if (isAdmin) {
                         isAllowed = true;
                     }else{
-                        isAllowed = bizUtil.isUserAllowed(rangerService, 
Allowed_User_List_For_Download);
+                        isAllowed = bizUtil.isUserAllowed(rangerService, 
POLICY_DOWNLOAD_USERS);
                     }
                 }
 
diff --git a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml 
b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
index ab8e675..1a6b0bd 100755
--- a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
+++ b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
@@ -312,6 +312,15 @@
                <query>select DISTINCT(obj.service) from XXPolicy obj, 
XXPolicyRefRole policyRefRole where policyRefRole.roleId = :roleId and 
policyRefRole.policyId = obj.id</query>
        </named-query>
 
+       <named-query name="XXPolicy.findPolicyIdsByRoleNameAndServiceId">
+               <query>select roleRef.policyId
+                       from XXPolicy policy, XXPolicyRefRole roleRef
+                       where policy.service  = :serviceId
+                       and roleRef.policyId  = policy.id
+                       and roleRef.roleName  = :roleName
+               </query>
+       </named-query>
+
        <!-- XXServiceDef -->
        <named-query name="XXServiceDef.findByName">
                <query>select obj from XXServiceDef obj where obj.name = 
:name</query>

Reply via email to