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());
}
}