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

madhan 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 1d0911703 RANGER-4542: updated zone search API to support search by 
zoneNamePartial
1d0911703 is described below

commit 1d091170344ec622d2f34e3bdeb292c48ecdd7c5
Author: prashant <[email protected]>
AuthorDate: Wed Nov 29 14:58:09 2023 +0530

    RANGER-4542: updated zone search API to support search by zoneNamePartial
    
    Signed-off-by: Madhan Neethiraj <[email protected]>
---
 .../ranger/plugin/store/AbstractPredicateUtil.java |  7 +++--
 .../plugin/store/SecurityZonePredicateUtil.java    | 34 ++++++++++++++++++++++
 .../org/apache/ranger/biz/SecurityZoneDBStore.java |  2 +-
 3 files changed, 39 insertions(+), 4 deletions(-)

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 07c561506..39aa15513 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
@@ -59,11 +59,12 @@ public class AbstractPredicateUtil {
                }
 
                Comparator<RangerBaseModelObject> sorter = getSorter(filter);
+               boolean isDesc = (filter.getSortType() != null) && 
"desc".equalsIgnoreCase(filter.getSortType());
 
-               if (sorter != null) {
-                       boolean isDesc = 
"desc".equalsIgnoreCase(filter.getSortType());
-
+               if (sorter != null){
                        Collections.sort(objList, isDesc ? new 
ReverseComparator(sorter) : sorter);
+               }else if(isDesc) {
+                       Collections.reverse(objList);
                }
        }
 
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/store/SecurityZonePredicateUtil.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/store/SecurityZonePredicateUtil.java
index 9164091ae..54b477502 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/store/SecurityZonePredicateUtil.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/store/SecurityZonePredicateUtil.java
@@ -39,6 +39,7 @@ public class SecurityZonePredicateUtil extends 
AbstractPredicateUtil {
         addPredicateForMatchingZoneId(filter.getParam(SearchFilter.ZONE_ID), 
predicates);
         
addPredicateForMatchingZoneName(filter.getParam(SearchFilter.ZONE_NAME), 
predicates);
         
addPredicateForNonMatchingZoneName(filter.getParam(SearchFilter.NOT_ZONE_NAME), 
predicates);
+               
addPredicateForMatchingZoneNamePartial(filter.getParam(SearchFilter.ZONE_NAME_PARTIAL),
 predicates);
     }
 
     private Predicate addPredicateForServiceName(final String serviceName, 
List<Predicate> predicates) {
@@ -170,5 +171,38 @@ public class SecurityZonePredicateUtil extends 
AbstractPredicateUtil {
 
         return ret;
     }
+
+       private Predicate addPredicateForMatchingZoneNamePartial(final String 
zoneName, List<Predicate> predicates) {
+               if (StringUtils.isEmpty(zoneName)) {
+                       return null;
+               }
+
+               Predicate ret = new Predicate() {
+                       @Override
+                       public boolean evaluate(Object object) {
+                               if (object == null) {
+                                       return false;
+                               }
+
+                               boolean ret = false;
+
+                               if (object instanceof RangerSecurityZone) {
+                                       RangerSecurityZone securityZone = 
(RangerSecurityZone) object;
+
+                                       if 
(StringUtils.contains(securityZone.getName(), zoneName)) {
+                                               ret = true;
+                                       }
+                               }
+
+                               return ret;
+                       }
+               };
+
+               if (predicates != null) {
+                       predicates.add(ret);
+               }
+
+               return ret;
+       }
 }
 
diff --git 
a/security-admin/src/main/java/org/apache/ranger/biz/SecurityZoneDBStore.java 
b/security-admin/src/main/java/org/apache/ranger/biz/SecurityZoneDBStore.java
index 6c6ddc49f..422dd0fe5 100755
--- 
a/security-admin/src/main/java/org/apache/ranger/biz/SecurityZoneDBStore.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/biz/SecurityZoneDBStore.java
@@ -213,7 +213,7 @@ public class SecurityZoneDBStore implements 
SecurityZoneStore {
             }
         }
 
-        if (CollectionUtils.isNotEmpty(ret) && filter != null && 
!filter.isEmpty()) {
+        if (CollectionUtils.isNotEmpty(ret) && filter != null) {
             List<RangerSecurityZone> copy = new ArrayList<>(ret);
 
             predicateUtil.applyFilter(copy, filter);

Reply via email to