public void fetchChildResources()

in data-resource-management-service/drms-rdbms-impl/drms-server/src/main/java/org/apache/airavata/drms/api/handlers/ResourceServiceHandler.java [199:264]


    public void fetchChildResources(ChildResourceFetchRequest request,
                                    StreamObserver<ChildResourceFetchResponse> responseObserver) {
        try {
            AuthenticatedUser callUser = request.getAuthToken().getAuthenticatedUser();
            String resourceId = request.getResourceId();
            String type = request.getType();
            int offset = request.getOffset();
            int limit = request.getLimit();
            if (limit == 0) {
                limit = -1;
            }

            boolean access = CustosUtils.userHasAccess(custosClientProvider, callUser.getTenantId(),
                    callUser.getUsername(), resourceId, new String[]{SharingConstants.PERMISSION_TYPE_VIEWER,
                            SharingConstants.PERMISSION_TYPE_EDITOR, SharingConstants.PERMISSION_TYPE_OWNER});
            if (access) {
                try (SharingManagementClient sharingManagementClient = custosClientProvider.getSharingManagementClient()) {
                    List<GenericResource> genericResources = new ArrayList<>();
                    List<Resource> resources;
                    if (limit > 0) {
                        resources = resourceRepository.findAllByParentResourceIdAndTenantIdAndResourceTypeWithPagination(resourceId
                                , callUser.getTenantId(), limit, offset);
                    } else {
                        resources = resourceRepository.findAllByParentResourceIdAndTenantId(resourceId,
                                callUser.getTenantId());
                    }

                    resources.forEach(resource -> {
                        String id = resource.getId();
                        SearchRequest searchRequest = SearchRequest.newBuilder().setOwnerId(callUser
                                .getUsername())
                                .setClientId(callUser.getTenantId())
                                .addSearchCriteria(SearchCriteria.newBuilder()
                                        .setSearchField(EntitySearchField.ID)
                                        .setCondition(SearchCondition.EQUAL)
                                        .setValue(id))
                                .build();
                        Entities entities = sharingManagementClient.searchEntities(callUser.getTenantId(), searchRequest);


                        if (entities != null && !entities.getEntityArrayList().isEmpty()) {
                            genericResources.add(ResourceMapper.map(resource, entities.getEntityArray(0)));

                        }


                    });

                    ChildResourceFetchResponse childResourceFetchResponse =
                            ChildResourceFetchResponse
                                    .newBuilder()
                                    .addAllResources(genericResources)
                                    .build();
                    responseObserver.onNext(childResourceFetchResponse);
                    responseObserver.onCompleted();
                    return;
                }
            }
            //TODO:Error

        } catch (Exception ex) {
            logger.error("Error occurred while fetching child resource {}", request.getResourceId(), ex);
            responseObserver.onError(Status.INTERNAL.withDescription("Error occurred while fetching child resource"
                    + ex.getMessage()).asRuntimeException());
        }
    }