public void shareEntityWithGroup()

in data-resource-management-service/drms-rdbms-impl/drms-server/src/main/java/org/apache/airavata/drms/api/handlers/SharingServiceHandler.java [85:137]


    public void shareEntityWithGroup(ShareEntityWithGroupRequest request, StreamObserver<Empty> responseObserver) {
        try {

            AuthenticatedUser authenticatedUser = request.getAuthToken().getAuthenticatedUser();
            String username = authenticatedUser.getUsername();
            String tenantId = authenticatedUser.getTenantId();

            try (SharingManagementClient sharingManagementClient = custosClientProvider.getSharingManagementClient()) {
                Entity entity = Entity.newBuilder().setId(request.getEntityId()).build();
                PermissionType permissionTypeEditor = PermissionType.newBuilder().setId(request.getPermissionId()).build();
                PermissionType permissionTypeAdmin = PermissionType.newBuilder().setId("ADMIN").build();

                SharingRequest sharingRequestEditor = SharingRequest
                        .newBuilder()
                        .setClientId(tenantId)
                        .setEntity(entity)
                        .setPermissionType(permissionTypeEditor)
                        .addOwnerId(username).build();
                org.apache.custos.sharing.service.Status status = sharingManagementClient
                        .userHasAccess(tenantId, sharingRequestEditor);
                SharingRequest sharingRequestAdmin = SharingRequest
                        .newBuilder()
                        .setClientId(tenantId)
                        .setEntity(entity)
                        .setPermissionType(permissionTypeAdmin)
                        .addOwnerId(username).build();
                org.apache.custos.sharing.service.Status statusAdmin = sharingManagementClient
                        .userHasAccess(tenantId, sharingRequestAdmin);
                if (status.getStatus() || statusAdmin.getStatus()) {
                    SharingRequest shrRequest = SharingRequest
                            .newBuilder()
                            .setClientId(tenantId)
                            .setEntity(entity)
                            .setCascade(true)
                            .setPermissionType(PermissionType.newBuilder().setId(request.getPermissionId()).build())
                            .addOwnerId(request.getSharedGroupId()).build();
                    sharingManagementClient.shareEntityWithGroups(tenantId, shrRequest);
                    responseObserver.onNext(Empty.newBuilder().build());
                    responseObserver.onCompleted();

                } else {
                    String msg = "You don't have permission to manage sharing";
                    LOGGER.error(msg);
                    responseObserver.onError(Status.PERMISSION_DENIED.withDescription(msg).asRuntimeException());
                }
            }

        } catch (Exception ex) {
            LOGGER.error("Error occurred while sharing entity with group {}", request.getSharedGroupId());
            String msg = "Error occurred while sharing entity with group {}" + request.getSharedGroupId();
            responseObserver.onError(Status.INTERNAL.withDescription(msg).asRuntimeException());
        }
    }