Repository: incubator-ranger
Updated Branches:
  refs/heads/master fbf4f3533 -> d94aecff9


RANGER-789: fix policy-listing for non-admin users


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

Branch: refs/heads/master
Commit: d94aecff9374dfa4a93685c8d215b55af219b68d
Parents: fbf4f35
Author: Madhan Neethiraj <[email protected]>
Authored: Wed Dec 16 03:27:21 2015 -0800
Committer: Madhan Neethiraj <[email protected]>
Committed: Mon Dec 21 17:58:30 2015 -0800

----------------------------------------------------------------------
 .../plugin/store/AbstractPredicateUtil.java     | 194 ++++++++++++++++++-
 .../org/apache/ranger/biz/ServiceDBStore.java   |  23 ++-
 .../apache/ranger/common/RangerSearchUtil.java  |   2 +-
 .../org/apache/ranger/rest/ServiceREST.java     | 176 +++++++++++------
 .../org/apache/ranger/rest/TestServiceREST.java |  10 +-
 5 files changed, 336 insertions(+), 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d94aecff/agents-common/src/main/java/org/apache/ranger/plugin/store/AbstractPredicateUtil.java
----------------------------------------------------------------------
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/store/AbstractPredicateUtil.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/store/AbstractPredicateUtil.java
index abfb350..62b9bca 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/store/AbstractPredicateUtil.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/store/AbstractPredicateUtil.java
@@ -79,16 +79,23 @@ public class AbstractPredicateUtil {
        }
 
        public void addPredicates(SearchFilter filter, List<Predicate> 
predicates) {
+               
addPredicateForServiceType(filter.getParam(SearchFilter.SERVICE_TYPE), 
predicates);
                
addPredicateForServiceTypeId(filter.getParam(SearchFilter.SERVICE_TYPE_ID), 
predicates);
                
addPredicateForServiceName(filter.getParam(SearchFilter.SERVICE_NAME), 
predicates);
+               // 
addPredicateForServiceId(filter.getParam(SearchFilter.SERVICE_ID), predicates); 
// not supported
                
addPredicateForPolicyName(filter.getParam(SearchFilter.POLICY_NAME), 
predicates);
                
addPredicateForPolicyId(filter.getParam(SearchFilter.POLICY_ID), predicates);
                
addPredicateForIsEnabled(filter.getParam(SearchFilter.IS_ENABLED), predicates);
                
addPredicateForIsRecursive(filter.getParam(SearchFilter.IS_RECURSIVE), 
predicates);
+               
addPredicateForTagServiceName(filter.getParam(SearchFilter.TAG_SERVICE_NAME), 
predicates);
+               // 
addPredicateForTagServiceId(filter.getParam(SearchFilter.TAG_SERVICE_ID), 
predicates); // not supported
                addPredicateForUserName(filter.getParam(SearchFilter.USER), 
predicates);
                addPredicateForGroupName(filter.getParam(SearchFilter.GROUP), 
predicates);
-               
addPredicateForResourceSignature(filter.getParam(SearchFilter.RESOURCE_SIGNATURE),
 predicates);
                
addPredicateForResources(filter.getParamsWithPrefix(SearchFilter.RESOURCE_PREFIX,
 true), predicates);
+               
addPredicateForPolicyResource(filter.getParam(SearchFilter.POL_RESOURCE), 
predicates);
+               
addPredicateForPartialPolicyName(filter.getParam(SearchFilter.POLICY_NAME_PARTIAL),
 predicates);
+               
addPredicateForResourceSignature(filter.getParam(SearchFilter.RESOURCE_SIGNATURE),
 predicates);
+               
addPredicateForPolicyType(filter.getParam(SearchFilter.POLICY_TYPE), 
predicates);
        }
 
        public Comparator<RangerBaseModelObject> getSorter(SearchFilter filter) 
{
@@ -216,6 +223,40 @@ public class AbstractPredicateUtil {
                sorterMap.put(SearchFilter.UPDATE_TIME, updateTimeComparator);
        }
 
+       private Predicate addPredicateForServiceType(final String serviceType, 
List<Predicate> predicates) {
+               if(StringUtils.isEmpty(serviceType)) {
+                       return null;
+               }
+
+               Predicate ret = new Predicate() {
+                       @Override
+                       public boolean evaluate(Object object) {
+                               if(object == null) {
+                                       return false;
+                               }
+
+                               boolean ret = false;
+
+                               if(object instanceof RangerServiceDef) {
+                                       RangerServiceDef serviceDef = 
(RangerServiceDef)object;
+                                       String           svcType    = 
serviceDef.getName();
+
+                                       ret = StringUtils.equals(svcType, 
serviceType);
+                               } else {
+                                       ret = true;
+                               }
+
+                               return ret;
+                       }
+               };
+
+               if(predicates != null) {
+                       predicates.add(ret);
+               }
+
+               return ret;
+       }
+
        private Predicate addPredicateForServiceTypeId(final String 
serviceTypeId, List<Predicate> predicates) {
                if(StringUtils.isEmpty(serviceTypeId)) {
                        return null;
@@ -322,6 +363,39 @@ public class AbstractPredicateUtil {
                return ret;
        }
 
+       private Predicate addPredicateForPartialPolicyName(final String 
policyName, List<Predicate> predicates) {
+               if(StringUtils.isEmpty(policyName)) {
+                       return null;
+               }
+
+               Predicate ret = new Predicate() {
+                       @Override
+                       public boolean evaluate(Object object) {
+                               if(object == null) {
+                                       return false;
+                               }
+
+                               boolean ret = false;
+
+                               if(object instanceof RangerPolicy) {
+                                       RangerPolicy policy = 
(RangerPolicy)object;
+
+                                       ret = 
StringUtils.containsIgnoreCase(policy.getName(), policyName);
+                               } else {
+                                       ret = true;
+                               }
+
+                               return ret;
+                       }
+               };
+
+               if(predicates != null) {
+                       predicates.add(ret);
+               }
+
+               return ret;
+       }
+
        private Predicate addPredicateForPolicyId(final String policyId, 
List<Predicate> predicates) {
                if(StringUtils.isEmpty(policyId)) {
                        return null;
@@ -557,6 +631,58 @@ public class AbstractPredicateUtil {
                return ret;
        }
 
+       private Predicate addPredicateForPolicyResource(final String 
resourceValue, List<Predicate> predicates) {
+               if(StringUtils.isEmpty(resourceValue)) {
+                       return null;
+               }
+
+               Predicate ret = new Predicate() {
+                       @Override
+                       public boolean evaluate(Object object) {
+                               if(object == null) {
+                                       return false;
+                               }
+
+                               boolean ret = false;
+
+                               if(object instanceof RangerPolicy) {
+                                       RangerPolicy                      
policy          = (RangerPolicy)object;
+                                       Map<String, RangerPolicyResource> 
policyResources = policy.getResources();
+
+                                       
if(MapUtils.isNotEmpty(policyResources)) {
+                                               for(String resourceName : 
policyResources.keySet()) {
+                                                       RangerPolicyResource 
policyResource = policyResources.get(resourceName);
+
+                                                       if(policyResource != 
null && CollectionUtils.isNotEmpty(policyResource.getValues())) {
+                                                               for(String 
policyResourceVal : policyResource.getValues()) {
+                                                                       
if(StringUtils.containsIgnoreCase(policyResourceVal, resourceValue)) {
+                                                                               
ret = true;
+
+                                                                               
break;
+                                                                       }
+                                                               }
+                                                       }
+
+                                                       if(ret) {
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                               } else {
+                                       ret = true;
+                               }
+
+                               return ret;
+                       }
+               };
+
+               if(predicates != null) {
+                       predicates.add(ret);
+               }
+
+               return ret;
+       }
+
        private Predicate addPredicateForIsRecursive(final String 
isRecursiveStr, List<Predicate> predicates) {
                if(StringUtils.isEmpty(isRecursiveStr)) {
                        return null;
@@ -604,6 +730,39 @@ public class AbstractPredicateUtil {
                return ret;
        }
 
+       private Predicate addPredicateForTagServiceName(final String 
tagServiceName, List<Predicate> predicates) {
+               if(StringUtils.isEmpty(tagServiceName)) {
+                       return null;
+               }
+
+               Predicate ret = new Predicate() {
+                       @Override
+                       public boolean evaluate(Object object) {
+                               if(object == null) {
+                                       return false;
+                               }
+
+                               boolean ret = false;
+
+                               if(object instanceof RangerService) {
+                                       RangerService service = 
(RangerService)object;
+
+                                       ret = 
StringUtils.equals(tagServiceName, service.getTagService());
+                               } else {
+                                       ret = true;
+                               }
+
+                               return ret;
+                       }
+               };
+
+               if(ret != null) {
+                       predicates.add(ret);
+               }
+
+               return ret;
+       }
+
        private Predicate addPredicateForResourceSignature(String signature, 
List<Predicate> predicates) {
 
                Predicate ret = createPredicateForResourceSignature(signature);
@@ -614,6 +773,39 @@ public class AbstractPredicateUtil {
 
                return ret;
        }
+
+       private Predicate addPredicateForPolicyType(final String policyType, 
List<Predicate> predicates) {
+               if(StringUtils.isEmpty(policyType)) {
+                       return null;
+               }
+
+               Predicate ret = new Predicate() {
+                       @Override
+                       public boolean evaluate(Object object) {
+                               if(object == null) {
+                                       return false;
+                               }
+
+                               boolean ret = true;
+
+                               if(object instanceof RangerPolicy) {
+                                       RangerPolicy policy = 
(RangerPolicy)object;
+
+                                       if(policy.getPolicyType() != null) {
+                                               ret = 
StringUtils.equalsIgnoreCase(policyType, policy.getPolicyType().toString());
+                                       }
+                               }
+
+                               return ret;
+                       }
+               };
+
+               if(predicates != null) {
+                       predicates.add(ret);
+               }
+
+               return ret;
+       }
        
        /**
         * @param policySignature

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d94aecff/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
----------------------------------------------------------------------
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 80d8dd3..38091bd 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
@@ -1641,7 +1641,13 @@ public class ServiceDBStore extends AbstractServiceStore 
{
                        throw new Exception("service does not exist - id='" + 
serviceId);
                }
 
-               List<RangerPolicy> ret = getServicePolicies(service.getName(), 
filter);
+               RangerPolicyRetriever policyRetriever = new 
RangerPolicyRetriever(daoMgr);
+
+               List<RangerPolicy> ret = 
policyRetriever.getServicePolicies(service);
+
+               if(filter != null) {
+                       predicateUtil.applyFilter(ret, filter);
+               }
 
                return ret;
        }
@@ -1658,7 +1664,6 @@ public class ServiceDBStore extends AbstractServiceStore {
                        throw new Exception("service does not exist - id='" + 
serviceId);
                }
 
-
                PList<RangerPolicy> ret = 
getPaginatedServicePolicies(service.getName(), filter);
 
                return ret;
@@ -1670,13 +1675,19 @@ public class ServiceDBStore extends 
AbstractServiceStore {
                        LOG.debug("==> ServiceDBStore.getServicePolicies(" + 
serviceName + ")");
                }
 
-               if(filter == null) {
-                       filter = new SearchFilter();
+               XXService service = 
daoMgr.getXXService().findByName(serviceName);
+
+               if (service == null) {
+                       throw new Exception("service does not exist - name='" + 
serviceName);
                }
 
-               filter.setParam(SearchFilter.SERVICE_NAME, serviceName);
+               RangerPolicyRetriever policyRetriever = new 
RangerPolicyRetriever(daoMgr);
 
-               List<RangerPolicy> ret = getPolicies(filter);
+               List<RangerPolicy> ret = 
policyRetriever.getServicePolicies(service);
+
+               if(filter != null) {
+                       predicateUtil.applyFilter(ret, filter);
+               }
 
                if(LOG.isDebugEnabled()) {
                        LOG.debug("<== ServiceDBStore.getServicePolicies(" + 
serviceName + "): count=" + ((ret == null) ? 0 : ret.size()));

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d94aecff/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java 
b/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
index 141e634..cf66fc1 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
@@ -159,7 +159,7 @@ public class RangerSearchUtil extends SearchUtil {
                int pageSize = 
restErrorUtil.parseInt(request.getParameter(SearchFilter.PAGE_SIZE),
                                configUtil.getDefaultMaxRows(), "Invalid value 
for parameter pageSize",
                                MessageEnums.INVALID_INPUT_DATA, null, 
SearchFilter.PAGE_SIZE);
-               ret.setMaxRows(pageSize);
+               ret.setMaxRows(validatePageSize(pageSize));
 
                
ret.setGetCount(restErrorUtil.parseBoolean(request.getParameter("getCount"), 
true));
                String sortBy = 
restErrorUtil.validateString(request.getParameter(SearchFilter.SORT_BY),

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d94aecff/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java 
b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
index 7d41f07..3c00e63 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
@@ -40,6 +40,7 @@ import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -1256,32 +1257,42 @@ public class ServiceREST {
                        LOG.debug("==> ServiceREST.getPolicies()");
                }
 
-               RangerPolicyList ret  = null;
+               RangerPolicyList ret  = new RangerPolicyList();
                RangerPerfTracer perf = null;
 
-               PList<RangerPolicy> paginatedPolicies = null;
-
                SearchFilter filter = searchUtil.getSearchFilter(request, 
policyService.sortFields);
 
                try {
                        if(RangerPerfTracer.isPerfTraceEnabled(PERF_LOG)) {
                                perf = RangerPerfTracer.getPerfTracer(PERF_LOG, 
"ServiceREST.getPolicies()");
                        }
-                       paginatedPolicies = 
svcStore.getPaginatedPolicies(filter);
 
-                       if(paginatedPolicies != null) {
-                               ret = new RangerPolicyList();
+                       if(isAdminUserWithNoFilterParams(filter)) {
+                               PList<RangerPolicy> policies = 
svcStore.getPaginatedPolicies(filter);
+
+                               ret = toRangerPolicyList(policies);
+                       } else {
+                               // get all policies from the store; pick the 
page to return after applying filter
+                               int savedStartIndex = filter == null ? 0 : 
filter.getStartIndex();
+                               int savedMaxRows    = filter == null ? 
Integer.MAX_VALUE : filter.getMaxRows();
 
-                               ret.setPolicies(paginatedPolicies.getList());
-                               
ret.setPageSize(paginatedPolicies.getPageSize());
-                               
ret.setResultSize(paginatedPolicies.getResultSize());
-                               
ret.setStartIndex(paginatedPolicies.getStartIndex());
-                               
ret.setTotalCount(paginatedPolicies.getTotalCount());
-                               ret.setSortBy(paginatedPolicies.getSortBy());
-                               
ret.setSortType(paginatedPolicies.getSortType());
+                               if(filter != null) {
+                                       filter.setStartIndex(0);
+                                       filter.setMaxRows(Integer.MAX_VALUE);
+                               }
+
+                               List<RangerPolicy> policies = 
svcStore.getPolicies(filter);
+
+                               if(filter != null) {
+                                       filter.setStartIndex(savedStartIndex);
+                                       filter.setMaxRows(savedMaxRows);
+                               }
 
-                               applyAdminAccessFilter(ret);
+                               applyAdminAccessFilter(policies);
+
+                               ret = toRangerPolicyList(policies, filter);
                        }
+
                } catch(WebApplicationException excp) {
                        throw excp;
                } catch (Throwable excp) {
@@ -1376,31 +1387,40 @@ public class ServiceREST {
                        LOG.debug("==> ServiceREST.getServicePolicies(" + 
serviceId + ")");
                }
 
-               RangerPolicyList ret  = null;
+               RangerPolicyList ret  = new RangerPolicyList();
                RangerPerfTracer perf = null;
 
-               PList<RangerPolicy> paginatedPolicies = null;
-
                SearchFilter filter = searchUtil.getSearchFilter(request, 
policyService.sortFields);
 
                try {
                        if(RangerPerfTracer.isPerfTraceEnabled(PERF_LOG)) {
                                perf = RangerPerfTracer.getPerfTracer(PERF_LOG, 
"ServiceREST.getServicePolicies(serviceId=" + serviceId + ")");
                        }
-                       paginatedPolicies = 
svcStore.getPaginatedServicePolicies(serviceId, filter);
 
-                       if(paginatedPolicies != null) {
-                               ret = new RangerPolicyList();
+                       if(isAdminUserWithNoFilterParams(filter)) {
+                               PList<RangerPolicy> policies = 
svcStore.getPaginatedServicePolicies(serviceId, filter);
 
-                               ret.setPolicies(paginatedPolicies.getList());
-                               
ret.setPageSize(paginatedPolicies.getPageSize());
-                               
ret.setResultSize(paginatedPolicies.getResultSize());
-                               
ret.setStartIndex(paginatedPolicies.getStartIndex());
-                               
ret.setTotalCount(paginatedPolicies.getTotalCount());
-                               ret.setSortBy(paginatedPolicies.getSortBy());
-                               
ret.setSortType(paginatedPolicies.getSortType());
+                               ret = toRangerPolicyList(policies);
+                       } else {
+                               // get all policies from the store; pick the 
page to return after applying filter
+                               int savedStartIndex = filter == null ? 0 : 
filter.getStartIndex();
+                               int savedMaxRows    = filter == null ? 
Integer.MAX_VALUE : filter.getMaxRows();
+
+                               if(filter != null) {
+                                       filter.setStartIndex(0);
+                                       filter.setMaxRows(Integer.MAX_VALUE);
+                               }
 
-                               applyAdminAccessFilter(ret);
+                               List<RangerPolicy> servicePolicies = 
svcStore.getServicePolicies(serviceId, filter);
+
+                               if(filter != null) {
+                                       filter.setStartIndex(savedStartIndex);
+                                       filter.setMaxRows(savedMaxRows);
+                               }
+
+                               applyAdminAccessFilter(servicePolicies);
+
+                               ret = toRangerPolicyList(servicePolicies, 
filter);
                        }
                } catch(WebApplicationException excp) {
                        throw excp;
@@ -1412,10 +1432,6 @@ public class ServiceREST {
                        RangerPerfTracer.log(perf);
                }
 
-               if (ret == null) {
-                       LOG.info("No Policies found for given service id: " + 
serviceId);
-               }
-
                if (LOG.isDebugEnabled()) {
                        LOG.debug("<== ServiceREST.getServicePolicies(" + 
serviceId + "): count="
                                        + (ret == null ? 0 : 
ret.getListSize()));
@@ -1432,31 +1448,40 @@ public class ServiceREST {
                        LOG.debug("==> ServiceREST.getServicePolicies(" + 
serviceName + ")");
                }
 
-               RangerPolicyList ret  = null;
+               RangerPolicyList ret  = new RangerPolicyList();
                RangerPerfTracer perf = null;
 
-               PList<RangerPolicy> paginatedPolicies = null;
-
                SearchFilter filter = searchUtil.getSearchFilter(request, 
policyService.sortFields);
 
                try {
                        if(RangerPerfTracer.isPerfTraceEnabled(PERF_LOG)) {
                                perf = RangerPerfTracer.getPerfTracer(PERF_LOG, 
"ServiceREST.getServicePolicies(serviceName=" + serviceName + ")");
                        }
-                       paginatedPolicies = 
svcStore.getPaginatedServicePolicies(serviceName, filter);
 
-                       if(paginatedPolicies != null) {
-                               ret = new RangerPolicyList();
+                       if(isAdminUserWithNoFilterParams(filter)) {
+                               PList<RangerPolicy> policies = 
svcStore.getPaginatedServicePolicies(serviceName, filter);
+
+                               ret = toRangerPolicyList(policies);
+                       } else {
+                               // get all policies from the store; pick the 
page to return after applying filter
+                               int savedStartIndex = filter == null ? 0 : 
filter.getStartIndex();
+                               int savedMaxRows    = filter == null ? 
Integer.MAX_VALUE : filter.getMaxRows();
+
+                               if(filter != null) {
+                                       filter.setStartIndex(0);
+                                       filter.setMaxRows(Integer.MAX_VALUE);
+                               }
 
-                               ret.setPolicies(paginatedPolicies.getList());
-                               
ret.setPageSize(paginatedPolicies.getPageSize());
-                               
ret.setResultSize(paginatedPolicies.getResultSize());
-                               
ret.setStartIndex(paginatedPolicies.getStartIndex());
-                               
ret.setTotalCount(paginatedPolicies.getTotalCount());
-                               ret.setSortBy(paginatedPolicies.getSortBy());
-                               
ret.setSortType(paginatedPolicies.getSortType());
+                               List<RangerPolicy> servicePolicies = 
svcStore.getServicePolicies(serviceName, filter);
 
-                               applyAdminAccessFilter(ret);
+                               if(filter != null) {
+                                       filter.setStartIndex(savedStartIndex);
+                                       filter.setMaxRows(savedMaxRows);
+                               }
+
+                               applyAdminAccessFilter(servicePolicies);
+
+                               ret = toRangerPolicyList(servicePolicies, 
filter);
                        }
                } catch(WebApplicationException excp) {
                        throw excp;
@@ -1468,10 +1493,6 @@ public class ServiceREST {
                        RangerPerfTracer.log(perf);
                }
 
-               if (ret == null) {
-                       LOG.info("No Policies found for given service name: " + 
serviceName);
-               }
-
                if (LOG.isDebugEnabled()) {
                        LOG.debug("<== ServiceREST.getServicePolicies(" + 
serviceName + "): count="
                                        + (ret == null ? 0 : 
ret.getListSize()));
@@ -1773,12 +1794,6 @@ public class ServiceREST {
                return svcStore.getPolicyForVersionNumber(policyId, versionNo);
        }
 
-       private void applyAdminAccessFilter(RangerPolicyList policies) {
-               if(policies != null && 
!CollectionUtils.isEmpty(policies.getList())) {
-                       applyAdminAccessFilter(policies.getPolicies());
-               }
-       }
-
        private void applyAdminAccessFilter(List<RangerPolicy> policies) {
                boolean isAdmin = bizUtil.isAdmin();
                boolean isKeyAdmin = bizUtil.isKeyAdmin();
@@ -1912,4 +1927,53 @@ public class ServiceREST {
                return String.valueOf(bizUtil.isSSOEnabled());
        }
 
+       boolean isAdminUserWithNoFilterParams(SearchFilter filter) {
+               return (filter == null || MapUtils.isEmpty(filter.getParams())) 
&&
+                          (bizUtil.isAdmin() || bizUtil.isKeyAdmin());
+       }
+
+       private RangerPolicyList toRangerPolicyList(PList<RangerPolicy> 
policyList) {
+               RangerPolicyList ret = new RangerPolicyList();
+
+               if(policyList != null) {
+                       ret.setPolicies(policyList.getList());
+                       ret.setPageSize(policyList.getPageSize());
+                       ret.setResultSize(policyList.getResultSize());
+                       ret.setStartIndex(policyList.getStartIndex());
+                       ret.setTotalCount(policyList.getTotalCount());
+                       ret.setSortBy(policyList.getSortBy());
+                       ret.setSortType(policyList.getSortType());
+               }
+
+               return ret;
+       }
+
+       private RangerPolicyList toRangerPolicyList(List<RangerPolicy> 
policyList, SearchFilter filter) {
+               RangerPolicyList ret = new RangerPolicyList();
+
+               if(CollectionUtils.isNotEmpty(policyList)) {
+                       int    totalCount = policyList.size();
+                       int    startIndex = filter == null ? 0 : 
filter.getStartIndex();
+                       int    pageSize   = filter == null ? totalCount : 
filter.getMaxRows();
+                       int    toIndex    = Math.min(startIndex + pageSize, 
totalCount);
+                       String sortType   = filter == null ? null : 
filter.getSortType();
+                       String sortBy     = filter == null ? null : 
filter.getSortBy();
+
+                       List<RangerPolicy> retList = new 
ArrayList<RangerPolicy>();
+                       for(int i = startIndex; i < toIndex; i++) {
+                               retList.add(policyList.get(i));
+                       }
+
+                       ret.setPolicies(retList);
+                       ret.setPageSize(pageSize);
+                       ret.setResultSize(retList.size());
+                       ret.setStartIndex(startIndex);
+                       ret.setTotalCount(totalCount);
+                       ret.setSortBy(sortBy);
+                       ret.setSortType(sortType);
+               }
+
+               return ret;
+       }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d94aecff/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java 
b/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java
index 339f1e7..d7af3c2 100644
--- a/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java
+++ b/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java
@@ -880,7 +880,8 @@ public class TestServiceREST {
                                searchUtil.getSearchFilter(request, 
policyService.sortFields))
                                .thenReturn(filter);
                RangerPolicyList dbRangerPolicy = 
serviceREST.getPolicies(request);
-               Assert.assertNull(dbRangerPolicy);
+               Assert.assertNotNull(dbRangerPolicy);
+               Assert.assertEquals(dbRangerPolicy.getListSize(), 0);
                Mockito.verify(searchUtil).getSearchFilter(request,
                                policyService.sortFields);
        }
@@ -903,7 +904,6 @@ public class TestServiceREST {
                Assert.assertNotNull(data);
                Mockito.verify(searchUtil).getSearchFilter(request,
                                policyService.sortFields);
-               Mockito.verify(svcStore).getPaginatedPolicies(filter);
        }
 
        @Test
@@ -927,7 +927,7 @@ public class TestServiceREST {
                Assert.assertNotNull(dbRangerPolicy);
                Mockito.verify(searchUtil).getSearchFilter(request,
                                policyService.sortFields);
-               Mockito.verify(svcStore).getPaginatedServicePolicies(Id, 
filter);
+               Mockito.verify(svcStore).getServicePolicies(Id, filter);
        }
 
        @Test
@@ -935,7 +935,7 @@ public class TestServiceREST {
                HttpServletRequest request = 
Mockito.mock(HttpServletRequest.class);
                RangerPolicy rangerPolicy = rangerPolicy();
 
-               PList<RangerPolicy> ret  = Mockito.mock(PList.class);
+               List<RangerPolicy> ret  = Mockito.mock(List.class);
                SearchFilter filter = new SearchFilter();
                filter.setParam(SearchFilter.POLICY_NAME, "policyName");
                filter.setParam(SearchFilter.SERVICE_NAME, "serviceName");
@@ -944,7 +944,7 @@ public class TestServiceREST {
                                .thenReturn(filter);
 
                Mockito.when(
-                               
svcStore.getPaginatedServicePolicies(rangerPolicy.getName(),
+                               
svcStore.getServicePolicies(rangerPolicy.getName(),
                                                filter)).thenReturn(ret);
 
                RangerPolicyList dbRangerPolicy = 
serviceREST.getServicePoliciesByName(

Reply via email to