public void fetchResourceMetadata()

in data-resource-management-service/drms-graph-impl/drms-api/src/main/java/org/apache/airavata/drms/api/handlers/ResourceServiceHandler.java [946:990]


    public void fetchResourceMetadata(FetchResourceMetadataRequest
                                              request, StreamObserver<FetchResourceMetadataResponse> responseObserver) {
        try {
            AuthenticatedUser callUser = request.getAuthToken().getAuthenticatedUser();

            String resourceId = request.getResourceId();
            String type = request.getType();
            if (type == null || type.isEmpty()) {
                type = "";
            } else {
                type = ":" + type;
            }

            if (hasAccessForResource(callUser.getUsername(), callUser.getTenantId(), resourceId)) {
                Optional<List<String>> metadataArray = readMetadata(resourceId, type, callUser.getTenantId());
                FetchResourceMetadataResponse.Builder builder = FetchResourceMetadataResponse.newBuilder();
                if (metadataArray.isPresent()) {
                    metadataArray.get().forEach(val -> {
                        try {
                            Struct.Builder structBuilder = Struct.newBuilder();
                            JsonFormat.parser().merge(val, structBuilder);
                            builder.addMetadata(structBuilder.build());
                        } catch (InvalidProtocolBufferException e) {
                            String msg = " Error occurred while fetching resource metadata " + e.getMessage();
                            logger.error(" Error occurred while fetching resource metadata: Messages {} ", e.getMessage(), e);
                            responseObserver.onError(Status.INTERNAL.withDescription(msg).asRuntimeException());
                            return;
                        }
                    });
                }
                responseObserver.onNext(builder.build());
                responseObserver.onCompleted();
            } else {
                String msg = " Cannot find accessible resource ";
                logger.error(" Cannot find accessible resource");
                responseObserver.onError(Status.PERMISSION_DENIED.withDescription(msg).asRuntimeException());

            }
        } catch (Exception ex) {
            String msg = " Error occurred while fetching resource metadata " + ex.getMessage();
            logger.error(" Error occurred while fetching resource metadata: Messages {} ", ex.getMessage(), ex);
            responseObserver.onError(Status.INTERNAL.withDescription(msg).asRuntimeException());
        }

    }