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

madhan pushed a commit to branch RANGER-3923
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/RANGER-3923 by this push:
     new 955f6a7f1 RANGER-4446: added API to return dataset summary
955f6a7f1 is described below

commit 955f6a7f181128205316571d1c7797bced09861d
Author: Subhrat Chaudhary <such...@yahoo.com>
AuthorDate: Fri Oct 6 00:18:39 2023 -0700

    RANGER-4446: added API to return dataset summary
    
    Signed-off-by: Madhan Neethiraj <mad...@apache.org>
---
 .../org/apache/ranger/plugin/model/RangerGds.java  | 195 +++++++++++++++++++++
 .../java/org/apache/ranger/biz/GdsDBStore.java     | 178 +++++++++++++------
 .../main/java/org/apache/ranger/rest/GdsREST.java  |  22 +--
 .../ranger/security/context/RangerAPIList.java     |   2 +-
 .../service/RangerGdsSharedResourceService.java    |  10 +-
 5 files changed, 340 insertions(+), 67 deletions(-)

diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerGds.java 
b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerGds.java
index fd27f54a9..8b27b9769 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerGds.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerGds.java
@@ -22,6 +22,7 @@ package org.apache.ranger.plugin.model;
 import 
org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemDataMaskInfo;
 import 
org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemRowFilterInfo;
 import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
+import org.apache.ranger.plugin.model.RangerPrincipal.PrincipalType;
 
 import org.codehaus.jackson.annotate.JsonAutoDetect;
 import org.codehaus.jackson.annotate.JsonIgnoreProperties;
@@ -479,4 +480,198 @@ public class RangerGds {
             return sb;
         }
     }
+
+    @JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
+    @JsonSerialize(include = JsonSerialize.Inclusion.NON_EMPTY)
+    @JsonIgnoreProperties(ignoreUnknown = true)
+    public static class DatasetSummary extends RangerBaseModelObject 
implements java.io.Serializable {
+        private static final long serialVersionUID = 1L;
+
+        private String                          name;
+        private GdsPermission                   permissionForCaller;
+        private Map<PrincipalType, Long>        principalsCount;
+        private Long                            projectsCount;
+        private Long                            totalResourceCount;
+        private List<DataShareInDatasetSummary> dataShares;
+
+        public DatasetSummary() {
+            super();
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public GdsPermission getPermissionForCaller() {
+            return permissionForCaller;
+        }
+
+        public void setPermissionForCaller(GdsPermission permissionForCaller) {
+            this.permissionForCaller = permissionForCaller;
+        }
+
+        public Map<PrincipalType, Long> getPrincipalsCount() {
+            return principalsCount;
+        }
+
+        public void setPrincipalsCount(Map<PrincipalType, Long> 
principalsCount) {
+            this.principalsCount = principalsCount;
+        }
+
+        public Long getProjectsCount() {
+            return projectsCount;
+        }
+
+        public void setProjectsCount(Long projectsCount) {
+            this.projectsCount = projectsCount;
+        }
+
+        public Long getTotalResourceCount() {
+            return totalResourceCount;
+        }
+
+        public void setTotalResourceCount(Long totalResourceCount) {
+            this.totalResourceCount = totalResourceCount;
+        }
+
+        public List<DataShareInDatasetSummary> getDataShares() {
+            return dataShares;
+        }
+
+        public void setDataShares(List<DataShareInDatasetSummary> dataShares) {
+            this.dataShares = dataShares;
+        }
+
+        @Override
+        public String toString() {
+            return toString(new StringBuilder()).toString();
+        }
+
+        public StringBuilder toString(StringBuilder sb) {
+            sb.append("DatasetSummary={");
+
+            super.toString(sb);
+
+            sb.append("name={").append(name).append("} ")
+              
.append("permissionForCaller={").append(permissionForCaller).append("} ")
+              .append("principalsCount={").append(principalsCount).append("} ")
+              .append("projectsCount={").append(projectsCount).append("} ")
+              
.append("totalResourceCount={").append(totalResourceCount).append("} ")
+              .append("dataShares={").append(dataShares).append("} ")
+              .append("}");
+
+            return sb;
+        }
+    }
+
+    @JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
+    @JsonSerialize(include = JsonSerialize.Inclusion.NON_EMPTY)
+    @JsonIgnoreProperties(ignoreUnknown = true)
+    public static class DataShareInDatasetSummary extends 
RangerBaseModelObject implements java.io.Serializable {
+        private static final long serialVersionUID = 1L;
+
+        private String         name;
+        private Long           serviceId;
+        private String         serviceName;
+        private Long           zoneId;
+        private String         zoneName;
+        private Long           resourceCount;
+        private GdsShareStatus shareStatus;
+        private String         approver;
+
+        public DataShareInDatasetSummary() {
+            super();
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public Long getServiceId() {
+            return serviceId;
+        }
+
+        public void setServiceId(Long serviceId) {
+            this.serviceId = serviceId;
+        }
+
+        public String getServiceName() {
+            return serviceName;
+        }
+
+        public void setServiceName(String serviceName) {
+            this.serviceName = serviceName;
+        }
+
+        public Long getZoneId() {
+            return zoneId;
+        }
+
+        public void setZoneId(Long zoneId) {
+            this.zoneId = zoneId;
+        }
+
+        public String getZoneName() {
+            return zoneName;
+        }
+
+        public void setZoneName(String zoneName) {
+            this.zoneName = zoneName;
+        }
+
+        public Long getResourceCount() {
+            return resourceCount;
+        }
+
+        public void setResourceCount(Long resourceCount) {
+            this.resourceCount = resourceCount;
+        }
+
+        public GdsShareStatus getShareStatus() {
+            return shareStatus;
+        }
+
+        public void setShareStatus(GdsShareStatus shareStatus) {
+            this.shareStatus = shareStatus;
+        }
+
+        public String getApprover() {
+            return approver;
+        }
+
+        public void setApprover(String approver) {
+            this.approver = approver;
+        }
+
+        @Override
+        public String toString() {
+            return toString(new StringBuilder()).toString();
+        }
+
+        public StringBuilder toString(StringBuilder sb) {
+            sb.append("DatasetSummary={");
+
+            super.toString(sb);
+
+            sb.append("name={").append(name).append("} ")
+              .append("serviceId={").append(serviceId).append("} ")
+              .append("serviceName={").append(serviceName).append("} ")
+              .append("zoneId={").append(zoneId).append("} ")
+              .append("zoneName={").append(zoneName).append("} ")
+              .append("resourceCount={").append(resourceCount).append("} ")
+              .append("shareStatus={").append(shareStatus).append("} ")
+              .append("approver={").append(approver).append("} ")
+              .append("}");
+
+            return sb;
+        }
+    }
 }
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java 
b/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java
index 42a2fa16c..8a2b7f6c5 100755
--- a/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java
@@ -19,12 +19,12 @@
 
 package org.apache.ranger.biz;
 
+import org.apache.http.HttpStatus;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.http.HttpStatus;
 import org.apache.ranger.common.GUIDUtil;
-import org.apache.ranger.common.MessageEnums;
 import org.apache.ranger.common.RESTErrorUtil;
+import org.apache.ranger.common.MessageEnums;
 import org.apache.ranger.common.db.RangerTransactionSynchronizationAdapter;
 import org.apache.ranger.db.RangerDaoManager;
 import org.apache.ranger.db.XXGdsDataShareInDatasetDao;
@@ -36,9 +36,12 @@ import org.apache.ranger.entity.XXGdsDataset;
 import org.apache.ranger.entity.XXGdsDatasetInProject;
 import org.apache.ranger.entity.XXGdsDatasetPolicyMap;
 import org.apache.ranger.entity.XXPolicy;
+import org.apache.ranger.entity.XXService;
+import org.apache.ranger.entity.XXSecurityZone;
 import org.apache.ranger.entity.XXGdsProject;
 import org.apache.ranger.entity.XXGdsProjectPolicyMap;
-import 
org.apache.ranger.plugin.model.RangerDatasetHeader.RangerDatasetHeaderInfo;
+import org.apache.ranger.plugin.model.RangerGds.DatasetSummary;
+import org.apache.ranger.plugin.model.RangerGds.DataShareInDatasetSummary;
 import org.apache.ranger.plugin.model.RangerPolicy;
 import org.apache.ranger.plugin.model.RangerGds.GdsPermission;
 import org.apache.ranger.plugin.model.RangerGds.GdsShareStatus;
@@ -151,16 +154,16 @@ public class GdsDBStore extends AbstractGdsStore {
         }
     }
 
-    public PList<RangerDatasetHeaderInfo> getDatasetHeaders(SearchFilter 
filter) throws Exception {
-        LOG.debug("==> getDatasetHeaders({})", filter);
+    public PList<DatasetSummary> getDatasetSummary(SearchFilter filter) throws 
Exception {
+        LOG.debug("==> getDatasetSummary({})", filter);
 
-        PList<RangerDataset>           datasets       = 
getUnscrubbedDatasets(filter);
-        List<RangerDatasetHeaderInfo>  datasetHeaders = 
toDatasetHeaders(datasets.getList(), getGdsPermissionFromFilter(filter));
-        PList<RangerDatasetHeaderInfo> ret            = new 
PList<>(datasetHeaders, datasets.getStartIndex(), datasets.getPageSize(), 
datasets.getTotalCount(), datasets.getResultSize(), datasets.getSortType(), 
datasets.getSortBy());
+        PList<RangerDataset>  datasets       = getUnscrubbedDatasets(filter);
+        List<DatasetSummary>  datasetSummary = 
toDatasetSummary(datasets.getList(), getGdsPermissionFromFilter(filter));
+        PList<DatasetSummary> ret            = new PList<>(datasetSummary, 
datasets.getStartIndex(), datasets.getPageSize(), datasets.getTotalCount(), 
datasets.getResultSize(), datasets.getSortType(), datasets.getSortBy());
 
         ret.setQueryTimeMS(datasets.getQueryTimeMS());
 
-        LOG.debug("<== getDatasetHeaders({}): ret={}", filter, ret);
+        LOG.debug("<== getDatasetSummary({}): ret={}", filter, ret);
 
         return ret;
     }
@@ -1178,39 +1181,44 @@ public class GdsDBStore extends AbstractGdsStore {
         }
     }
 
-    private List<RangerDatasetHeaderInfo> toDatasetHeaders(List<RangerDataset> 
datasets, GdsPermission gdsPermission) {
-        List<RangerDatasetHeaderInfo> ret = new ArrayList<>();
+    private List<DatasetSummary> toDatasetSummary(List<RangerDataset> 
datasets, GdsPermission gdsPermission) {
+        List<DatasetSummary> ret         = new ArrayList<>();
+        String               currentUser = bizUtil.getCurrentUserLoginId();
 
         for (RangerDataset dataset : datasets) {
-            RangerDatasetHeaderInfo datasetHeader = new 
RangerDatasetHeaderInfo();
-
-            if (gdsPermission.equals(GdsPermission.LIST)) {
-                final GdsPermission permissionForUser = 
validator.getGdsPermissionForUser(dataset.getAcl(), 
bizUtil.getCurrentUserLoginId());
+            GdsPermission permissionForCaller = 
validator.getGdsPermissionForUser(dataset.getAcl(), currentUser);
 
-                if (permissionForUser.equals(GdsPermission.NONE)) {
-                    continue;
-                } else {
-                    
datasetHeader.setPermissionForCaller(permissionForUser.toString());
-                }
-            } else {
-                
datasetHeader.setDataSharesCountByStatus(getDataSharesInDatasetCountByStatus(dataset.getId()));
-                
datasetHeader.setProjectsCount(getDIPCountForDataset(dataset.getId()));
-                
datasetHeader.setPrincipalsCountByType(getPrincipalCountForDataset(dataset.getName()));
-
-                
datasetHeader.setResourceCount(getResourceCountInDataset(dataset.getId()));
+            if (permissionForCaller.equals(GdsPermission.NONE)) {
+                continue;
             }
 
-            datasetHeader.setId(dataset.getId());
-            datasetHeader.setName(dataset.getName());
-            datasetHeader.setCreateTime(dataset.getCreateTime());
-            datasetHeader.setUpdateTime(dataset.getUpdateTime());
-            datasetHeader.setCreatedBy(dataset.getCreatedBy());
-            datasetHeader.setUpdatedBy(dataset.getUpdatedBy());
-            datasetHeader.setIsEnabled(dataset.getIsEnabled());
-            datasetHeader.setGuid(dataset.getGuid());
-            datasetHeader.setVersion(dataset.getVersion());
+            DatasetSummary datasetSummary = new DatasetSummary();
+
+            datasetSummary.setId(dataset.getId());
+            datasetSummary.setName(dataset.getName());
+            datasetSummary.setCreateTime(dataset.getCreateTime());
+            datasetSummary.setUpdateTime(dataset.getUpdateTime());
+            datasetSummary.setCreatedBy(dataset.getCreatedBy());
+            datasetSummary.setUpdatedBy(dataset.getUpdatedBy());
+            datasetSummary.setIsEnabled(dataset.getIsEnabled());
+            datasetSummary.setGuid(dataset.getGuid());
+            datasetSummary.setVersion(dataset.getVersion());
+            datasetSummary.setPermissionForCaller(permissionForCaller);
+
+            if (!gdsPermission.equals(GdsPermission.LIST)) {
+                
datasetSummary.setProjectsCount(getDIPCountForDataset(dataset.getId()));
+                
datasetSummary.setPrincipalsCount(getPrincipalCountForDataset(dataset.getName()));
+
+                List<DataShareInDatasetSummary> dshInDsSummaryList = 
getDshInDsSummaryList(dataset.getId());
+
+                datasetSummary.setDataShares(dshInDsSummaryList);
+                
datasetSummary.setTotalResourceCount(dshInDsSummaryList.stream()
+                        .map(DataShareInDatasetSummary::getResourceCount)
+                        .mapToLong(Long::longValue)
+                        .sum());
+            }
 
-            ret.add(datasetHeader);
+            ret.add(datasetSummary);
         }
 
         return ret;
@@ -1231,10 +1239,6 @@ public class GdsDBStore extends AbstractGdsStore {
         return datasetInProjectService.getDatasetsInProjectCount(datasetId);
     }
 
-    private Long getResourceCountInDataset(Long datasetId) {
-        return sharedResourceService.getResourceCountInDataset(datasetId);
-    }
-
     private Map<PrincipalType, Long> getPrincipalCountForDataset(String 
datasetName) {
         Map<PrincipalType, Long> ret    = new HashMap<>();
         Set<String>              users  = new HashSet<>();
@@ -1319,9 +1323,8 @@ public class GdsDBStore extends AbstractGdsStore {
     }
 
     private void removeDshInDsForDataShare(Long dataShareId) {
-        SearchFilter filter = new SearchFilter();
-        filter.setParam(SearchFilter.DATA_SHARE_ID, dataShareId.toString());
-        final RangerDataShareInDatasetList dshInDsList = 
dataShareInDatasetService.searchDataShareInDatasets(filter);
+        SearchFilter                 filter      = new 
SearchFilter(SearchFilter.DATA_SHARE_ID, dataShareId.toString());
+        RangerDataShareInDatasetList dshInDsList = 
dataShareInDatasetService.searchDataShareInDatasets(filter);
 
         for(RangerDataShareInDataset dshInDs : dshInDsList.getList()) {
             final boolean dshInDsDeleted = 
dataShareInDatasetService.delete(dshInDs);
@@ -1333,14 +1336,13 @@ public class GdsDBStore extends AbstractGdsStore {
     }
 
     private void removeSharedResourcesForDataShare(Long dataShareId) {
-        SearchFilter filter  = new SearchFilter();
-        filter.setParam(SearchFilter.DATA_SHARE_ID, dataShareId.toString());
-        final RangerSharedResourceList sharedResources = 
sharedResourceService.searchSharedResources(filter);
+        SearchFilter             filter          = new 
SearchFilter(SearchFilter.DATA_SHARE_ID, dataShareId.toString());
+        RangerSharedResourceList sharedResources = 
sharedResourceService.searchSharedResources(filter);
 
-        for(RangerSharedResource sharedResource : sharedResources.getList()) {
+        for (RangerSharedResource sharedResource : sharedResources.getList()) {
             final boolean sharedResourceDeleted = 
sharedResourceService.delete(sharedResource);
 
-            if(!sharedResourceDeleted) {
+            if (!sharedResourceDeleted) {
                 throw restErrorUtil.createRESTException("SharedResource could 
not be deleted", MessageEnums.ERROR_DELETE_OBJECT, sharedResource.getId(), 
"SharedResourceId", null, HttpStatus.SC_INTERNAL_SERVER_ERROR);
             }
         }
@@ -1415,8 +1417,8 @@ public class GdsDBStore extends AbstractGdsStore {
     }
 
     private void addCreatorAsAclAdmin(RangerGdsObjectACL acl) {
-        String                     currentUser = 
bizUtil.getCurrentUserLoginId();
-        Map<String, GdsPermission> userAcl     = acl.getUsers();
+        String currentUser = bizUtil.getCurrentUserLoginId();
+        Map<String, GdsPermission> userAcl = acl.getUsers();
 
         if (userAcl == null) {
             userAcl = new HashMap<>();
@@ -1428,4 +1430,80 @@ public class GdsDBStore extends AbstractGdsStore {
             acl.getUsers().put(currentUser, GdsPermission.ADMIN);
         }
     }
+
+    private List<DataShareInDatasetSummary> getDshInDsSummaryList(Long 
datasetId) {
+        List<DataShareInDatasetSummary> ret        = new ArrayList<>();
+        SearchFilter                    filter     = new 
SearchFilter(SearchFilter.DATASET_ID, datasetId.toString());
+        RangerDataShareList             dataShares = 
dataShareService.searchDataShares(filter);
+
+        if (CollectionUtils.isNotEmpty(dataShares.getList())) {
+            RangerDataShareInDatasetList dshInDsList = 
dataShareInDatasetService.searchDataShareInDatasets(filter);
+
+            if (CollectionUtils.isNotEmpty(dshInDsList.getList())) {
+                for (RangerDataShare dataShare : dataShares.getList()) {
+                    DataShareInDatasetSummary summary = 
toDshInDsSummary(dataShare, dshInDsList.getList());
+
+                    ret.add(summary);
+                }
+            }
+        }
+
+        return ret;
+    }
+
+    private DataShareInDatasetSummary toDshInDsSummary(RangerDataShare 
dataShare, List<RangerDataShareInDataset> dshInDsList) {
+        Optional<RangerDataShareInDataset> dshInDs = 
dshInDsList.stream().filter(d -> 
d.getDataShareId().equals(dataShare.getId())).findFirst();
+
+        if (!dshInDs.isPresent()) {
+            throw restErrorUtil.createRESTException("RequestStatus for 
DataShareInDataset not found", MessageEnums.DATA_NOT_FOUND, dataShare.getId(), 
"SharedResourceId", null, HttpStatus.SC_NOT_FOUND);
+        }
+
+        DataShareInDatasetSummary summary = new DataShareInDatasetSummary();
+
+        summary.setId(dataShare.getId());
+        summary.setCreatedBy(dataShare.getCreatedBy());
+        summary.setCreateTime(dataShare.getCreateTime());
+        summary.setUpdatedBy(dataShare.getUpdatedBy());
+        summary.setUpdateTime(dataShare.getUpdateTime());
+        summary.setGuid(dataShare.getGuid());
+        summary.setIsEnabled(dataShare.getIsEnabled());
+        summary.setVersion(dataShare.getVersion());
+
+        summary.setName(dataShare.getName());
+        summary.setServiceId(getServiceId(dataShare.getService()));
+        summary.setServiceName(dataShare.getService());
+        summary.setZoneId(getZoneId(dataShare.getZone()));
+        summary.setZoneName(dataShare.getZone());
+        summary.setShareStatus(dshInDs.get().getStatus());
+        summary.setApprover(dshInDs.get().getApprover());
+        
summary.setResourceCount(sharedResourceService.getResourceCountForDataShare(dataShare.getId()));
+
+        return summary;
+    }
+
+    private Long getServiceId(String serviceName) {
+        XXService xService = daoMgr.getXXService().findByName(serviceName);
+
+        if (xService == null) {
+            throw restErrorUtil.createRESTException("Service not found", 
MessageEnums.DATA_NOT_FOUND, null, "ServiceName", null, 
HttpStatus.SC_NOT_FOUND);
+        }
+
+        return xService.getId();
+    }
+
+    private Long getZoneId(String zoneName) {
+        Long ret = null;
+
+        if (StringUtils.isNotBlank(zoneName)) {
+            XXSecurityZone xxSecurityZone = 
daoMgr.getXXSecurityZoneDao().findByZoneName(zoneName);
+
+            if (xxSecurityZone == null) {
+                throw restErrorUtil.createRESTException("Security Zone not 
found", MessageEnums.DATA_NOT_FOUND, null, "ZoneName", null, 
HttpStatus.SC_NOT_FOUND);
+            }
+
+            ret = xxSecurityZone.getId();
+        }
+
+        return ret;
+    }
 }
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java 
b/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java
index b7ef9b86a..7617fb411 100755
--- a/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java
@@ -23,7 +23,6 @@ import org.apache.commons.lang.StringUtils;
 import org.apache.ranger.biz.GdsDBStore;
 import org.apache.ranger.common.RESTErrorUtil;
 import org.apache.ranger.common.RangerSearchUtil;
-import 
org.apache.ranger.plugin.model.RangerDatasetHeader.RangerDatasetHeaderInfo;
 import org.apache.ranger.plugin.model.RangerGds.RangerDataset;
 import org.apache.ranger.plugin.model.RangerGds.RangerDatasetInProject;
 import org.apache.ranger.plugin.model.RangerGds.RangerDataShareInDataset;
@@ -31,6 +30,7 @@ import 
org.apache.ranger.plugin.model.RangerGds.RangerDataShare;
 import org.apache.ranger.plugin.model.RangerGds.RangerProject;
 import org.apache.ranger.plugin.model.RangerGds.RangerSharedResource;
 import org.apache.ranger.plugin.model.RangerPolicy;
+import org.apache.ranger.plugin.model.RangerGds.DatasetSummary;
 import org.apache.ranger.plugin.store.PList;
 import org.apache.ranger.plugin.util.RangerPerfTracer;
 import org.apache.ranger.plugin.util.SearchFilter;
@@ -289,27 +289,27 @@ public class GdsREST {
     }
 
     @GET
-    @Path("/dataset/info")
+    @Path("/dataset/summary")
     @Produces({ "application/json" })
-    @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + 
RangerAPIList.GET_DATASETS_HEADER + "\")")
-    public PList<RangerDatasetHeaderInfo> getDatasetHeaderInfo(@Context 
HttpServletRequest request) {
-        LOG.debug("==> GdsREST.getDatasetHeaderInfo()");
+    @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + 
RangerAPIList.GET_DATASET_SUMMARY + "\")")
+    public PList<DatasetSummary> getDatasetSummary(@Context HttpServletRequest 
request) {
+        LOG.debug("==> GdsREST.getDatasetSummary()");
 
-        PList<RangerDatasetHeaderInfo> ret;
+        PList<DatasetSummary> ret;
 
         try {
             SearchFilter filter = searchUtil.getSearchFilter(request, 
datasetService.sortFields);
 
-            ret = gdsStore.getDatasetHeaders(filter);
-        } catch (WebApplicationException excp) {
-            throw excp;
+            ret = gdsStore.getDatasetSummary(filter);
+        } catch (WebApplicationException we) {
+            throw we;
         } catch (Throwable ex) {
-            LOG.error("getDatasets() failed", ex);
+            LOG.error("getDatasetSummary() failed", ex);
 
             throw restErrorUtil.createRESTException(ex.getMessage());
         }
 
-        LOG.debug("<== GdsREST.getDatasetHeaderInfo(): {}", ret);
+        LOG.debug("<== GdsREST.getDatasetSummary(): {}", ret);
 
         return ret;
     }
diff --git 
a/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIList.java
 
b/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIList.java
index dede14dfd..1c42e93c0 100755
--- 
a/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIList.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIList.java
@@ -216,7 +216,7 @@ public class RangerAPIList {
        /**
         * List of APIs for DataShareREST
         */
-       public static final String GET_DATASETS_HEADER = 
"GdsREST.getDatasetHeaderInfo";
+       public static final String GET_DATASET_SUMMARY = 
"GdsREST.getDatasetSummary";
        public static final String CREATE_DATASET      = 
"GdsREST.createDataset";
        public static final String UPDATE_DATASET      = 
"GdsREST.updateDataset";
        public static final String DELETE_DATASET      = 
"GdsREST.deleteDataset";
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerGdsSharedResourceService.java
 
b/security-admin/src/main/java/org/apache/ranger/service/RangerGdsSharedResourceService.java
index 7f6dee9ec..35ea2da8c 100755
--- 
a/security-admin/src/main/java/org/apache/ranger/service/RangerGdsSharedResourceService.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerGdsSharedResourceService.java
@@ -159,7 +159,7 @@ public class RangerGdsSharedResourceService extends 
RangerGdsBaseModelService<XX
             msgList.add(MessageEnums.NO_INPUT_DATA.getMessage(null, 
"dataShareId"));
         }
 
-        if (!Objects.equals(vObj.getDataShareId(), xDataShare.getId())) {
+        if ((xDataShare != null) && !Objects.equals(vObj.getDataShareId(), 
xDataShare.getId())) {
             msgList = getOrCreateMessageList(msgList);
 
             msgList.add(MessageEnums.NO_INPUT_DATA.getMessage(null, 
"dataShareId"));
@@ -251,16 +251,16 @@ public class RangerGdsSharedResourceService extends 
RangerGdsBaseModelService<XX
         return ret;
     }
 
-    public Long getResourceCountInDataset(long datasetId) {
-        LOG.debug("==> getResourceCountInDataset({})", datasetId);
+    public Long getResourceCountForDataShare(long dataShareId) {
+        LOG.debug("==> getResourceCountForDataShare({})", dataShareId);
 
         SearchFilter filter = new SearchFilter();
 
-        filter.setParam(SearchFilter.DATASET_ID, String.valueOf(datasetId));
+        filter.setParam(SearchFilter.DATA_SHARE_ID, 
String.valueOf(dataShareId));
 
         Long ret = super.getCountForSearchQuery(filter, searchFields);
 
-        LOG.debug("<== getResourceCountInDataset({}): ret={}", datasetId, ret);
+        LOG.debug("<== getResourceCountForDataShare({}): ret={}", dataShareId, 
ret);
 
         return ret;
     }

Reply via email to