public String resolveRPCRequest()

in agent/service/src/main/java/org/apache/airavata/mft/agent/rpc/RPCParser.java [37:82]


    public String resolveRPCRequest(SyncRPCRequest request, TransportClassLoaderCache transportCache) throws Exception {
        // TODO implement using the reflection
        ObjectMapper mapper = new ObjectMapper();
        logger.info("Accepting sync request {} for method {}", request.getRequestId(), request.getMethod());

        switch (request.getMethod()) {
            case "getResourceMetadata":
                String requestStr = request.getParameters().get("request");

                GetResourceMetadataRequest.Builder directResourceMetadataReq = GetResourceMetadataRequest.newBuilder();
                JsonFormat.parser().merge(requestStr, directResourceMetadataReq);
                GetResourceMetadataRequest req = directResourceMetadataReq.build();

                Optional<MetadataCollector> metadataCollectorOptional = MetadataCollectorResolver
                        .resolveMetadataCollector(req.getStorage().getStorageCase().name(), transportCache);
                if (metadataCollectorOptional.isPresent()) {
                    MetadataCollector metadataCollector = metadataCollectorOptional.get();
                    metadataCollector.init(req.getStorage(), req.getSecret());
                    ResourceMetadata resourceMetadata = metadataCollector
                            .getResourceMetadata(req.getResourcePath(), directResourceMetadataReq.getRecursiveSearch());
                    return JsonFormat.printer().print(resourceMetadata);
                } else {
                    throw new Exception("No metadata collector for type " + req.getStorage().getStorageCase().name());
                }
            case "getResourceAvailability":
               requestStr = request.getParameters().get("request");

                directResourceMetadataReq = GetResourceMetadataRequest.newBuilder();
                req = directResourceMetadataReq.build();
                JsonFormat.parser().merge(requestStr, directResourceMetadataReq);

                metadataCollectorOptional = MetadataCollectorResolver
                        .resolveMetadataCollector(req.getStorage().getStorageCase().name(), transportCache);
                if (metadataCollectorOptional.isPresent()) {
                    MetadataCollector metadataCollector = metadataCollectorOptional.get();
                    metadataCollector.init(req.getStorage(), req.getSecret());
                    Boolean available = metadataCollector.isAvailable(req.getResourcePath());
                    return available.toString();
                } else {
                    throw new Exception("No metadata collector for type " + req.getStorage().getStorageCase().name());
                }

        }
        logger.error("Unknown method type specified {}", request.getMethod());
        throw new Exception("Unknown method " + request.getMethod());
    }