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 7c805efe8 RANGER-4517: updated REST APIs handling of sortType when 
sortBy is not specified
7c805efe8 is described below

commit 7c805efe864f821d1f57d2cd296e0a2b8af02681
Author: Subhrat Chaudhary <such...@yahoo.com>
AuthorDate: Wed Nov 8 12:14:49 2023 -0800

    RANGER-4517: updated REST APIs handling of sortType when sortBy is not 
specified
    
    Signed-off-by: Madhan Neethiraj <mad...@apache.org>
---
 .../org/apache/ranger/common/RangerConstants.java  |  2 +
 .../org/apache/ranger/common/RangerSearchUtil.java | 69 +++++++++++++---------
 2 files changed, 44 insertions(+), 27 deletions(-)

diff --git 
a/security-admin/src/main/java/org/apache/ranger/common/RangerConstants.java 
b/security-admin/src/main/java/org/apache/ranger/common/RangerConstants.java
index f00ea05ca..4d03042fc 100644
--- a/security-admin/src/main/java/org/apache/ranger/common/RangerConstants.java
+++ b/security-admin/src/main/java/org/apache/ranger/common/RangerConstants.java
@@ -182,6 +182,8 @@ public class RangerConstants extends RangerCommonEnums {
                        RangerConstants.ROLE_SYS_ADMIN, 
RangerConstants.ROLE_KEY_ADMIN, RangerConstants.ROLE_ADMIN_AUDITOR,
                        RangerConstants.ROLE_KEY_ADMIN_AUDITOR));
 
+       public static final String DEFAULT_SORT_ORDER       = "asc";
+
        public static enum RBAC_PERM {
                ALLOW_NONE,
                ALLOW_READ,
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 5ddc965a4..62ff8e135 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
@@ -194,25 +194,27 @@ public class RangerSearchUtil extends SearchUtil {
                                StringUtil.VALIDATION_ALPHA, "Invalid value for 
parameter sortBy", MessageEnums.INVALID_INPUT_DATA,
                                null, SearchFilter.SORT_BY);
 
-               boolean sortSet = false;
                if (!StringUtils.isEmpty(sortBy)) {
+                       boolean sortSet = false;
+
                        for (SortField sortField : sortFields) {
                                if 
(sortField.getParamName().equalsIgnoreCase(sortBy)) {
                                        ret.setSortBy(sortField.getParamName());
-                                       String sortType = 
restErrorUtil.validateString(request.getParameter("sortType"),
-                                                       
StringUtil.VALIDATION_ALPHA, "Invalid value for parameter sortType",
-                                                       
MessageEnums.INVALID_INPUT_DATA, null, "sortType");
-                                       ret.setSortType(sortType);
                                        sortSet = true;
                                        break;
                                }
                        }
-               }
 
-               if (!sortSet && !StringUtils.isEmpty(sortBy)) {
-                       logger.info("Invalid or unsupported sortBy field 
passed. sortBy=" + sortBy, new Throwable());
+                       if (!sortSet) {
+                               logger.info("Invalid or unsupported sortBy 
field passed. sortBy=" + sortBy, new Throwable());
+                       }
                }
-               
+
+               String sortType = 
restErrorUtil.validateString(request.getParameter("sortType"),
+                               StringUtil.VALIDATION_ALPHA, "Invalid value for 
parameter sortType",
+                               MessageEnums.INVALID_INPUT_DATA, null, 
"sortType");
+               ret.setSortType(sortType);
+
                if(ret.getParams() == null) {
                        ret.setParams(new HashMap<String, String>());
                }
@@ -383,11 +385,14 @@ public class RangerSearchUtil extends SearchUtil {
        }
        
        public String constructSortClause(SearchFilter searchCriteria, 
List<SortField> sortFields) {
-               String sortBy = searchCriteria.getSortBy();
+               String ret         = null;
+               String sortBy      = searchCriteria.getSortBy();
+               String sortType    = getSortType(searchCriteria);
                String querySortBy = null;
                
                if (!stringUtil.isEmpty(sortBy)) {
                        sortBy = sortBy.trim();
+
                        for (SortField sortField : sortFields) {
                                if 
(sortBy.equalsIgnoreCase(sortField.getParamName())) {
                                        querySortBy = sortField.getFieldName();
@@ -404,30 +409,40 @@ public class RangerSearchUtil extends SearchUtil {
                                        querySortBy = sortField.getFieldName();
                                        // Override the sortBy using the 
default value
                                        
searchCriteria.setSortBy(sortField.getParamName());
-                                       
searchCriteria.setSortType(sortField.getDefaultOrder().name());
+
+                                       if(sortType == null) {
+                                               sortType = 
sortField.getDefaultOrder().name();
+                                       }
+
+                                       searchCriteria.setSortType(sortType);
                                        break;
                                }
                        }
                }
 
                if (querySortBy != null) {
-                       String sortType = searchCriteria.getSortType();
-                       String querySortType = "asc";
-                       if (sortType != null) {
-                               if ("asc".equalsIgnoreCase(sortType) || 
"desc".equalsIgnoreCase(sortType)) {
-                                       querySortType = sortType;
-                               } else {
-                                       logger.error("Invalid sortType. 
sortType=" + sortType);
-                               }
-                       }
-                       
-                       if(querySortType!=null){
-                               
searchCriteria.setSortType(querySortType.toLowerCase());
-                       }
-                       String sortClause = " ORDER BY " + querySortBy + " " + 
querySortType;
+                       String querySortType = stringUtil.isEmpty(sortType) ? 
RangerConstants.DEFAULT_SORT_ORDER : sortType;
+
+                       searchCriteria.setSortType(querySortType.toLowerCase());
 
-                       return sortClause;
+                       ret = " ORDER BY " + querySortBy + " " + querySortType;
                }
-               return null;
+
+               return ret;
+       }
+
+       private String getSortType(SearchFilter searchCriteria) {
+               String ret      = null;
+               String sortType = searchCriteria.getSortType();
+
+               if (!stringUtil.isEmpty(sortType)) {
+                       if ("asc".equalsIgnoreCase(sortType) || 
"desc".equalsIgnoreCase(sortType)) {
+                               ret = sortType;
+                       } else {
+                               logger.error("Invalid sortType. sortType=" + 
sortType);
+                       }
+               }
+
+               return ret;
        }
 }

Reply via email to