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