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

commit 58a75b1a2880bd975626f1dc5a1fd7eaa3fe7c7a
Author: princeap173 <[email protected]>
AuthorDate: Thu Dec 14 10:06:02 2023 +0530

    RANGER-4605: /assets/resources/count does not return proper count if 
policies are greater than 200
    
    Signed-off-by: Madhan Neethiraj <[email protected]>
---
 .../java/org/apache/ranger/rest/AssetREST.java     | 33 ++++++++++++++++++++--
 1 file changed, 31 insertions(+), 2 deletions(-)

diff --git a/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java 
b/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java
index e5ef779f4..be077e789 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java
@@ -22,7 +22,9 @@
 import java.io.File;
 import java.security.cert.X509Certificate;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -446,12 +448,39 @@ public class AssetREST {
                        logger.debug("==> AssetREST.countXResources()");
                }
 
+               SearchFilter filter = 
searchUtil.getSearchFilterFromLegacyRequest(request, 
xResourceService.sortFields);
+
+               filter.setMaxRows(Integer.MAX_VALUE);
+
+               List<RangerPolicy> policies      = 
serviceREST.getPolicies(filter);
+               int                policiesCount = 0;
+
+               if (policies != null) {
+                       Map<String, RangerService> services = new HashMap<>();
+
+                       for (RangerPolicy policy : policies) {
+                               RangerService service = 
services.get(policy.getService());
+
+                               if (service == null) {
+                                       service = 
serviceREST.getServiceByName(policy.getService());
+
+                                       services.put(policy.getService(), 
service);
+                               }
+
+                               VXResource resource = 
serviceUtil.toVXResource(policy, service);
+
+                               if (resource != null) {
+                                       policiesCount++;
+                               }
+                       }
+               }
+
                VXLong ret = new VXLong();
 
-               ret.setValue(searchXResources(request).getListSize());
+               ret.setValue(policiesCount);
 
                if(logger.isDebugEnabled()) {
-                       logger.debug("<== AssetREST.countXAssets(): " + ret);
+                       logger.debug("<== AssetREST.countXResources(): " + ret);
                }
 
                return ret;

Reply via email to