public void resourceMetadata()

in api/service/src/main/java/org/apache/airavata/mft/api/handler/MFTApiHandler.java [428:471]


    public void resourceMetadata(FetchResourceMetadataRequest request, StreamObserver<ResourceMetadata> responseObserver) {

        GetResourceMetadataRequest directRequest = null;

        try {

            if (request.getRequestCase() == FetchResourceMetadataRequest.RequestCase.DIRECTREQUEST) {
                directRequest = request.getDirectRequest();
            } else {
                directRequest = deriveDirectRequest(request.getIdRequest());
            }

            String targetAgent = derriveTargetAgent(directRequest);
            SyncRPCRequest.SyncRPCRequestBuilder requestBuilder = SyncRPCRequest.SyncRPCRequestBuilder.builder()
                    .withAgentId(targetAgent)
                    .withMessageId(UUID.randomUUID().toString())
                    .withParameter("request", JsonFormat.printer().print(directRequest));

            requestBuilder.withMethod("getResourceMetadata");

            SyncRPCResponse rpcResponse = agentRPCClient.sendSyncRequest(requestBuilder.build());

            switch (rpcResponse.getResponseStatus()) {
                case SUCCESS:
                    ResourceMetadata.Builder resourceMetadataBuilder = ResourceMetadata.newBuilder();
                    JsonFormat.parser().merge(rpcResponse.getResponseAsStr(), resourceMetadataBuilder);
                    responseObserver.onNext(resourceMetadataBuilder.build());
                    responseObserver.onCompleted();
                    return;
                case FAIL:
                    logger.error("Errored while processing the fetch metadata response for resource path {}. Error msg : {}",
                            directRequest.getResourcePath(), rpcResponse.getErrorAsStr());
                    responseObserver.onError(Status.INTERNAL
                            .withDescription("Errored while processing the the fetch file metadata response. Error msg : " +
                                    rpcResponse.getErrorAsStr())
                            .asException());
            }
        } catch (Exception e) {
            logger.error("Error while fetching resource metadata" , e);
            responseObserver.onError(Status.INTERNAL
                    .withDescription("Failed to fetch file resource metadata. " + e.getMessage())
                    .asException());
        }
    }