airavata-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dimuthu...@apache.org
Subject [airavata] branch jupyter-integration updated: Adding file info API
Date Wed, 29 Aug 2018 18:25:21 GMT
This is an automated email from the ASF dual-hosted git repository.

dimuthuupe pushed a commit to branch jupyter-integration
in repository https://gitbox.apache.org/repos/asf/airavata.git


The following commit(s) were added to refs/heads/jupyter-integration by this push:
     new 95c4cf5  Adding file info API
95c4cf5 is described below

commit 95c4cf53c9aaea0adfab76e07ddb16aa85c3d341
Author: dimuthu <dimuthu.upeksha2@gmail.com>
AuthorDate: Wed Aug 29 14:25:12 2018 -0400

    Adding file info API
---
 .../api/server/handler/AiravataServerHandler.java  |   14 +
 .../java/org/apache/airavata/api/Airavata.java     | 3194 +++++++++++++++-----
 .../model/appcatalog/datamodels/FileStructure.java |   72 +-
 .../api/service/handler/RegistryServerHandler.java |   33 +-
 .../airavata/registry/api/RegistryService.java     | 2721 ++++++++++++-----
 .../airavata-apis/airavata_api.thrift              |    7 +
 .../component-cpis/registry-api.thrift             |    1 +
 .../data_storage_model.thrift                      |    2 +-
 8 files changed, 4516 insertions(+), 1528 deletions(-)

diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index 311051f..c3cfae5 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -5833,6 +5833,20 @@ public class AiravataServerHandler implements Airavata.Iface {
     }
 
     @Override
+    public FileStructure getFileDetailsFromStorage(AuthzToken authzToken, String gatewayId, String storageResourceId, String userId, String filePath) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
+        RegistryService.Client regClient = registryClientPool.getResource();
+        try {
+            return regClient.getFileDetailsFromStorage(gatewayId, storageResourceId, userId, filePath);
+        } catch (Exception e) {
+            String msg = "Error fetching file info from storage resource: " + storageResourceId + " for  path : " + filePath;
+            AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
+            registryClientPool.returnBrokenResource(regClient);
+            exception.setMessage(msg + " More info : " + e.getMessage());
+            throw exception;
+        }
+    }
+
+    @Override
     public List<FileStructure> listDirectoryFromStorage(AuthzToken authzToken, String gatewayId, String storageResourceId, String userId, String dirPath) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         RegistryService.Client regClient = registryClientPool.getResource();
         try {
diff --git a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
index 208ab74..6305a9f 100644
--- a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
+++ b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
@@ -3127,6 +3127,8 @@ public class Airavata {
 
     public org.apache.airavata.model.appcatalog.datamodels.FileStructure downloadFileFromStorage(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String path) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationEx [...]
 
+    public org.apache.airavata.model.appcatalog.datamodels.FileStructure getFileDetailsFromStorage(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String filePath) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.Authoriza [...]
+
     public java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure> listDirectoryFromStorage(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String dirPath) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.e [...]
 
     public void deleteFileFromStorage(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String path) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
@@ -3529,6 +3531,8 @@ public class Airavata {
 
     public void downloadFileFromStorage(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String path, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.appcatalog.datamodels.FileStructure> resultHandler) throws org.apache.thrift.TException;
 
+    public void getFileDetailsFromStorage(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String filePath, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.appcatalog.datamodels.FileStructure> resultHandler) throws org.apache.thrift.TException;
+
     public void listDirectoryFromStorage(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String dirPath, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure>> resultHandler) throws org.apache.thrift.TException;
 
     public void deleteFileFromStorage(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String path, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException;
@@ -10614,6 +10618,45 @@ public class Airavata {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "downloadFileFromStorage failed: unknown result");
     }
 
+    public org.apache.airavata.model.appcatalog.datamodels.FileStructure getFileDetailsFromStorage(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String filePath) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.Authoriza [...]
+    {
+      send_getFileDetailsFromStorage(authzToken, gatewayId, storageResourceId, userId, filePath);
+      return recv_getFileDetailsFromStorage();
+    }
+
+    public void send_getFileDetailsFromStorage(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String filePath) throws org.apache.thrift.TException
+    {
+      getFileDetailsFromStorage_args args = new getFileDetailsFromStorage_args();
+      args.setAuthzToken(authzToken);
+      args.setGatewayId(gatewayId);
+      args.setStorageResourceId(storageResourceId);
+      args.setUserId(userId);
+      args.setFilePath(filePath);
+      sendBase("getFileDetailsFromStorage", args);
+    }
+
+    public org.apache.airavata.model.appcatalog.datamodels.FileStructure recv_getFileDetailsFromStorage() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException
+    {
+      getFileDetailsFromStorage_result result = new getFileDetailsFromStorage_result();
+      receiveBase(result, "getFileDetailsFromStorage");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      if (result.ae != null) {
+        throw result.ae;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getFileDetailsFromStorage failed: unknown result");
+    }
+
     public java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure> listDirectoryFromStorage(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String dirPath) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.e [...]
     {
       send_listDirectoryFromStorage(authzToken, gatewayId, storageResourceId, userId, dirPath);
@@ -18070,6 +18113,50 @@ public class Airavata {
       }
     }
 
+    public void getFileDetailsFromStorage(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String filePath, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.appcatalog.datamodels.FileStructure> resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      getFileDetailsFromStorage_call method_call = new getFileDetailsFromStorage_call(authzToken, gatewayId, storageResourceId, userId, filePath, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class getFileDetailsFromStorage_call extends org.apache.thrift.async.TAsyncMethodCall<org.apache.airavata.model.appcatalog.datamodels.FileStructure> {
+      private org.apache.airavata.model.security.AuthzToken authzToken;
+      private java.lang.String gatewayId;
+      private java.lang.String storageResourceId;
+      private java.lang.String userId;
+      private java.lang.String filePath;
+      public getFileDetailsFromStorage_call(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String filePath, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.appcatalog.datamodels.FileStructure> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransp [...]
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.authzToken = authzToken;
+        this.gatewayId = gatewayId;
+        this.storageResourceId = storageResourceId;
+        this.userId = userId;
+        this.filePath = filePath;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getFileDetailsFromStorage", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        getFileDetailsFromStorage_args args = new getFileDetailsFromStorage_args();
+        args.setAuthzToken(authzToken);
+        args.setGatewayId(gatewayId);
+        args.setStorageResourceId(storageResourceId);
+        args.setUserId(userId);
+        args.setFilePath(filePath);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public org.apache.airavata.model.appcatalog.datamodels.FileStructure getResult() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new java.lang.IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_getFileDetailsFromStorage();
+      }
+    }
+
     public void listDirectoryFromStorage(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String dirPath, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure>> resultHandler) throws org.apache.thrift.TException {
       checkReady();
       listDirectoryFromStorage_call method_call = new listDirectoryFromStorage_call(authzToken, gatewayId, storageResourceId, userId, dirPath, resultHandler, this, ___protocolFactory, ___transport);
@@ -18586,6 +18673,7 @@ public class Airavata {
       processMap.put("getGatewayGroups", new getGatewayGroups());
       processMap.put("uploadFileToStorage", new uploadFileToStorage());
       processMap.put("downloadFileFromStorage", new downloadFileFromStorage());
+      processMap.put("getFileDetailsFromStorage", new getFileDetailsFromStorage());
       processMap.put("listDirectoryFromStorage", new listDirectoryFromStorage());
       processMap.put("deleteFileFromStorage", new deleteFileFromStorage());
       processMap.put("deleteDirectoryFromStorage", new deleteDirectoryFromStorage());
@@ -24432,6 +24520,36 @@ public class Airavata {
       }
     }
 
+    public static class getFileDetailsFromStorage<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getFileDetailsFromStorage_args> {
+      public getFileDetailsFromStorage() {
+        super("getFileDetailsFromStorage");
+      }
+
+      public getFileDetailsFromStorage_args getEmptyArgsInstance() {
+        return new getFileDetailsFromStorage_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getFileDetailsFromStorage_result getResult(I iface, getFileDetailsFromStorage_args args) throws org.apache.thrift.TException {
+        getFileDetailsFromStorage_result result = new getFileDetailsFromStorage_result();
+        try {
+          result.success = iface.getFileDetailsFromStorage(args.authzToken, args.gatewayId, args.storageResourceId, args.userId, args.filePath);
+        } catch (org.apache.airavata.model.error.InvalidRequestException ire) {
+          result.ire = ire;
+        } catch (org.apache.airavata.model.error.AiravataClientException ace) {
+          result.ace = ace;
+        } catch (org.apache.airavata.model.error.AiravataSystemException ase) {
+          result.ase = ase;
+        } catch (org.apache.airavata.model.error.AuthorizationException ae) {
+          result.ae = ae;
+        }
+        return result;
+      }
+    }
+
     public static class listDirectoryFromStorage<I extends Iface> extends org.apache.thrift.ProcessFunction<I, listDirectoryFromStorage_args> {
       public listDirectoryFromStorage() {
         super("listDirectoryFromStorage");
@@ -24849,6 +24967,7 @@ public class Airavata {
       processMap.put("getGatewayGroups", new getGatewayGroups());
       processMap.put("uploadFileToStorage", new uploadFileToStorage());
       processMap.put("downloadFileFromStorage", new downloadFileFromStorage());
+      processMap.put("getFileDetailsFromStorage", new getFileDetailsFromStorage());
       processMap.put("listDirectoryFromStorage", new listDirectoryFromStorage());
       processMap.put("deleteFileFromStorage", new deleteFileFromStorage());
       processMap.put("deleteDirectoryFromStorage", new deleteDirectoryFromStorage());
@@ -39719,20 +39838,20 @@ public class Airavata {
       }
     }
 
-    public static class listDirectoryFromStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, listDirectoryFromStorage_args, java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure>> {
-      public listDirectoryFromStorage() {
-        super("listDirectoryFromStorage");
+    public static class getFileDetailsFromStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getFileDetailsFromStorage_args, org.apache.airavata.model.appcatalog.datamodels.FileStructure> {
+      public getFileDetailsFromStorage() {
+        super("getFileDetailsFromStorage");
       }
 
-      public listDirectoryFromStorage_args getEmptyArgsInstance() {
-        return new listDirectoryFromStorage_args();
+      public getFileDetailsFromStorage_args getEmptyArgsInstance() {
+        return new getFileDetailsFromStorage_args();
       }
 
-      public org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure>> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
+      public org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.appcatalog.datamodels.FileStructure> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
-        return new org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure>>() { 
-          public void onComplete(java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure> o) {
-            listDirectoryFromStorage_result result = new listDirectoryFromStorage_result();
+        return new org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.appcatalog.datamodels.FileStructure>() { 
+          public void onComplete(org.apache.airavata.model.appcatalog.datamodels.FileStructure o) {
+            getFileDetailsFromStorage_result result = new getFileDetailsFromStorage_result();
             result.success = o;
             try {
               fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
@@ -39747,7 +39866,7 @@ public class Airavata {
           public void onError(java.lang.Exception e) {
             byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
             org.apache.thrift.TSerializable msg;
-            listDirectoryFromStorage_result result = new listDirectoryFromStorage_result();
+            getFileDetailsFromStorage_result result = new getFileDetailsFromStorage_result();
             if (e instanceof org.apache.airavata.model.error.InvalidRequestException) {
               result.ire = (org.apache.airavata.model.error.InvalidRequestException) e;
               result.setIreIsSet(true);
@@ -39791,25 +39910,26 @@ public class Airavata {
         return false;
       }
 
-      public void start(I iface, listDirectoryFromStorage_args args, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure>> resultHandler) throws org.apache.thrift.TException {
-        iface.listDirectoryFromStorage(args.authzToken, args.gatewayId, args.storageResourceId, args.userId, args.dirPath,resultHandler);
+      public void start(I iface, getFileDetailsFromStorage_args args, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.appcatalog.datamodels.FileStructure> resultHandler) throws org.apache.thrift.TException {
+        iface.getFileDetailsFromStorage(args.authzToken, args.gatewayId, args.storageResourceId, args.userId, args.filePath,resultHandler);
       }
     }
 
-    public static class deleteFileFromStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, deleteFileFromStorage_args, Void> {
-      public deleteFileFromStorage() {
-        super("deleteFileFromStorage");
+    public static class listDirectoryFromStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, listDirectoryFromStorage_args, java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure>> {
+      public listDirectoryFromStorage() {
+        super("listDirectoryFromStorage");
       }
 
-      public deleteFileFromStorage_args getEmptyArgsInstance() {
-        return new deleteFileFromStorage_args();
+      public listDirectoryFromStorage_args getEmptyArgsInstance() {
+        return new listDirectoryFromStorage_args();
       }
 
-      public org.apache.thrift.async.AsyncMethodCallback<Void> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
+      public org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure>> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
-        return new org.apache.thrift.async.AsyncMethodCallback<Void>() { 
-          public void onComplete(Void o) {
-            deleteFileFromStorage_result result = new deleteFileFromStorage_result();
+        return new org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure>>() { 
+          public void onComplete(java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure> o) {
+            listDirectoryFromStorage_result result = new listDirectoryFromStorage_result();
+            result.success = o;
             try {
               fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
             } catch (org.apache.thrift.transport.TTransportException e) {
@@ -39823,7 +39943,7 @@ public class Airavata {
           public void onError(java.lang.Exception e) {
             byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
             org.apache.thrift.TSerializable msg;
-            deleteFileFromStorage_result result = new deleteFileFromStorage_result();
+            listDirectoryFromStorage_result result = new listDirectoryFromStorage_result();
             if (e instanceof org.apache.airavata.model.error.InvalidRequestException) {
               result.ire = (org.apache.airavata.model.error.InvalidRequestException) e;
               result.setIreIsSet(true);
@@ -39867,103 +39987,25 @@ public class Airavata {
         return false;
       }
 
-      public void start(I iface, deleteFileFromStorage_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
-        iface.deleteFileFromStorage(args.authzToken, args.gatewayId, args.storageResourceId, args.userId, args.path,resultHandler);
+      public void start(I iface, listDirectoryFromStorage_args args, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure>> resultHandler) throws org.apache.thrift.TException {
+        iface.listDirectoryFromStorage(args.authzToken, args.gatewayId, args.storageResourceId, args.userId, args.dirPath,resultHandler);
       }
     }
 
-    public static class deleteDirectoryFromStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, deleteDirectoryFromStorage_args, Void> {
-      public deleteDirectoryFromStorage() {
-        super("deleteDirectoryFromStorage");
+    public static class deleteFileFromStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, deleteFileFromStorage_args, Void> {
+      public deleteFileFromStorage() {
+        super("deleteFileFromStorage");
       }
 
-      public deleteDirectoryFromStorage_args getEmptyArgsInstance() {
-        return new deleteDirectoryFromStorage_args();
+      public deleteFileFromStorage_args getEmptyArgsInstance() {
+        return new deleteFileFromStorage_args();
       }
 
       public org.apache.thrift.async.AsyncMethodCallback<Void> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
         return new org.apache.thrift.async.AsyncMethodCallback<Void>() { 
           public void onComplete(Void o) {
-            deleteDirectoryFromStorage_result result = new deleteDirectoryFromStorage_result();
-            try {
-              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
-            } catch (org.apache.thrift.transport.TTransportException e) {
-              _LOGGER.error("TTransportException writing to internal frame buffer", e);
-              fb.close();
-            } catch (java.lang.Exception e) {
-              _LOGGER.error("Exception writing to internal frame buffer", e);
-              onError(e);
-            }
-          }
-          public void onError(java.lang.Exception e) {
-            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
-            org.apache.thrift.TSerializable msg;
-            deleteDirectoryFromStorage_result result = new deleteDirectoryFromStorage_result();
-            if (e instanceof org.apache.airavata.model.error.InvalidRequestException) {
-              result.ire = (org.apache.airavata.model.error.InvalidRequestException) e;
-              result.setIreIsSet(true);
-              msg = result;
-            } else if (e instanceof org.apache.airavata.model.error.AiravataClientException) {
-              result.ace = (org.apache.airavata.model.error.AiravataClientException) e;
-              result.setAceIsSet(true);
-              msg = result;
-            } else if (e instanceof org.apache.airavata.model.error.AiravataSystemException) {
-              result.ase = (org.apache.airavata.model.error.AiravataSystemException) e;
-              result.setAseIsSet(true);
-              msg = result;
-            } else if (e instanceof org.apache.airavata.model.error.AuthorizationException) {
-              result.ae = (org.apache.airavata.model.error.AuthorizationException) e;
-              result.setAeIsSet(true);
-              msg = result;
-            } else if (e instanceof org.apache.thrift.transport.TTransportException) {
-              _LOGGER.error("TTransportException inside handler", e);
-              fb.close();
-              return;
-            } else if (e instanceof org.apache.thrift.TApplicationException) {
-              _LOGGER.error("TApplicationException inside handler", e);
-              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
-              msg = (org.apache.thrift.TApplicationException)e;
-            } else {
-              _LOGGER.error("Exception inside handler", e);
-              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
-              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
-            }
-            try {
-              fcall.sendResponse(fb,msg,msgType,seqid);
-            } catch (java.lang.Exception ex) {
-              _LOGGER.error("Exception writing to internal frame buffer", ex);
-              fb.close();
-            }
-          }
-        };
-      }
-
-      protected boolean isOneway() {
-        return false;
-      }
-
-      public void start(I iface, deleteDirectoryFromStorage_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
-        iface.deleteDirectoryFromStorage(args.authzToken, args.gatewayId, args.storageResourceId, args.userId, args.path,resultHandler);
-      }
-    }
-
-    public static class isExistInStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, isExistInStorage_args, java.lang.Boolean> {
-      public isExistInStorage() {
-        super("isExistInStorage");
-      }
-
-      public isExistInStorage_args getEmptyArgsInstance() {
-        return new isExistInStorage_args();
-      }
-
-      public org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
-        final org.apache.thrift.AsyncProcessFunction fcall = this;
-        return new org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean>() { 
-          public void onComplete(java.lang.Boolean o) {
-            isExistInStorage_result result = new isExistInStorage_result();
-            result.success = o;
-            result.setSuccessIsSet(true);
+            deleteFileFromStorage_result result = new deleteFileFromStorage_result();
             try {
               fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
             } catch (org.apache.thrift.transport.TTransportException e) {
@@ -39977,7 +40019,7 @@ public class Airavata {
           public void onError(java.lang.Exception e) {
             byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
             org.apache.thrift.TSerializable msg;
-            isExistInStorage_result result = new isExistInStorage_result();
+            deleteFileFromStorage_result result = new deleteFileFromStorage_result();
             if (e instanceof org.apache.airavata.model.error.InvalidRequestException) {
               result.ire = (org.apache.airavata.model.error.InvalidRequestException) e;
               result.setIreIsSet(true);
@@ -40021,25 +40063,25 @@ public class Airavata {
         return false;
       }
 
-      public void start(I iface, isExistInStorage_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
-        iface.isExistInStorage(args.authzToken, args.gatewayId, args.storageResourceId, args.userId, args.path,resultHandler);
+      public void start(I iface, deleteFileFromStorage_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
+        iface.deleteFileFromStorage(args.authzToken, args.gatewayId, args.storageResourceId, args.userId, args.path,resultHandler);
       }
     }
 
-    public static class createDirectoryInStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, createDirectoryInStorage_args, Void> {
-      public createDirectoryInStorage() {
-        super("createDirectoryInStorage");
+    public static class deleteDirectoryFromStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, deleteDirectoryFromStorage_args, Void> {
+      public deleteDirectoryFromStorage() {
+        super("deleteDirectoryFromStorage");
       }
 
-      public createDirectoryInStorage_args getEmptyArgsInstance() {
-        return new createDirectoryInStorage_args();
+      public deleteDirectoryFromStorage_args getEmptyArgsInstance() {
+        return new deleteDirectoryFromStorage_args();
       }
 
       public org.apache.thrift.async.AsyncMethodCallback<Void> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
         return new org.apache.thrift.async.AsyncMethodCallback<Void>() { 
           public void onComplete(Void o) {
-            createDirectoryInStorage_result result = new createDirectoryInStorage_result();
+            deleteDirectoryFromStorage_result result = new deleteDirectoryFromStorage_result();
             try {
               fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
             } catch (org.apache.thrift.transport.TTransportException e) {
@@ -40053,7 +40095,7 @@ public class Airavata {
           public void onError(java.lang.Exception e) {
             byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
             org.apache.thrift.TSerializable msg;
-            createDirectoryInStorage_result result = new createDirectoryInStorage_result();
+            deleteDirectoryFromStorage_result result = new deleteDirectoryFromStorage_result();
             if (e instanceof org.apache.airavata.model.error.InvalidRequestException) {
               result.ire = (org.apache.airavata.model.error.InvalidRequestException) e;
               result.setIreIsSet(true);
@@ -40097,25 +40139,25 @@ public class Airavata {
         return false;
       }
 
-      public void start(I iface, createDirectoryInStorage_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
-        iface.createDirectoryInStorage(args.authzToken, args.gatewayId, args.storageResourceId, args.userId, args.dirPath,resultHandler);
+      public void start(I iface, deleteDirectoryFromStorage_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
+        iface.deleteDirectoryFromStorage(args.authzToken, args.gatewayId, args.storageResourceId, args.userId, args.path,resultHandler);
       }
     }
 
-    public static class checkIsFileInStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, checkIsFileInStorage_args, java.lang.Boolean> {
-      public checkIsFileInStorage() {
-        super("checkIsFileInStorage");
+    public static class isExistInStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, isExistInStorage_args, java.lang.Boolean> {
+      public isExistInStorage() {
+        super("isExistInStorage");
       }
 
-      public checkIsFileInStorage_args getEmptyArgsInstance() {
-        return new checkIsFileInStorage_args();
+      public isExistInStorage_args getEmptyArgsInstance() {
+        return new isExistInStorage_args();
       }
 
       public org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
         return new org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean>() { 
           public void onComplete(java.lang.Boolean o) {
-            checkIsFileInStorage_result result = new checkIsFileInStorage_result();
+            isExistInStorage_result result = new isExistInStorage_result();
             result.success = o;
             result.setSuccessIsSet(true);
             try {
@@ -40131,7 +40173,7 @@ public class Airavata {
           public void onError(java.lang.Exception e) {
             byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
             org.apache.thrift.TSerializable msg;
-            checkIsFileInStorage_result result = new checkIsFileInStorage_result();
+            isExistInStorage_result result = new isExistInStorage_result();
             if (e instanceof org.apache.airavata.model.error.InvalidRequestException) {
               result.ire = (org.apache.airavata.model.error.InvalidRequestException) e;
               result.setIreIsSet(true);
@@ -40175,25 +40217,25 @@ public class Airavata {
         return false;
       }
 
-      public void start(I iface, checkIsFileInStorage_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
-        iface.checkIsFileInStorage(args.authzToken, args.gatewayId, args.storageResourceId, args.userId, args.path,resultHandler);
+      public void start(I iface, isExistInStorage_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
+        iface.isExistInStorage(args.authzToken, args.gatewayId, args.storageResourceId, args.userId, args.path,resultHandler);
       }
     }
 
-    public static class renameFileInStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, renameFileInStorage_args, Void> {
-      public renameFileInStorage() {
-        super("renameFileInStorage");
+    public static class createDirectoryInStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, createDirectoryInStorage_args, Void> {
+      public createDirectoryInStorage() {
+        super("createDirectoryInStorage");
       }
 
-      public renameFileInStorage_args getEmptyArgsInstance() {
-        return new renameFileInStorage_args();
+      public createDirectoryInStorage_args getEmptyArgsInstance() {
+        return new createDirectoryInStorage_args();
       }
 
       public org.apache.thrift.async.AsyncMethodCallback<Void> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
         return new org.apache.thrift.async.AsyncMethodCallback<Void>() { 
           public void onComplete(Void o) {
-            renameFileInStorage_result result = new renameFileInStorage_result();
+            createDirectoryInStorage_result result = new createDirectoryInStorage_result();
             try {
               fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
             } catch (org.apache.thrift.transport.TTransportException e) {
@@ -40207,7 +40249,161 @@ public class Airavata {
           public void onError(java.lang.Exception e) {
             byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
             org.apache.thrift.TSerializable msg;
-            renameFileInStorage_result result = new renameFileInStorage_result();
+            createDirectoryInStorage_result result = new createDirectoryInStorage_result();
+            if (e instanceof org.apache.airavata.model.error.InvalidRequestException) {
+              result.ire = (org.apache.airavata.model.error.InvalidRequestException) e;
+              result.setIreIsSet(true);
+              msg = result;
+            } else if (e instanceof org.apache.airavata.model.error.AiravataClientException) {
+              result.ace = (org.apache.airavata.model.error.AiravataClientException) e;
+              result.setAceIsSet(true);
+              msg = result;
+            } else if (e instanceof org.apache.airavata.model.error.AiravataSystemException) {
+              result.ase = (org.apache.airavata.model.error.AiravataSystemException) e;
+              result.setAseIsSet(true);
+              msg = result;
+            } else if (e instanceof org.apache.airavata.model.error.AuthorizationException) {
+              result.ae = (org.apache.airavata.model.error.AuthorizationException) e;
+              result.setAeIsSet(true);
+              msg = result;
+            } else if (e instanceof org.apache.thrift.transport.TTransportException) {
+              _LOGGER.error("TTransportException inside handler", e);
+              fb.close();
+              return;
+            } else if (e instanceof org.apache.thrift.TApplicationException) {
+              _LOGGER.error("TApplicationException inside handler", e);
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TApplicationException)e;
+            } else {
+              _LOGGER.error("Exception inside handler", e);
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+            } catch (java.lang.Exception ex) {
+              _LOGGER.error("Exception writing to internal frame buffer", ex);
+              fb.close();
+            }
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, createDirectoryInStorage_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
+        iface.createDirectoryInStorage(args.authzToken, args.gatewayId, args.storageResourceId, args.userId, args.dirPath,resultHandler);
+      }
+    }
+
+    public static class checkIsFileInStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, checkIsFileInStorage_args, java.lang.Boolean> {
+      public checkIsFileInStorage() {
+        super("checkIsFileInStorage");
+      }
+
+      public checkIsFileInStorage_args getEmptyArgsInstance() {
+        return new checkIsFileInStorage_args();
+      }
+
+      public org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean>() { 
+          public void onComplete(java.lang.Boolean o) {
+            checkIsFileInStorage_result result = new checkIsFileInStorage_result();
+            result.success = o;
+            result.setSuccessIsSet(true);
+            try {
+              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+            } catch (org.apache.thrift.transport.TTransportException e) {
+              _LOGGER.error("TTransportException writing to internal frame buffer", e);
+              fb.close();
+            } catch (java.lang.Exception e) {
+              _LOGGER.error("Exception writing to internal frame buffer", e);
+              onError(e);
+            }
+          }
+          public void onError(java.lang.Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TSerializable msg;
+            checkIsFileInStorage_result result = new checkIsFileInStorage_result();
+            if (e instanceof org.apache.airavata.model.error.InvalidRequestException) {
+              result.ire = (org.apache.airavata.model.error.InvalidRequestException) e;
+              result.setIreIsSet(true);
+              msg = result;
+            } else if (e instanceof org.apache.airavata.model.error.AiravataClientException) {
+              result.ace = (org.apache.airavata.model.error.AiravataClientException) e;
+              result.setAceIsSet(true);
+              msg = result;
+            } else if (e instanceof org.apache.airavata.model.error.AiravataSystemException) {
+              result.ase = (org.apache.airavata.model.error.AiravataSystemException) e;
+              result.setAseIsSet(true);
+              msg = result;
+            } else if (e instanceof org.apache.airavata.model.error.AuthorizationException) {
+              result.ae = (org.apache.airavata.model.error.AuthorizationException) e;
+              result.setAeIsSet(true);
+              msg = result;
+            } else if (e instanceof org.apache.thrift.transport.TTransportException) {
+              _LOGGER.error("TTransportException inside handler", e);
+              fb.close();
+              return;
+            } else if (e instanceof org.apache.thrift.TApplicationException) {
+              _LOGGER.error("TApplicationException inside handler", e);
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TApplicationException)e;
+            } else {
+              _LOGGER.error("Exception inside handler", e);
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+            } catch (java.lang.Exception ex) {
+              _LOGGER.error("Exception writing to internal frame buffer", ex);
+              fb.close();
+            }
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, checkIsFileInStorage_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
+        iface.checkIsFileInStorage(args.authzToken, args.gatewayId, args.storageResourceId, args.userId, args.path,resultHandler);
+      }
+    }
+
+    public static class renameFileInStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, renameFileInStorage_args, Void> {
+      public renameFileInStorage() {
+        super("renameFileInStorage");
+      }
+
+      public renameFileInStorage_args getEmptyArgsInstance() {
+        return new renameFileInStorage_args();
+      }
+
+      public org.apache.thrift.async.AsyncMethodCallback<Void> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new org.apache.thrift.async.AsyncMethodCallback<Void>() { 
+          public void onComplete(Void o) {
+            renameFileInStorage_result result = new renameFileInStorage_result();
+            try {
+              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+            } catch (org.apache.thrift.transport.TTransportException e) {
+              _LOGGER.error("TTransportException writing to internal frame buffer", e);
+              fb.close();
+            } catch (java.lang.Exception e) {
+              _LOGGER.error("Exception writing to internal frame buffer", e);
+              onError(e);
+            }
+          }
+          public void onError(java.lang.Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TSerializable msg;
+            renameFileInStorage_result result = new renameFileInStorage_result();
             if (e instanceof org.apache.airavata.model.error.InvalidRequestException) {
               result.ire = (org.apache.airavata.model.error.InvalidRequestException) e;
               result.setIreIsSet(true);
@@ -293567,15 +293763,1669 @@ public class Airavata {
       }
     }
 
-    private static class getGatewayGroups_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public getGatewayGroups_argsStandardScheme getScheme() {
-        return new getGatewayGroups_argsStandardScheme();
+    private static class getGatewayGroups_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getGatewayGroups_argsStandardScheme getScheme() {
+        return new getGatewayGroups_argsStandardScheme();
+      }
+    }
+
+    private static class getGatewayGroups_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<getGatewayGroups_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, getGatewayGroups_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TField schemeField;
+        iprot.readStructBegin();
+        while (true)
+        {
+          schemeField = iprot.readFieldBegin();
+          if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+            break;
+          }
+          switch (schemeField.id) {
+            case 1: // AUTHZ_TOKEN
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.authzToken = new org.apache.airavata.model.security.AuthzToken();
+                struct.authzToken.read(iprot);
+                struct.setAuthzTokenIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            default:
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+          }
+          iprot.readFieldEnd();
+        }
+        iprot.readStructEnd();
+
+        // check for required fields of primitive type, which can't be checked in the validate method
+        struct.validate();
+      }
+
+      public void write(org.apache.thrift.protocol.TProtocol oprot, getGatewayGroups_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.authzToken != null) {
+          oprot.writeFieldBegin(AUTHZ_TOKEN_FIELD_DESC);
+          struct.authzToken.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class getGatewayGroups_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getGatewayGroups_argsTupleScheme getScheme() {
+        return new getGatewayGroups_argsTupleScheme();
+      }
+    }
+
+    private static class getGatewayGroups_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<getGatewayGroups_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, getGatewayGroups_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        struct.authzToken.write(oprot);
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, getGatewayGroups_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        struct.authzToken = new org.apache.airavata.model.security.AuthzToken();
+        struct.authzToken.read(iprot);
+        struct.setAuthzTokenIsSet(true);
+      }
+    }
+
+    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+    }
+  }
+
+  public static class getGatewayGroups_result implements org.apache.thrift.TBase<getGatewayGroups_result, getGatewayGroups_result._Fields>, java.io.Serializable, Cloneable, Comparable<getGatewayGroups_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getGatewayGroups_result");
+
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);
+    private static final org.apache.thrift.protocol.TField IRE_FIELD_DESC = new org.apache.thrift.protocol.TField("ire", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+    private static final org.apache.thrift.protocol.TField ACE_FIELD_DESC = new org.apache.thrift.protocol.TField("ace", org.apache.thrift.protocol.TType.STRUCT, (short)2);
+    private static final org.apache.thrift.protocol.TField ASE_FIELD_DESC = new org.apache.thrift.protocol.TField("ase", org.apache.thrift.protocol.TType.STRUCT, (short)3);
+    private static final org.apache.thrift.protocol.TField AE_FIELD_DESC = new org.apache.thrift.protocol.TField("ae", org.apache.thrift.protocol.TType.STRUCT, (short)4);
+
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getGatewayGroups_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getGatewayGroups_resultTupleSchemeFactory();
+
+    public org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups success; // required
+    public org.apache.airavata.model.error.InvalidRequestException ire; // required
+    public org.apache.airavata.model.error.AiravataClientException ace; // required
+    public org.apache.airavata.model.error.AiravataSystemException ase; // required
+    public org.apache.airavata.model.error.AuthorizationException ae; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SUCCESS((short)0, "success"),
+      IRE((short)1, "ire"),
+      ACE((short)2, "ace"),
+      ASE((short)3, "ase"),
+      AE((short)4, "ae");
+
+      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
+
+      static {
+        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 0: // SUCCESS
+            return SUCCESS;
+          case 1: // IRE
+            return IRE;
+          case 2: // ACE
+            return ACE;
+          case 3: // ASE
+            return ASE;
+          case 4: // AE
+            return AE;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(java.lang.String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final java.lang.String _fieldName;
+
+      _Fields(short thriftId, java.lang.String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public java.lang.String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups.class)));
+      tmpMap.put(_Fields.IRE, new org.apache.thrift.meta_data.FieldMetaData("ire", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.error.InvalidRequestException.class)));
+      tmpMap.put(_Fields.ACE, new org.apache.thrift.meta_data.FieldMetaData("ace", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.error.AiravataClientException.class)));
+      tmpMap.put(_Fields.ASE, new org.apache.thrift.meta_data.FieldMetaData("ase", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.error.AiravataSystemException.class)));
+      tmpMap.put(_Fields.AE, new org.apache.thrift.meta_data.FieldMetaData("ae", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.error.AuthorizationException.class)));
+      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getGatewayGroups_result.class, metaDataMap);
+    }
+
+    public getGatewayGroups_result() {
+    }
+
+    public getGatewayGroups_result(
+      org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups success,
+      org.apache.airavata.model.error.InvalidRequestException ire,
+      org.apache.airavata.model.error.AiravataClientException ace,
+      org.apache.airavata.model.error.AiravataSystemException ase,
+      org.apache.airavata.model.error.AuthorizationException ae)
+    {
+      this();
+      this.success = success;
+      this.ire = ire;
+      this.ace = ace;
+      this.ase = ase;
+      this.ae = ae;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public getGatewayGroups_result(getGatewayGroups_result other) {
+      if (other.isSetSuccess()) {
+        this.success = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups(other.success);
+      }
+      if (other.isSetIre()) {
+        this.ire = new org.apache.airavata.model.error.InvalidRequestException(other.ire);
+      }
+      if (other.isSetAce()) {
+        this.ace = new org.apache.airavata.model.error.AiravataClientException(other.ace);
+      }
+      if (other.isSetAse()) {
+        this.ase = new org.apache.airavata.model.error.AiravataSystemException(other.ase);
+      }
+      if (other.isSetAe()) {
+        this.ae = new org.apache.airavata.model.error.AuthorizationException(other.ae);
+      }
+    }
+
+    public getGatewayGroups_result deepCopy() {
+      return new getGatewayGroups_result(this);
+    }
+
+    @Override
+    public void clear() {
+      this.success = null;
+      this.ire = null;
+      this.ace = null;
+      this.ase = null;
+      this.ae = null;
+    }
+
+    public org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups getSuccess() {
+      return this.success;
+    }
+
+    public getGatewayGroups_result setSuccess(org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups success) {
+      this.success = success;
+      return this;
+    }
+
+    public void unsetSuccess() {
+      this.success = null;
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return this.success != null;
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      if (!value) {
+        this.success = null;
+      }
+    }
+
+    public org.apache.airavata.model.error.InvalidRequestException getIre() {
+      return this.ire;
+    }
+
+    public getGatewayGroups_result setIre(org.apache.airavata.model.error.InvalidRequestException ire) {
+      this.ire = ire;
+      return this;
+    }
+
+    public void unsetIre() {
+      this.ire = null;
+    }
+
+    /** Returns true if field ire is set (has been assigned a value) and false otherwise */
+    public boolean isSetIre() {
+      return this.ire != null;
+    }
+
+    public void setIreIsSet(boolean value) {
+      if (!value) {
+        this.ire = null;
+      }
+    }
+
+    public org.apache.airavata.model.error.AiravataClientException getAce() {
+      return this.ace;
+    }
+
+    public getGatewayGroups_result setAce(org.apache.airavata.model.error.AiravataClientException ace) {
+      this.ace = ace;
+      return this;
+    }
+
+    public void unsetAce() {
+      this.ace = null;
+    }
+
+    /** Returns true if field ace is set (has been assigned a value) and false otherwise */
+    public boolean isSetAce() {
+      return this.ace != null;
+    }
+
+    public void setAceIsSet(boolean value) {
+      if (!value) {
+        this.ace = null;
+      }
+    }
+
+    public org.apache.airavata.model.error.AiravataSystemException getAse() {
+      return this.ase;
+    }
+
+    public getGatewayGroups_result setAse(org.apache.airavata.model.error.AiravataSystemException ase) {
+      this.ase = ase;
+      return this;
+    }
+
+    public void unsetAse() {
+      this.ase = null;
+    }
+
+    /** Returns true if field ase is set (has been assigned a value) and false otherwise */
+    public boolean isSetAse() {
+      return this.ase != null;
+    }
+
+    public void setAseIsSet(boolean value) {
+      if (!value) {
+        this.ase = null;
+      }
+    }
+
+    public org.apache.airavata.model.error.AuthorizationException getAe() {
+      return this.ae;
+    }
+
+    public getGatewayGroups_result setAe(org.apache.airavata.model.error.AuthorizationException ae) {
+      this.ae = ae;
+      return this;
+    }
+
+    public void unsetAe() {
+      this.ae = null;
+    }
+
+    /** Returns true if field ae is set (has been assigned a value) and false otherwise */
+    public boolean isSetAe() {
+      return this.ae != null;
+    }
+
+    public void setAeIsSet(boolean value) {
+      if (!value) {
+        this.ae = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, java.lang.Object value) {
+      switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups)value);
+        }
+        break;
+
+      case IRE:
+        if (value == null) {
+          unsetIre();
+        } else {
+          setIre((org.apache.airavata.model.error.InvalidRequestException)value);
+        }
+        break;
+
+      case ACE:
+        if (value == null) {
+          unsetAce();
+        } else {
+          setAce((org.apache.airavata.model.error.AiravataClientException)value);
+        }
+        break;
+
+      case ASE:
+        if (value == null) {
+          unsetAse();
+        } else {
+          setAse((org.apache.airavata.model.error.AiravataSystemException)value);
+        }
+        break;
+
+      case AE:
+        if (value == null) {
+          unsetAe();
+        } else {
+          setAe((org.apache.airavata.model.error.AuthorizationException)value);
+        }
+        break;
+
+      }
+    }
+
+    public java.lang.Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SUCCESS:
+        return getSuccess();
+
+      case IRE:
+        return getIre();
+
+      case ACE:
+        return getAce();
+
+      case ASE:
+        return getAse();
+
+      case AE:
+        return getAe();
+
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new java.lang.IllegalArgumentException();
+      }
+
+      switch (field) {
+      case SUCCESS:
+        return isSetSuccess();
+      case IRE:
+        return isSetIre();
+      case ACE:
+        return isSetAce();
+      case ASE:
+        return isSetAse();
+      case AE:
+        return isSetAe();
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(java.lang.Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof getGatewayGroups_result)
+        return this.equals((getGatewayGroups_result)that);
+      return false;
+    }
+
+    public boolean equals(getGatewayGroups_result that) {
+      if (that == null)
+        return false;
+      if (this == that)
+        return true;
+
+      boolean this_present_success = true && this.isSetSuccess();
+      boolean that_present_success = true && that.isSetSuccess();
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (!this.success.equals(that.success))
+          return false;
+      }
+
+      boolean this_present_ire = true && this.isSetIre();
+      boolean that_present_ire = true && that.isSetIre();
+      if (this_present_ire || that_present_ire) {
+        if (!(this_present_ire && that_present_ire))
+          return false;
+        if (!this.ire.equals(that.ire))
+          return false;
+      }
+
+      boolean this_present_ace = true && this.isSetAce();
+      boolean that_present_ace = true && that.isSetAce();
+      if (this_present_ace || that_present_ace) {
+        if (!(this_present_ace && that_present_ace))
+          return false;
+        if (!this.ace.equals(that.ace))
+          return false;
+      }
+
+      boolean this_present_ase = true && this.isSetAse();
+      boolean that_present_ase = true && that.isSetAse();
+      if (this_present_ase || that_present_ase) {
+        if (!(this_present_ase && that_present_ase))
+          return false;
+        if (!this.ase.equals(that.ase))
+          return false;
+      }
+
+      boolean this_present_ae = true && this.isSetAe();
+      boolean that_present_ae = true && that.isSetAe();
+      if (this_present_ae || that_present_ae) {
+        if (!(this_present_ae && that_present_ae))
+          return false;
+        if (!this.ae.equals(that.ae))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      int hashCode = 1;
+
+      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
+      if (isSetSuccess())
+        hashCode = hashCode * 8191 + success.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetIre()) ? 131071 : 524287);
+      if (isSetIre())
+        hashCode = hashCode * 8191 + ire.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetAce()) ? 131071 : 524287);
+      if (isSetAce())
+        hashCode = hashCode * 8191 + ace.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetAse()) ? 131071 : 524287);
+      if (isSetAse())
+        hashCode = hashCode * 8191 + ase.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetAe()) ? 131071 : 524287);
+      if (isSetAe())
+        hashCode = hashCode * 8191 + ae.hashCode();
+
+      return hashCode;
+    }
+
+    @Override
+    public int compareTo(getGatewayGroups_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = java.lang.Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetIre()).compareTo(other.isSetIre());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetIre()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ire, other.ire);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetAce()).compareTo(other.isSetAce());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAce()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ace, other.ace);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetAse()).compareTo(other.isSetAse());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAse()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ase, other.ase);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetAe()).compareTo(other.isSetAe());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAe()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ae, other.ae);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      scheme(iprot).read(iprot, this);
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      scheme(oprot).write(oprot, this);
+      }
+
+    @Override
+    public java.lang.String toString() {
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("getGatewayGroups_result(");
+      boolean first = true;
+
+      sb.append("success:");
+      if (this.success == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.success);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("ire:");
+      if (this.ire == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ire);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("ace:");
+      if (this.ace == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ace);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("ase:");
+      if (this.ase == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ase);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("ae:");
+      if (this.ae == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ae);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      // check for sub-struct validity
+      if (success != null) {
+        success.validate();
+      }
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
+      try {
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private static class getGatewayGroups_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getGatewayGroups_resultStandardScheme getScheme() {
+        return new getGatewayGroups_resultStandardScheme();
+      }
+    }
+
+    private static class getGatewayGroups_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<getGatewayGroups_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, getGatewayGroups_result struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TField schemeField;
+        iprot.readStructBegin();
+        while (true)
+        {
+          schemeField = iprot.readFieldBegin();
+          if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+            break;
+          }
+          switch (schemeField.id) {
+            case 0: // SUCCESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.success = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups();
+                struct.success.read(iprot);
+                struct.setSuccessIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 1: // IRE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.ire = new org.apache.airavata.model.error.InvalidRequestException();
+                struct.ire.read(iprot);
+                struct.setIreIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // ACE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.ace = new org.apache.airavata.model.error.AiravataClientException();
+                struct.ace.read(iprot);
+                struct.setAceIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 3: // ASE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.ase = new org.apache.airavata.model.error.AiravataSystemException();
+                struct.ase.read(iprot);
+                struct.setAseIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 4: // AE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.ae = new org.apache.airavata.model.error.AuthorizationException();
+                struct.ae.read(iprot);
+                struct.setAeIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            default:
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+          }
+          iprot.readFieldEnd();
+        }
+        iprot.readStructEnd();
+
+        // check for required fields of primitive type, which can't be checked in the validate method
+        struct.validate();
+      }
+
+      public void write(org.apache.thrift.protocol.TProtocol oprot, getGatewayGroups_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.success != null) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          struct.success.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        if (struct.ire != null) {
+          oprot.writeFieldBegin(IRE_FIELD_DESC);
+          struct.ire.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        if (struct.ace != null) {
+          oprot.writeFieldBegin(ACE_FIELD_DESC);
+          struct.ace.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        if (struct.ase != null) {
+          oprot.writeFieldBegin(ASE_FIELD_DESC);
+          struct.ase.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        if (struct.ae != null) {
+          oprot.writeFieldBegin(AE_FIELD_DESC);
+          struct.ae.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class getGatewayGroups_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getGatewayGroups_resultTupleScheme getScheme() {
+        return new getGatewayGroups_resultTupleScheme();
+      }
+    }
+
+    private static class getGatewayGroups_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<getGatewayGroups_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, getGatewayGroups_result struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        java.util.BitSet optionals = new java.util.BitSet();
+        if (struct.isSetSuccess()) {
+          optionals.set(0);
+        }
+        if (struct.isSetIre()) {
+          optionals.set(1);
+        }
+        if (struct.isSetAce()) {
+          optionals.set(2);
+        }
+        if (struct.isSetAse()) {
+          optionals.set(3);
+        }
+        if (struct.isSetAe()) {
+          optionals.set(4);
+        }
+        oprot.writeBitSet(optionals, 5);
+        if (struct.isSetSuccess()) {
+          struct.success.write(oprot);
+        }
+        if (struct.isSetIre()) {
+          struct.ire.write(oprot);
+        }
+        if (struct.isSetAce()) {
+          struct.ace.write(oprot);
+        }
+        if (struct.isSetAse()) {
+          struct.ase.write(oprot);
+        }
+        if (struct.isSetAe()) {
+          struct.ae.write(oprot);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, getGatewayGroups_result struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        java.util.BitSet incoming = iprot.readBitSet(5);
+        if (incoming.get(0)) {
+          struct.success = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups();
+          struct.success.read(iprot);
+          struct.setSuccessIsSet(true);
+        }
+        if (incoming.get(1)) {
+          struct.ire = new org.apache.airavata.model.error.InvalidRequestException();
+          struct.ire.read(iprot);
+          struct.setIreIsSet(true);
+        }
+        if (incoming.get(2)) {
+          struct.ace = new org.apache.airavata.model.error.AiravataClientException();
+          struct.ace.read(iprot);
+          struct.setAceIsSet(true);
+        }
+        if (incoming.get(3)) {
+          struct.ase = new org.apache.airavata.model.error.AiravataSystemException();
+          struct.ase.read(iprot);
+          struct.setAseIsSet(true);
+        }
+        if (incoming.get(4)) {
+          struct.ae = new org.apache.airavata.model.error.AuthorizationException();
+          struct.ae.read(iprot);
+          struct.setAeIsSet(true);
+        }
+      }
+    }
+
+    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+    }
+  }
+
+  public static class uploadFileToStorage_args implements org.apache.thrift.TBase<uploadFileToStorage_args, uploadFileToStorage_args._Fields>, java.io.Serializable, Cloneable, Comparable<uploadFileToStorage_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("uploadFileToStorage_args");
+
+    private static final org.apache.thrift.protocol.TField AUTHZ_TOKEN_FIELD_DESC = new org.apache.thrift.protocol.TField("authzToken", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+    private static final org.apache.thrift.protocol.TField GATEWAY_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayId", org.apache.thrift.protocol.TType.STRING, (short)2);
+    private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)3);
+    private static final org.apache.thrift.protocol.TField USER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("userId", org.apache.thrift.protocol.TType.STRING, (short)4);
+    private static final org.apache.thrift.protocol.TField CONTENT_FIELD_DESC = new org.apache.thrift.protocol.TField("content", org.apache.thrift.protocol.TType.STRING, (short)5);
+    private static final org.apache.thrift.protocol.TField PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("path", org.apache.thrift.protocol.TType.STRING, (short)6);
+    private static final org.apache.thrift.protocol.TField TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("type", org.apache.thrift.protocol.TType.STRING, (short)7);
+
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new uploadFileToStorage_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new uploadFileToStorage_argsTupleSchemeFactory();
+
+    public org.apache.airavata.model.security.AuthzToken authzToken; // required
+    public java.lang.String gatewayId; // required
+    public java.lang.String storageResourceId; // required
+    public java.lang.String userId; // required
+    public java.nio.ByteBuffer content; // required
+    public java.lang.String path; // required
+    public java.lang.String type; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      AUTHZ_TOKEN((short)1, "authzToken"),
+      GATEWAY_ID((short)2, "gatewayId"),
+      STORAGE_RESOURCE_ID((short)3, "storageResourceId"),
+      USER_ID((short)4, "userId"),
+      CONTENT((short)5, "content"),
+      PATH((short)6, "path"),
+      TYPE((short)7, "type");
+
+      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
+
+      static {
+        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 1: // AUTHZ_TOKEN
+            return AUTHZ_TOKEN;
+          case 2: // GATEWAY_ID
+            return GATEWAY_ID;
+          case 3: // STORAGE_RESOURCE_ID
+            return STORAGE_RESOURCE_ID;
+          case 4: // USER_ID
+            return USER_ID;
+          case 5: // CONTENT
+            return CONTENT;
+          case 6: // PATH
+            return PATH;
+          case 7: // TYPE
+            return TYPE;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(java.lang.String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final java.lang.String _fieldName;
+
+      _Fields(short thriftId, java.lang.String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public java.lang.String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.AUTHZ_TOKEN, new org.apache.thrift.meta_data.FieldMetaData("authzToken", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.security.AuthzToken.class)));
+      tmpMap.put(_Fields.GATEWAY_ID, new org.apache.thrift.meta_data.FieldMetaData("gatewayId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.STORAGE_RESOURCE_ID, new org.apache.thrift.meta_data.FieldMetaData("storageResourceId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.USER_ID, new org.apache.thrift.meta_data.FieldMetaData("userId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.CONTENT, new org.apache.thrift.meta_data.FieldMetaData("content", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING          , true)));
+      tmpMap.put(_Fields.PATH, new org.apache.thrift.meta_data.FieldMetaData("path", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.TYPE, new org.apache.thrift.meta_data.FieldMetaData("type", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(uploadFileToStorage_args.class, metaDataMap);
+    }
+
+    public uploadFileToStorage_args() {
+    }
+
+    public uploadFileToStorage_args(
+      org.apache.airavata.model.security.AuthzToken authzToken,
+      java.lang.String gatewayId,
+      java.lang.String storageResourceId,
+      java.lang.String userId,
+      java.nio.ByteBuffer content,
+      java.lang.String path,
+      java.lang.String type)
+    {
+      this();
+      this.authzToken = authzToken;
+      this.gatewayId = gatewayId;
+      this.storageResourceId = storageResourceId;
+      this.userId = userId;
+      this.content = org.apache.thrift.TBaseHelper.copyBinary(content);
+      this.path = path;
+      this.type = type;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public uploadFileToStorage_args(uploadFileToStorage_args other) {
+      if (other.isSetAuthzToken()) {
+        this.authzToken = new org.apache.airavata.model.security.AuthzToken(other.authzToken);
+      }
+      if (other.isSetGatewayId()) {
+        this.gatewayId = other.gatewayId;
+      }
+      if (other.isSetStorageResourceId()) {
+        this.storageResourceId = other.storageResourceId;
+      }
+      if (other.isSetUserId()) {
+        this.userId = other.userId;
+      }
+      if (other.isSetContent()) {
+        this.content = org.apache.thrift.TBaseHelper.copyBinary(other.content);
+      }
+      if (other.isSetPath()) {
+        this.path = other.path;
+      }
+      if (other.isSetType()) {
+        this.type = other.type;
+      }
+    }
+
+    public uploadFileToStorage_args deepCopy() {
+      return new uploadFileToStorage_args(this);
+    }
+
+    @Override
+    public void clear() {
+      this.authzToken = null;
+      this.gatewayId = null;
+      this.storageResourceId = null;
+      this.userId = null;
+      this.content = null;
+      this.path = null;
+      this.type = null;
+    }
+
+    public org.apache.airavata.model.security.AuthzToken getAuthzToken() {
+      return this.authzToken;
+    }
+
+    public uploadFileToStorage_args setAuthzToken(org.apache.airavata.model.security.AuthzToken authzToken) {
+      this.authzToken = authzToken;
+      return this;
+    }
+
+    public void unsetAuthzToken() {
+      this.authzToken = null;
+    }
+
+    /** Returns true if field authzToken is set (has been assigned a value) and false otherwise */
+    public boolean isSetAuthzToken() {
+      return this.authzToken != null;
+    }
+
+    public void setAuthzTokenIsSet(boolean value) {
+      if (!value) {
+        this.authzToken = null;
+      }
+    }
+
+    public java.lang.String getGatewayId() {
+      return this.gatewayId;
+    }
+
+    public uploadFileToStorage_args setGatewayId(java.lang.String gatewayId) {
+      this.gatewayId = gatewayId;
+      return this;
+    }
+
+    public void unsetGatewayId() {
+      this.gatewayId = null;
+    }
+
+    /** Returns true if field gatewayId is set (has been assigned a value) and false otherwise */
+    public boolean isSetGatewayId() {
+      return this.gatewayId != null;
+    }
+
+    public void setGatewayIdIsSet(boolean value) {
+      if (!value) {
+        this.gatewayId = null;
+      }
+    }
+
+    public java.lang.String getStorageResourceId() {
+      return this.storageResourceId;
+    }
+
+    public uploadFileToStorage_args setStorageResourceId(java.lang.String storageResourceId) {
+      this.storageResourceId = storageResourceId;
+      return this;
+    }
+
+    public void unsetStorageResourceId() {
+      this.storageResourceId = null;
+    }
+
+    /** Returns true if field storageResourceId is set (has been assigned a value) and false otherwise */
+    public boolean isSetStorageResourceId() {
+      return this.storageResourceId != null;
+    }
+
+    public void setStorageResourceIdIsSet(boolean value) {
+      if (!value) {
+        this.storageResourceId = null;
+      }
+    }
+
+    public java.lang.String getUserId() {
+      return this.userId;
+    }
+
+    public uploadFileToStorage_args setUserId(java.lang.String userId) {
+      this.userId = userId;
+      return this;
+    }
+
+    public void unsetUserId() {
+      this.userId = null;
+    }
+
+    /** Returns true if field userId is set (has been assigned a value) and false otherwise */
+    public boolean isSetUserId() {
+      return this.userId != null;
+    }
+
+    public void setUserIdIsSet(boolean value) {
+      if (!value) {
+        this.userId = null;
+      }
+    }
+
+    public byte[] getContent() {
+      setContent(org.apache.thrift.TBaseHelper.rightSize(content));
+      return content == null ? null : content.array();
+    }
+
+    public java.nio.ByteBuffer bufferForContent() {
+      return org.apache.thrift.TBaseHelper.copyBinary(content);
+    }
+
+    public uploadFileToStorage_args setContent(byte[] content) {
+      this.content = content == null ? (java.nio.ByteBuffer)null : java.nio.ByteBuffer.wrap(content.clone());
+      return this;
+    }
+
+    public uploadFileToStorage_args setContent(java.nio.ByteBuffer content) {
+      this.content = org.apache.thrift.TBaseHelper.copyBinary(content);
+      return this;
+    }
+
+    public void unsetContent() {
+      this.content = null;
+    }
+
+    /** Returns true if field content is set (has been assigned a value) and false otherwise */
+    public boolean isSetContent() {
+      return this.content != null;
+    }
+
+    public void setContentIsSet(boolean value) {
+      if (!value) {
+        this.content = null;
+      }
+    }
+
+    public java.lang.String getPath() {
+      return this.path;
+    }
+
+    public uploadFileToStorage_args setPath(java.lang.String path) {
+      this.path = path;
+      return this;
+    }
+
+    public void unsetPath() {
+      this.path = null;
+    }
+
+    /** Returns true if field path is set (has been assigned a value) and false otherwise */
+    public boolean isSetPath() {
+      return this.path != null;
+    }
+
+    public void setPathIsSet(boolean value) {
+      if (!value) {
+        this.path = null;
+      }
+    }
+
+    public java.lang.String getType() {
+      return this.type;
+    }
+
+    public uploadFileToStorage_args setType(java.lang.String type) {
+      this.type = type;
+      return this;
+    }
+
+    public void unsetType() {
+      this.type = null;
+    }
+
+    /** Returns true if field type is set (has been assigned a value) and false otherwise */
+    public boolean isSetType() {
+      return this.type != null;
+    }
+
+    public void setTypeIsSet(boolean value) {
+      if (!value) {
+        this.type = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, java.lang.Object value) {
+      switch (field) {
+      case AUTHZ_TOKEN:
+        if (value == null) {
+          unsetAuthzToken();
+        } else {
+          setAuthzToken((org.apache.airavata.model.security.AuthzToken)value);
+        }
+        break;
+
+      case GATEWAY_ID:
+        if (value == null) {
+          unsetGatewayId();
+        } else {
+          setGatewayId((java.lang.String)value);
+        }
+        break;
+
+      case STORAGE_RESOURCE_ID:
+        if (value == null) {
+          unsetStorageResourceId();
+        } else {
+          setStorageResourceId((java.lang.String)value);
+        }
+        break;
+
+      case USER_ID:
+        if (value == null) {
+          unsetUserId();
+        } else {
+          setUserId((java.lang.String)value);
+        }
+        break;
+
+      case CONTENT:
+        if (value == null) {
+          unsetContent();
+        } else {
+          if (value instanceof byte[]) {
+            setContent((byte[])value);
+          } else {
+            setContent((java.nio.ByteBuffer)value);
+          }
+        }
+        break;
+
+      case PATH:
+        if (value == null) {
+          unsetPath();
+        } else {
+          setPath((java.lang.String)value);
+        }
+        break;
+
+      case TYPE:
+        if (value == null) {
+          unsetType();
+        } else {
+          setType((java.lang.String)value);
+        }
+        break;
+
+      }
+    }
+
+    public java.lang.Object getFieldValue(_Fields field) {
+      switch (field) {
+      case AUTHZ_TOKEN:
+        return getAuthzToken();
+
+      case GATEWAY_ID:
+        return getGatewayId();
+
+      case STORAGE_RESOURCE_ID:
+        return getStorageResourceId();
+
+      case USER_ID:
+        return getUserId();
+
+      case CONTENT:
+        return getContent();
+
+      case PATH:
+        return getPath();
+
+      case TYPE:
+        return getType();
+
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new java.lang.IllegalArgumentException();
+      }
+
+      switch (field) {
+      case AUTHZ_TOKEN:
+        return isSetAuthzToken();
+      case GATEWAY_ID:
+        return isSetGatewayId();
+      case STORAGE_RESOURCE_ID:
+        return isSetStorageResourceId();
+      case USER_ID:
+        return isSetUserId();
+      case CONTENT:
+        return isSetContent();
+      case PATH:
+        return isSetPath();
+      case TYPE:
+        return isSetType();
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(java.lang.Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof uploadFileToStorage_args)
+        return this.equals((uploadFileToStorage_args)that);
+      return false;
+    }
+
+    public boolean equals(uploadFileToStorage_args that) {
+      if (that == null)
+        return false;
+      if (this == that)
+        return true;
+
+      boolean this_present_authzToken = true && this.isSetAuthzToken();
+      boolean that_present_authzToken = true && that.isSetAuthzToken();
+      if (this_present_authzToken || that_present_authzToken) {
+        if (!(this_present_authzToken && that_present_authzToken))
+          return false;
+        if (!this.authzToken.equals(that.authzToken))
+          return false;
+      }
+
+      boolean this_present_gatewayId = true && this.isSetGatewayId();
+      boolean that_present_gatewayId = true && that.isSetGatewayId();
+      if (this_present_gatewayId || that_present_gatewayId) {
+        if (!(this_present_gatewayId && that_present_gatewayId))
+          return false;
+        if (!this.gatewayId.equals(that.gatewayId))
+          return false;
+      }
+
+      boolean this_present_storageResourceId = true && this.isSetStorageResourceId();
+      boolean that_present_storageResourceId = true && that.isSetStorageResourceId();
+      if (this_present_storageResourceId || that_present_storageResourceId) {
+        if (!(this_present_storageResourceId && that_present_storageResourceId))
+          return false;
+        if (!this.storageResourceId.equals(that.storageResourceId))
+          return false;
+      }
+
+      boolean this_present_userId = true && this.isSetUserId();
+      boolean that_present_userId = true && that.isSetUserId();
+      if (this_present_userId || that_present_userId) {
+        if (!(this_present_userId && that_present_userId))
+          return false;
+        if (!this.userId.equals(that.userId))
+          return false;
+      }
+
+      boolean this_present_content = true && this.isSetContent();
+      boolean that_present_content = true && that.isSetContent();
+      if (this_present_content || that_present_content) {
+        if (!(this_present_content && that_present_content))
+          return false;
+        if (!this.content.equals(that.content))
+          return false;
+      }
+
+      boolean this_present_path = true && this.isSetPath();
+      boolean that_present_path = true && that.isSetPath();
+      if (this_present_path || that_present_path) {
+        if (!(this_present_path && that_present_path))
+          return false;
+        if (!this.path.equals(that.path))
+          return false;
+      }
+
+      boolean this_present_type = true && this.isSetType();
+      boolean that_present_type = true && that.isSetType();
+      if (this_present_type || that_present_type) {
+        if (!(this_present_type && that_present_type))
+          return false;
+        if (!this.type.equals(that.type))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      int hashCode = 1;
+
+      hashCode = hashCode * 8191 + ((isSetAuthzToken()) ? 131071 : 524287);
+      if (isSetAuthzToken())
+        hashCode = hashCode * 8191 + authzToken.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetGatewayId()) ? 131071 : 524287);
+      if (isSetGatewayId())
+        hashCode = hashCode * 8191 + gatewayId.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetStorageResourceId()) ? 131071 : 524287);
+      if (isSetStorageResourceId())
+        hashCode = hashCode * 8191 + storageResourceId.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetUserId()) ? 131071 : 524287);
+      if (isSetUserId())
+        hashCode = hashCode * 8191 + userId.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetContent()) ? 131071 : 524287);
+      if (isSetContent())
+        hashCode = hashCode * 8191 + content.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetPath()) ? 131071 : 524287);
+      if (isSetPath())
+        hashCode = hashCode * 8191 + path.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetType()) ? 131071 : 524287);
+      if (isSetType())
+        hashCode = hashCode * 8191 + type.hashCode();
+
+      return hashCode;
+    }
+
+    @Override
+    public int compareTo(uploadFileToStorage_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = java.lang.Boolean.valueOf(isSetAuthzToken()).compareTo(other.isSetAuthzToken());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAuthzToken()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.authzToken, other.authzToken);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetGatewayId()).compareTo(other.isSetGatewayId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetGatewayId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.gatewayId, other.gatewayId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetStorageResourceId()).compareTo(other.isSetStorageResourceId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetStorageResourceId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storageResourceId, other.storageResourceId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetUserId()).compareTo(other.isSetUserId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetUserId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userId, other.userId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetContent()).compareTo(other.isSetContent());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetContent()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.content, other.content);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetPath()).compareTo(other.isSetPath());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetPath()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.path, other.path);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetType()).compareTo(other.isSetType());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetType()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.type, other.type);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      scheme(iprot).read(iprot, this);
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      scheme(oprot).write(oprot, this);
+    }
+
+    @Override
+    public java.lang.String toString() {
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("uploadFileToStorage_args(");
+      boolean first = true;
+
+      sb.append("authzToken:");
+      if (this.authzToken == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.authzToken);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("gatewayId:");
+      if (this.gatewayId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.gatewayId);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("storageResourceId:");
+      if (this.storageResourceId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.storageResourceId);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("userId:");
+      if (this.userId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.userId);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("content:");
+      if (this.content == null) {
+        sb.append("null");
+      } else {
+        org.apache.thrift.TBaseHelper.toString(this.content, sb);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("path:");
+      if (this.path == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.path);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("type:");
+      if (this.type == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.type);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      if (authzToken == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'authzToken' was not present! Struct: " + toString());
+      }
+      if (gatewayId == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'gatewayId' was not present! Struct: " + toString());
+      }
+      // check for sub-struct validity
+      if (authzToken != null) {
+        authzToken.validate();
+      }
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
+      try {
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private static class uploadFileToStorage_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public uploadFileToStorage_argsStandardScheme getScheme() {
+        return new uploadFileToStorage_argsStandardScheme();
       }
     }
 
-    private static class getGatewayGroups_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<getGatewayGroups_args> {
+    private static class uploadFileToStorage_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<uploadFileToStorage_args> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, getGatewayGroups_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, uploadFileToStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -293594,6 +295444,54 @@ public class Airavata {
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
+            case 2: // GATEWAY_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.gatewayId = iprot.readString();
+                struct.setGatewayIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 3: // STORAGE_RESOURCE_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.storageResourceId = iprot.readString();
+                struct.setStorageResourceIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 4: // USER_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.userId = iprot.readString();
+                struct.setUserIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 5: // CONTENT
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.content = iprot.readBinary();
+                struct.setContentIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 6: // PATH
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.path = iprot.readString();
+                struct.setPathIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 7: // TYPE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.type = iprot.readString();
+                struct.setTypeIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
             default:
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
           }
@@ -293605,7 +295503,7 @@ public class Airavata {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, getGatewayGroups_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, uploadFileToStorage_args struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
@@ -293614,32 +295512,118 @@ public class Airavata {
           struct.authzToken.write(oprot);
           oprot.writeFieldEnd();
         }
+        if (struct.gatewayId != null) {
+          oprot.writeFieldBegin(GATEWAY_ID_FIELD_DESC);
+          oprot.writeString(struct.gatewayId);
+          oprot.writeFieldEnd();
+        }
+        if (struct.storageResourceId != null) {
+          oprot.writeFieldBegin(STORAGE_RESOURCE_ID_FIELD_DESC);
+          oprot.writeString(struct.storageResourceId);
+          oprot.writeFieldEnd();
+        }
+        if (struct.userId != null) {
+          oprot.writeFieldBegin(USER_ID_FIELD_DESC);
+          oprot.writeString(struct.userId);
+          oprot.writeFieldEnd();
+        }
+        if (struct.content != null) {
+          oprot.writeFieldBegin(CONTENT_FIELD_DESC);
+          oprot.writeBinary(struct.content);
+          oprot.writeFieldEnd();
+        }
+        if (struct.path != null) {
+          oprot.writeFieldBegin(PATH_FIELD_DESC);
+          oprot.writeString(struct.path);
+          oprot.writeFieldEnd();
+        }
+        if (struct.type != null) {
+          oprot.writeFieldBegin(TYPE_FIELD_DESC);
+          oprot.writeString(struct.type);
+          oprot.writeFieldEnd();
+        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
 
     }
 
-    private static class getGatewayGroups_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public getGatewayGroups_argsTupleScheme getScheme() {
-        return new getGatewayGroups_argsTupleScheme();
+    private static class uploadFileToStorage_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public uploadFileToStorage_argsTupleScheme getScheme() {
+        return new uploadFileToStorage_argsTupleScheme();
       }
     }
 
-    private static class getGatewayGroups_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<getGatewayGroups_args> {
+    private static class uploadFileToStorage_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<uploadFileToStorage_args> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, getGatewayGroups_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, uploadFileToStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         struct.authzToken.write(oprot);
+        oprot.writeString(struct.gatewayId);
+        java.util.BitSet optionals = new java.util.BitSet();
+        if (struct.isSetStorageResourceId()) {
+          optionals.set(0);
+        }
+        if (struct.isSetUserId()) {
+          optionals.set(1);
+        }
+        if (struct.isSetContent()) {
+          optionals.set(2);
+        }
+        if (struct.isSetPath()) {
+          optionals.set(3);
+        }
+        if (struct.isSetType()) {
+          optionals.set(4);
+        }
+        oprot.writeBitSet(optionals, 5);
+        if (struct.isSetStorageResourceId()) {
+          oprot.writeString(struct.storageResourceId);
+        }
+        if (struct.isSetUserId()) {
+          oprot.writeString(struct.userId);
+        }
+        if (struct.isSetContent()) {
+          oprot.writeBinary(struct.content);
+        }
+        if (struct.isSetPath()) {
+          oprot.writeString(struct.path);
+        }
+        if (struct.isSetType()) {
+          oprot.writeString(struct.type);
+        }
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, getGatewayGroups_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, uploadFileToStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         struct.authzToken = new org.apache.airavata.model.security.AuthzToken();
         struct.authzToken.read(iprot);
         struct.setAuthzTokenIsSet(true);
+        struct.gatewayId = iprot.readString();
+        struct.setGatewayIdIsSet(true);
+        java.util.BitSet incoming = iprot.readBitSet(5);
+        if (incoming.get(0)) {
+          struct.storageResourceId = iprot.readString();
+          struct.setStorageResourceIdIsSet(true);
+        }
+        if (incoming.get(1)) {
+          struct.userId = iprot.readString();
+          struct.setUserIdIsSet(true);
+        }
+        if (incoming.get(2)) {
+          struct.content = iprot.readBinary();
+          struct.setContentIsSet(true);
+        }
+        if (incoming.get(3)) {
+          struct.path = iprot.readString();
+          struct.setPathIsSet(true);
+        }
+        if (incoming.get(4)) {
+          struct.type = iprot.readString();
+          struct.setTypeIsSet(true);
+        }
       }
     }
 
@@ -293648,19 +295632,17 @@ public class Airavata {
     }
   }
 
-  public static class getGatewayGroups_result implements org.apache.thrift.TBase<getGatewayGroups_result, getGatewayGroups_result._Fields>, java.io.Serializable, Cloneable, Comparable<getGatewayGroups_result>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getGatewayGroups_result");
+  public static class uploadFileToStorage_result implements org.apache.thrift.TBase<uploadFileToStorage_result, uploadFileToStorage_result._Fields>, java.io.Serializable, Cloneable, Comparable<uploadFileToStorage_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("uploadFileToStorage_result");
 
-    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);
     private static final org.apache.thrift.protocol.TField IRE_FIELD_DESC = new org.apache.thrift.protocol.TField("ire", org.apache.thrift.protocol.TType.STRUCT, (short)1);
     private static final org.apache.thrift.protocol.TField ACE_FIELD_DESC = new org.apache.thrift.protocol.TField("ace", org.apache.thrift.protocol.TType.STRUCT, (short)2);
     private static final org.apache.thrift.protocol.TField ASE_FIELD_DESC = new org.apache.thrift.protocol.TField("ase", org.apache.thrift.protocol.TType.STRUCT, (short)3);
     private static final org.apache.thrift.protocol.TField AE_FIELD_DESC = new org.apache.thrift.protocol.TField("ae", org.apache.thrift.protocol.TType.STRUCT, (short)4);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getGatewayGroups_resultStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getGatewayGroups_resultTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new uploadFileToStorage_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new uploadFileToStorage_resultTupleSchemeFactory();
 
-    public org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups success; // required
     public org.apache.airavata.model.error.InvalidRequestException ire; // required
     public org.apache.airavata.model.error.AiravataClientException ace; // required
     public org.apache.airavata.model.error.AiravataSystemException ase; // required
@@ -293668,7 +295650,6 @@ public class Airavata {
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-      SUCCESS((short)0, "success"),
       IRE((short)1, "ire"),
       ACE((short)2, "ace"),
       ASE((short)3, "ase"),
@@ -293687,8 +295668,6 @@ public class Airavata {
        */
       public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
-          case 0: // SUCCESS
-            return SUCCESS;
           case 1: // IRE
             return IRE;
           case 2: // ACE
@@ -293740,8 +295719,6 @@ public class Airavata {
     public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
     static {
       java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
-      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
-          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups.class)));
       tmpMap.put(_Fields.IRE, new org.apache.thrift.meta_data.FieldMetaData("ire", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.error.InvalidRequestException.class)));
       tmpMap.put(_Fields.ACE, new org.apache.thrift.meta_data.FieldMetaData("ace", org.apache.thrift.TFieldRequirementType.DEFAULT, 
@@ -293751,21 +295728,19 @@ public class Airavata {
       tmpMap.put(_Fields.AE, new org.apache.thrift.meta_data.FieldMetaData("ae", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.error.AuthorizationException.class)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getGatewayGroups_result.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(uploadFileToStorage_result.class, metaDataMap);
     }
 
-    public getGatewayGroups_result() {
+    public uploadFileToStorage_result() {
     }
 
-    public getGatewayGroups_result(
-      org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups success,
+    public uploadFileToStorage_result(
       org.apache.airavata.model.error.InvalidRequestException ire,
       org.apache.airavata.model.error.AiravataClientException ace,
       org.apache.airavata.model.error.AiravataSystemException ase,
       org.apache.airavata.model.error.AuthorizationException ae)
     {
       this();
-      this.success = success;
       this.ire = ire;
       this.ace = ace;
       this.ase = ase;
@@ -293775,10 +295750,7 @@ public class Airavata {
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public getGatewayGroups_result(getGatewayGroups_result other) {
-      if (other.isSetSuccess()) {
-        this.success = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups(other.success);
-      }
+    public uploadFileToStorage_result(uploadFileToStorage_result other) {
       if (other.isSetIre()) {
         this.ire = new org.apache.airavata.model.error.InvalidRequestException(other.ire);
       }
@@ -293793,48 +295765,23 @@ public class Airavata {
       }
     }
 
-    public getGatewayGroups_result deepCopy() {
-      return new getGatewayGroups_result(this);
+    public uploadFileToStorage_result deepCopy() {
+      return new uploadFileToStorage_result(this);
     }
 
     @Override
     public void clear() {
-      this.success = null;
       this.ire = null;
       this.ace = null;
       this.ase = null;
       this.ae = null;
     }
 
-    public org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups getSuccess() {
-      return this.success;
-    }
-
-    public getGatewayGroups_result setSuccess(org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups success) {
-      this.success = success;
-      return this;
-    }
-
-    public void unsetSuccess() {
-      this.success = null;
-    }
-
-    /** Returns true if field success is set (has been assigned a value) and false otherwise */
-    public boolean isSetSuccess() {
-      return this.success != null;
-    }
-
-    public void setSuccessIsSet(boolean value) {
-      if (!value) {
-        this.success = null;
-      }
-    }
-
     public org.apache.airavata.model.error.InvalidRequestException getIre() {
       return this.ire;
     }
 
-    public getGatewayGroups_result setIre(org.apache.airavata.model.error.InvalidRequestException ire) {
+    public uploadFileToStorage_result setIre(org.apache.airavata.model.error.InvalidRequestException ire) {
       this.ire = ire;
       return this;
     }
@@ -293858,7 +295805,7 @@ public class Airavata {
       return this.ace;
     }
 
-    public getGatewayGroups_result setAce(org.apache.airavata.model.error.AiravataClientException ace) {
+    public uploadFileToStorage_result setAce(org.apache.airavata.model.error.AiravataClientException ace) {
       this.ace = ace;
       return this;
     }
@@ -293882,7 +295829,7 @@ public class Airavata {
       return this.ase;
     }
 
-    public getGatewayGroups_result setAse(org.apache.airavata.model.error.AiravataSystemException ase) {
+    public uploadFileToStorage_result setAse(org.apache.airavata.model.error.AiravataSystemException ase) {
       this.ase = ase;
       return this;
     }
@@ -293906,7 +295853,7 @@ public class Airavata {
       return this.ae;
     }
 
-    public getGatewayGroups_result setAe(org.apache.airavata.model.error.AuthorizationException ae) {
+    public uploadFileToStorage_result setAe(org.apache.airavata.model.error.AuthorizationException ae) {
       this.ae = ae;
       return this;
     }
@@ -293928,14 +295875,6 @@ public class Airavata {
 
     public void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
-      case SUCCESS:
-        if (value == null) {
-          unsetSuccess();
-        } else {
-          setSuccess((org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups)value);
-        }
-        break;
-
       case IRE:
         if (value == null) {
           unsetIre();
@@ -293973,9 +295912,6 @@ public class Airavata {
 
     public java.lang.Object getFieldValue(_Fields field) {
       switch (field) {
-      case SUCCESS:
-        return getSuccess();
-
       case IRE:
         return getIre();
 
@@ -293999,8 +295935,6 @@ public class Airavata {
       }
 
       switch (field) {
-      case SUCCESS:
-        return isSetSuccess();
       case IRE:
         return isSetIre();
       case ACE:
@@ -294017,26 +295951,17 @@ public class Airavata {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof getGatewayGroups_result)
-        return this.equals((getGatewayGroups_result)that);
+      if (that instanceof uploadFileToStorage_result)
+        return this.equals((uploadFileToStorage_result)that);
       return false;
     }
 
-    public boolean equals(getGatewayGroups_result that) {
+    public boolean equals(uploadFileToStorage_result that) {
       if (that == null)
         return false;
       if (this == that)
         return true;
 
-      boolean this_present_success = true && this.isSetSuccess();
-      boolean that_present_success = true && that.isSetSuccess();
-      if (this_present_success || that_present_success) {
-        if (!(this_present_success && that_present_success))
-          return false;
-        if (!this.success.equals(that.success))
-          return false;
-      }
-
       boolean this_present_ire = true && this.isSetIre();
       boolean that_present_ire = true && that.isSetIre();
       if (this_present_ire || that_present_ire) {
@@ -294080,10 +296005,6 @@ public class Airavata {
     public int hashCode() {
       int hashCode = 1;
 
-      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
-      if (isSetSuccess())
-        hashCode = hashCode * 8191 + success.hashCode();
-
       hashCode = hashCode * 8191 + ((isSetIre()) ? 131071 : 524287);
       if (isSetIre())
         hashCode = hashCode * 8191 + ire.hashCode();
@@ -294104,23 +296025,13 @@ public class Airavata {
     }
 
     @Override
-    public int compareTo(getGatewayGroups_result other) {
+    public int compareTo(uploadFileToStorage_result other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
 
       int lastComparison = 0;
 
-      lastComparison = java.lang.Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-      if (isSetSuccess()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
-        if (lastComparison != 0) {
-          return lastComparison;
-        }
-      }
       lastComparison = java.lang.Boolean.valueOf(isSetIre()).compareTo(other.isSetIre());
       if (lastComparison != 0) {
         return lastComparison;
@@ -294178,17 +296089,9 @@ public class Airavata {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("getGatewayGroups_result(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("uploadFileToStorage_result(");
       boolean first = true;
 
-      sb.append("success:");
-      if (this.success == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.success);
-      }
-      first = false;
-      if (!first) sb.append(", ");
       sb.append("ire:");
       if (this.ire == null) {
         sb.append("null");
@@ -294227,9 +296130,6 @@ public class Airavata {
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
       // check for sub-struct validity
-      if (success != null) {
-        success.validate();
-      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -294248,15 +296148,15 @@ public class Airavata {
       }
     }
 
-    private static class getGatewayGroups_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public getGatewayGroups_resultStandardScheme getScheme() {
-        return new getGatewayGroups_resultStandardScheme();
+    private static class uploadFileToStorage_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public uploadFileToStorage_resultStandardScheme getScheme() {
+        return new uploadFileToStorage_resultStandardScheme();
       }
     }
 
-    private static class getGatewayGroups_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<getGatewayGroups_result> {
+    private static class uploadFileToStorage_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<uploadFileToStorage_result> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, getGatewayGroups_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, uploadFileToStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -294266,15 +296166,6 @@ public class Airavata {
             break;
           }
           switch (schemeField.id) {
-            case 0: // SUCCESS
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-                struct.success = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups();
-                struct.success.read(iprot);
-                struct.setSuccessIsSet(true);
-              } else { 
-                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-              }
-              break;
             case 1: // IRE
               if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                 struct.ire = new org.apache.airavata.model.error.InvalidRequestException();
@@ -294322,15 +296213,10 @@ public class Airavata {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, getGatewayGroups_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, uploadFileToStorage_result struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
-        if (struct.success != null) {
-          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
-          struct.success.write(oprot);
-          oprot.writeFieldEnd();
-        }
         if (struct.ire != null) {
           oprot.writeFieldBegin(IRE_FIELD_DESC);
           struct.ire.write(oprot);
@@ -294357,37 +296243,31 @@ public class Airavata {
 
     }
 
-    private static class getGatewayGroups_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public getGatewayGroups_resultTupleScheme getScheme() {
-        return new getGatewayGroups_resultTupleScheme();
+    private static class uploadFileToStorage_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public uploadFileToStorage_resultTupleScheme getScheme() {
+        return new uploadFileToStorage_resultTupleScheme();
       }
     }
 
-    private static class getGatewayGroups_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<getGatewayGroups_result> {
+    private static class uploadFileToStorage_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<uploadFileToStorage_result> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, getGatewayGroups_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, uploadFileToStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         java.util.BitSet optionals = new java.util.BitSet();
-        if (struct.isSetSuccess()) {
-          optionals.set(0);
-        }
         if (struct.isSetIre()) {
-          optionals.set(1);
+          optionals.set(0);
         }
         if (struct.isSetAce()) {
-          optionals.set(2);
+          optionals.set(1);
         }
         if (struct.isSetAse()) {
-          optionals.set(3);
+          optionals.set(2);
         }
         if (struct.isSetAe()) {
-          optionals.set(4);
-        }
-        oprot.writeBitSet(optionals, 5);
-        if (struct.isSetSuccess()) {
-          struct.success.write(oprot);
+          optionals.set(3);
         }
+        oprot.writeBitSet(optionals, 4);
         if (struct.isSetIre()) {
           struct.ire.write(oprot);
         }
@@ -294403,30 +296283,25 @@ public class Airavata {
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, getGatewayGroups_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, uploadFileToStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
-        java.util.BitSet incoming = iprot.readBitSet(5);
+        java.util.BitSet incoming = iprot.readBitSet(4);
         if (incoming.get(0)) {
-          struct.success = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups();
-          struct.success.read(iprot);
-          struct.setSuccessIsSet(true);
-        }
-        if (incoming.get(1)) {
           struct.ire = new org.apache.airavata.model.error.InvalidRequestException();
           struct.ire.read(iprot);
           struct.setIreIsSet(true);
         }
-        if (incoming.get(2)) {
+        if (incoming.get(1)) {
           struct.ace = new org.apache.airavata.model.error.AiravataClientException();
           struct.ace.read(iprot);
           struct.setAceIsSet(true);
         }
-        if (incoming.get(3)) {
+        if (incoming.get(2)) {
           struct.ase = new org.apache.airavata.model.error.AiravataSystemException();
           struct.ase.read(iprot);
           struct.setAseIsSet(true);
         }
-        if (incoming.get(4)) {
+        if (incoming.get(3)) {
           struct.ae = new org.apache.airavata.model.error.AuthorizationException();
           struct.ae.read(iprot);
           struct.setAeIsSet(true);
@@ -294439,27 +296314,23 @@ public class Airavata {
     }
   }
 
-  public static class uploadFileToStorage_args implements org.apache.thrift.TBase<uploadFileToStorage_args, uploadFileToStorage_args._Fields>, java.io.Serializable, Cloneable, Comparable<uploadFileToStorage_args>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("uploadFileToStorage_args");
+  public static class downloadFileFromStorage_args implements org.apache.thrift.TBase<downloadFileFromStorage_args, downloadFileFromStorage_args._Fields>, java.io.Serializable, Cloneable, Comparable<downloadFileFromStorage_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("downloadFileFromStorage_args");
 
     private static final org.apache.thrift.protocol.TField AUTHZ_TOKEN_FIELD_DESC = new org.apache.thrift.protocol.TField("authzToken", org.apache.thrift.protocol.TType.STRUCT, (short)1);
     private static final org.apache.thrift.protocol.TField GATEWAY_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayId", org.apache.thrift.protocol.TType.STRING, (short)2);
     private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)3);
     private static final org.apache.thrift.protocol.TField USER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("userId", org.apache.thrift.protocol.TType.STRING, (short)4);
-    private static final org.apache.thrift.protocol.TField CONTENT_FIELD_DESC = new org.apache.thrift.protocol.TField("content", org.apache.thrift.protocol.TType.STRING, (short)5);
-    private static final org.apache.thrift.protocol.TField PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("path", org.apache.thrift.protocol.TType.STRING, (short)6);
-    private static final org.apache.thrift.protocol.TField TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("type", org.apache.thrift.protocol.TType.STRING, (short)7);
+    private static final org.apache.thrift.protocol.TField PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("path", org.apache.thrift.protocol.TType.STRING, (short)5);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new uploadFileToStorage_argsStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new uploadFileToStorage_argsTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new downloadFileFromStorage_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new downloadFileFromStorage_argsTupleSchemeFactory();
 
     public org.apache.airavata.model.security.AuthzToken authzToken; // required
     public java.lang.String gatewayId; // required
     public java.lang.String storageResourceId; // required
     public java.lang.String userId; // required
-    public java.nio.ByteBuffer content; // required
     public java.lang.String path; // required
-    public java.lang.String type; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -294467,9 +296338,7 @@ public class Airavata {
       GATEWAY_ID((short)2, "gatewayId"),
       STORAGE_RESOURCE_ID((short)3, "storageResourceId"),
       USER_ID((short)4, "userId"),
-      CONTENT((short)5, "content"),
-      PATH((short)6, "path"),
-      TYPE((short)7, "type");
+      PATH((short)5, "path");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -294492,12 +296361,8 @@ public class Airavata {
             return STORAGE_RESOURCE_ID;
           case 4: // USER_ID
             return USER_ID;
-          case 5: // CONTENT
-            return CONTENT;
-          case 6: // PATH
+          case 5: // PATH
             return PATH;
-          case 7: // TYPE
-            return TYPE;
           default:
             return null;
         }
@@ -294549,42 +296414,34 @@ public class Airavata {
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       tmpMap.put(_Fields.USER_ID, new org.apache.thrift.meta_data.FieldMetaData("userId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-      tmpMap.put(_Fields.CONTENT, new org.apache.thrift.meta_data.FieldMetaData("content", org.apache.thrift.TFieldRequirementType.DEFAULT, 
-          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING          , true)));
       tmpMap.put(_Fields.PATH, new org.apache.thrift.meta_data.FieldMetaData("path", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-      tmpMap.put(_Fields.TYPE, new org.apache.thrift.meta_data.FieldMetaData("type", org.apache.thrift.TFieldRequirementType.DEFAULT, 
-          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(uploadFileToStorage_args.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(downloadFileFromStorage_args.class, metaDataMap);
     }
 
-    public uploadFileToStorage_args() {
+    public downloadFileFromStorage_args() {
     }
 
-    public uploadFileToStorage_args(
+    public downloadFileFromStorage_args(
       org.apache.airavata.model.security.AuthzToken authzToken,
       java.lang.String gatewayId,
       java.lang.String storageResourceId,
       java.lang.String userId,
-      java.nio.ByteBuffer content,
-      java.lang.String path,
-      java.lang.String type)
+      java.lang.String path)
     {
       this();
       this.authzToken = authzToken;
       this.gatewayId = gatewayId;
       this.storageResourceId = storageResourceId;
       this.userId = userId;
-      this.content = org.apache.thrift.TBaseHelper.copyBinary(content);
       this.path = path;
-      this.type = type;
     }
 
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public uploadFileToStorage_args(uploadFileToStorage_args other) {
+    public downloadFileFromStorage_args(downloadFileFromStorage_args other) {
       if (other.isSetAuthzToken()) {
         this.authzToken = new org.apache.airavata.model.security.AuthzToken(other.authzToken);
       }
@@ -294597,19 +296454,13 @@ public class Airavata {
       if (other.isSetUserId()) {
         this.userId = other.userId;
       }
-      if (other.isSetContent()) {
-        this.content = org.apache.thrift.TBaseHelper.copyBinary(other.content);
-      }
       if (other.isSetPath()) {
         this.path = other.path;
       }
-      if (other.isSetType()) {
-        this.type = other.type;
-      }
     }
 
-    public uploadFileToStorage_args deepCopy() {
-      return new uploadFileToStorage_args(this);
+    public downloadFileFromStorage_args deepCopy() {
+      return new downloadFileFromStorage_args(this);
     }
 
     @Override
@@ -294618,16 +296469,14 @@ public class Airavata {
       this.gatewayId = null;
       this.storageResourceId = null;
       this.userId = null;
-      this.content = null;
       this.path = null;
-      this.type = null;
     }
 
     public org.apache.airavata.model.security.AuthzToken getAuthzToken() {
       return this.authzToken;
     }
 
-    public uploadFileToStorage_args setAuthzToken(org.apache.airavata.model.security.AuthzToken authzToken) {
+    public downloadFileFromStorage_args setAuthzToken(org.apache.airavata.model.security.AuthzToken authzToken) {
       this.authzToken = authzToken;
       return this;
     }
@@ -294651,7 +296500,7 @@ public class Airavata {
       return this.gatewayId;
     }
 
-    public uploadFileToStorage_args setGatewayId(java.lang.String gatewayId) {
+    public downloadFileFromStorage_args setGatewayId(java.lang.String gatewayId) {
       this.gatewayId = gatewayId;
       return this;
     }
@@ -294675,7 +296524,7 @@ public class Airavata {
       return this.storageResourceId;
     }
 
-    public uploadFileToStorage_args setStorageResourceId(java.lang.String storageResourceId) {
+    public downloadFileFromStorage_args setStorageResourceId(java.lang.String storageResourceId) {
       this.storageResourceId = storageResourceId;
       return this;
     }
@@ -294699,7 +296548,7 @@ public class Airavata {
       return this.userId;
     }
 
-    public uploadFileToStorage_args setUserId(java.lang.String userId) {
+    public downloadFileFromStorage_args setUserId(java.lang.String userId) {
       this.userId = userId;
       return this;
     }
@@ -294719,45 +296568,11 @@ public class Airavata {
       }
     }
 
-    public byte[] getContent() {
-      setContent(org.apache.thrift.TBaseHelper.rightSize(content));
-      return content == null ? null : content.array();
-    }
-
-    public java.nio.ByteBuffer bufferForContent() {
-      return org.apache.thrift.TBaseHelper.copyBinary(content);
-    }
-
-    public uploadFileToStorage_args setContent(byte[] content) {
-      this.content = content == null ? (java.nio.ByteBuffer)null : java.nio.ByteBuffer.wrap(content.clone());
-      return this;
-    }
-
-    public uploadFileToStorage_args setContent(java.nio.ByteBuffer content) {
-      this.content = org.apache.thrift.TBaseHelper.copyBinary(content);
-      return this;
-    }
-
-    public void unsetContent() {
-      this.content = null;
-    }
-
-    /** Returns true if field content is set (has been assigned a value) and false otherwise */
-    public boolean isSetContent() {
-      return this.content != null;
-    }
-
-    public void setContentIsSet(boolean value) {
-      if (!value) {
-        this.content = null;
-      }
-    }
-
     public java.lang.String getPath() {
       return this.path;
     }
 
-    public uploadFileToStorage_args setPath(java.lang.String path) {
+    public downloadFileFromStorage_args setPath(java.lang.String path) {
       this.path = path;
       return this;
     }
@@ -294777,30 +296592,6 @@ public class Airavata {
       }
     }
 
-    public java.lang.String getType() {
-      return this.type;
-    }
-
-    public uploadFileToStorage_args setType(java.lang.String type) {
-      this.type = type;
-      return this;
-    }
-
-    public void unsetType() {
-      this.type = null;
-    }
-
-    /** Returns true if field type is set (has been assigned a value) and false otherwise */
-    public boolean isSetType() {
-      return this.type != null;
-    }
-
-    public void setTypeIsSet(boolean value) {
-      if (!value) {
-        this.type = null;
-      }
-    }
-
     public void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
       case AUTHZ_TOKEN:
@@ -294835,18 +296626,6 @@ public class Airavata {
         }
         break;
 
-      case CONTENT:
-        if (value == null) {
-          unsetContent();
-        } else {
-          if (value instanceof byte[]) {
-            setContent((byte[])value);
-          } else {
-            setContent((java.nio.ByteBuffer)value);
-          }
-        }
-        break;
-
       case PATH:
         if (value == null) {
           unsetPath();
@@ -294855,14 +296634,6 @@ public class Airavata {
         }
         break;
 
-      case TYPE:
-        if (value == null) {
-          unsetType();
-        } else {
-          setType((java.lang.String)value);
-        }
-        break;
-
       }
     }
 
@@ -294880,15 +296651,9 @@ public class Airavata {
       case USER_ID:
         return getUserId();
 
-      case CONTENT:
-        return getContent();
-
       case PATH:
         return getPath();
 
-      case TYPE:
-        return getType();
-
       }
       throw new java.lang.IllegalStateException();
     }
@@ -294908,12 +296673,8 @@ public class Airavata {
         return isSetStorageResourceId();
       case USER_ID:
         return isSetUserId();
-      case CONTENT:
-        return isSetContent();
       case PATH:
         return isSetPath();
-      case TYPE:
-        return isSetType();
       }
       throw new java.lang.IllegalStateException();
     }
@@ -294922,12 +296683,12 @@ public class Airavata {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof uploadFileToStorage_args)
-        return this.equals((uploadFileToStorage_args)that);
+      if (that instanceof downloadFileFromStorage_args)
+        return this.equals((downloadFileFromStorage_args)that);
       return false;
     }
 
-    public boolean equals(uploadFileToStorage_args that) {
+    public boolean equals(downloadFileFromStorage_args that) {
       if (that == null)
         return false;
       if (this == that)
@@ -294969,15 +296730,6 @@ public class Airavata {
           return false;
       }
 
-      boolean this_present_content = true && this.isSetContent();
-      boolean that_present_content = true && that.isSetContent();
-      if (this_present_content || that_present_content) {
-        if (!(this_present_content && that_present_content))
-          return false;
-        if (!this.content.equals(that.content))
-          return false;
-      }
-
       boolean this_present_path = true && this.isSetPath();
       boolean that_present_path = true && that.isSetPath();
       if (this_present_path || that_present_path) {
@@ -294987,15 +296739,6 @@ public class Airavata {
           return false;
       }
 
-      boolean this_present_type = true && this.isSetType();
-      boolean that_present_type = true && that.isSetType();
-      if (this_present_type || that_present_type) {
-        if (!(this_present_type && that_present_type))
-          return false;
-        if (!this.type.equals(that.type))
-          return false;
-      }
-
       return true;
     }
 
@@ -295019,23 +296762,15 @@ public class Airavata {
       if (isSetUserId())
         hashCode = hashCode * 8191 + userId.hashCode();
 
-      hashCode = hashCode * 8191 + ((isSetContent()) ? 131071 : 524287);
-      if (isSetContent())
-        hashCode = hashCode * 8191 + content.hashCode();
-
       hashCode = hashCode * 8191 + ((isSetPath()) ? 131071 : 524287);
       if (isSetPath())
         hashCode = hashCode * 8191 + path.hashCode();
 
-      hashCode = hashCode * 8191 + ((isSetType()) ? 131071 : 524287);
-      if (isSetType())
-        hashCode = hashCode * 8191 + type.hashCode();
-
       return hashCode;
     }
 
     @Override
-    public int compareTo(uploadFileToStorage_args other) {
+    public int compareTo(downloadFileFromStorage_args other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
@@ -295082,16 +296817,6 @@ public class Airavata {
           return lastComparison;
         }
       }
-      lastComparison = java.lang.Boolean.valueOf(isSetContent()).compareTo(other.isSetContent());
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-      if (isSetContent()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.content, other.content);
-        if (lastComparison != 0) {
-          return lastComparison;
-        }
-      }
       lastComparison = java.lang.Boolean.valueOf(isSetPath()).compareTo(other.isSetPath());
       if (lastComparison != 0) {
         return lastComparison;
@@ -295102,16 +296827,6 @@ public class Airavata {
           return lastComparison;
         }
       }
-      lastComparison = java.lang.Boolean.valueOf(isSetType()).compareTo(other.isSetType());
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-      if (isSetType()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.type, other.type);
-        if (lastComparison != 0) {
-          return lastComparison;
-        }
-      }
       return 0;
     }
 
@@ -295129,7 +296844,7 @@ public class Airavata {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("uploadFileToStorage_args(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("downloadFileFromStorage_args(");
       boolean first = true;
 
       sb.append("authzToken:");
@@ -295164,14 +296879,6 @@ public class Airavata {
       }
       first = false;
       if (!first) sb.append(", ");
-      sb.append("content:");
-      if (this.content == null) {
-        sb.append("null");
-      } else {
-        org.apache.thrift.TBaseHelper.toString(this.content, sb);
-      }
-      first = false;
-      if (!first) sb.append(", ");
       sb.append("path:");
       if (this.path == null) {
         sb.append("null");
@@ -295179,14 +296886,6 @@ public class Airavata {
         sb.append(this.path);
       }
       first = false;
-      if (!first) sb.append(", ");
-      sb.append("type:");
-      if (this.type == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.type);
-      }
-      first = false;
       sb.append(")");
       return sb.toString();
     }
@@ -295221,15 +296920,15 @@ public class Airavata {
       }
     }
 
-    private static class uploadFileToStorage_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public uploadFileToStorage_argsStandardScheme getScheme() {
-        return new uploadFileToStorage_argsStandardScheme();
+    private static class downloadFileFromStorage_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public downloadFileFromStorage_argsStandardScheme getScheme() {
+        return new downloadFileFromStorage_argsStandardScheme();
       }
     }
 
-    private static class uploadFileToStorage_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<uploadFileToStorage_args> {
+    private static class downloadFileFromStorage_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<downloadFileFromStorage_args> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, uploadFileToStorage_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, downloadFileFromStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -295272,15 +296971,7 @@ public class Airavata {
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
-            case 5: // CONTENT
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-                struct.content = iprot.readBinary();
-                struct.setContentIsSet(true);
-              } else { 
-                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-              }
-              break;
-            case 6: // PATH
+            case 5: // PATH
               if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                 struct.path = iprot.readString();
                 struct.setPathIsSet(true);
@@ -295288,14 +296979,6 @@ public class Airavata {
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
-            case 7: // TYPE
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-                struct.type = iprot.readString();
-                struct.setTypeIsSet(true);
-              } else { 
-                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-              }
-              break;
             default:
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
           }
@@ -295307,7 +296990,7 @@ public class Airavata {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, uploadFileToStorage_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, downloadFileFromStorage_args struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
@@ -295331,37 +297014,27 @@ public class Airavata {
           oprot.writeString(struct.userId);
           oprot.writeFieldEnd();
         }
-        if (struct.content != null) {
-          oprot.writeFieldBegin(CONTENT_FIELD_DESC);
-          oprot.writeBinary(struct.content);
-          oprot.writeFieldEnd();
-        }
         if (struct.path != null) {
           oprot.writeFieldBegin(PATH_FIELD_DESC);
           oprot.writeString(struct.path);
           oprot.writeFieldEnd();
         }
-        if (struct.type != null) {
-          oprot.writeFieldBegin(TYPE_FIELD_DESC);
-          oprot.writeString(struct.type);
-          oprot.writeFieldEnd();
-        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
 
     }
 
-    private static class uploadFileToStorage_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public uploadFileToStorage_argsTupleScheme getScheme() {
-        return new uploadFileToStorage_argsTupleScheme();
+    private static class downloadFileFromStorage_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public downloadFileFromStorage_argsTupleScheme getScheme() {
+        return new downloadFileFromStorage_argsTupleScheme();
       }
     }
 
-    private static class uploadFileToStorage_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<uploadFileToStorage_args> {
+    private static class downloadFileFromStorage_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<downloadFileFromStorage_args> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, uploadFileToStorage_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, downloadFileFromStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         struct.authzToken.write(oprot);
         oprot.writeString(struct.gatewayId);
@@ -295372,42 +297045,30 @@ public class Airavata {
         if (struct.isSetUserId()) {
           optionals.set(1);
         }
-        if (struct.isSetContent()) {
-          optionals.set(2);
-        }
         if (struct.isSetPath()) {
-          optionals.set(3);
-        }
-        if (struct.isSetType()) {
-          optionals.set(4);
+          optionals.set(2);
         }
-        oprot.writeBitSet(optionals, 5);
+        oprot.writeBitSet(optionals, 3);
         if (struct.isSetStorageResourceId()) {
           oprot.writeString(struct.storageResourceId);
         }
         if (struct.isSetUserId()) {
           oprot.writeString(struct.userId);
         }
-        if (struct.isSetContent()) {
-          oprot.writeBinary(struct.content);
-        }
         if (struct.isSetPath()) {
           oprot.writeString(struct.path);
         }
-        if (struct.isSetType()) {
-          oprot.writeString(struct.type);
-        }
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, uploadFileToStorage_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, downloadFileFromStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         struct.authzToken = new org.apache.airavata.model.security.AuthzToken();
         struct.authzToken.read(iprot);
         struct.setAuthzTokenIsSet(true);
         struct.gatewayId = iprot.readString();
         struct.setGatewayIdIsSet(true);
-        java.util.BitSet incoming = iprot.readBitSet(5);
+        java.util.BitSet incoming = iprot.readBitSet(3);
         if (incoming.get(0)) {
           struct.storageResourceId = iprot.readString();
           struct.setStorageResourceIdIsSet(true);
@@ -295417,17 +297078,9 @@ public class Airavata {
           struct.setUserIdIsSet(true);
         }
         if (incoming.get(2)) {
-          struct.content = iprot.readBinary();
-          struct.setContentIsSet(true);
-        }
-        if (incoming.get(3)) {
           struct.path = iprot.readString();
           struct.setPathIsSet(true);
         }
-        if (incoming.get(4)) {
-          struct.type = iprot.readString();
-          struct.setTypeIsSet(true);
-        }
       }
     }
 
@@ -295436,17 +297089,19 @@ public class Airavata {
     }
   }
 
-  public static class uploadFileToStorage_result implements org.apache.thrift.TBase<uploadFileToStorage_result, uploadFileToStorage_result._Fields>, java.io.Serializable, Cloneable, Comparable<uploadFileToStorage_result>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("uploadFileToStorage_result");
+  public static class downloadFileFromStorage_result implements org.apache.thrift.TBase<downloadFileFromStorage_result, downloadFileFromStorage_result._Fields>, java.io.Serializable, Cloneable, Comparable<downloadFileFromStorage_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("downloadFileFromStorage_result");
 
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);
     private static final org.apache.thrift.protocol.TField IRE_FIELD_DESC = new org.apache.thrift.protocol.TField("ire", org.apache.thrift.protocol.TType.STRUCT, (short)1);
     private static final org.apache.thrift.protocol.TField ACE_FIELD_DESC = new org.apache.thrift.protocol.TField("ace", org.apache.thrift.protocol.TType.STRUCT, (short)2);
     private static final org.apache.thrift.protocol.TField ASE_FIELD_DESC = new org.apache.thrift.protocol.TField("ase", org.apache.thrift.protocol.TType.STRUCT, (short)3);
     private static final org.apache.thrift.protocol.TField AE_FIELD_DESC = new org.apache.thrift.protocol.TField("ae", org.apache.thrift.protocol.TType.STRUCT, (short)4);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new uploadFileToStorage_resultStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new uploadFileToStorage_resultTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new downloadFileFromStorage_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new downloadFileFromStorage_resultTupleSchemeFactory();
 
+    public org.apache.airavata.model.appcatalog.datamodels.FileStructure success; // required
     public org.apache.airavata.model.error.InvalidRequestException ire; // required
     public org.apache.airavata.model.error.AiravataClientException ace; // required
     public org.apache.airavata.model.error.AiravataSystemException ase; // required
@@ -295454,6 +297109,7 @@ public class Airavata {
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SUCCESS((short)0, "success"),
       IRE((short)1, "ire"),
       ACE((short)2, "ace"),
       ASE((short)3, "ase"),
@@ -295472,6 +297128,8 @@ public class Airavata {
        */
       public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
+          case 0: // SUCCESS
+            return SUCCESS;
           case 1: // IRE
             return IRE;
           case 2: // ACE
@@ -295523,6 +297181,8 @@ public class Airavata {
     public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
     static {
       java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.datamodels.FileStructure.class)));
       tmpMap.put(_Fields.IRE, new org.apache.thrift.meta_data.FieldMetaData("ire", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.error.InvalidRequestException.class)));
       tmpMap.put(_Fields.ACE, new org.apache.thrift.meta_data.FieldMetaData("ace", org.apache.thrift.TFieldRequirementType.DEFAULT, 
@@ -295532,19 +297192,21 @@ public class Airavata {
       tmpMap.put(_Fields.AE, new org.apache.thrift.meta_data.FieldMetaData("ae", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.error.AuthorizationException.class)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(uploadFileToStorage_result.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(downloadFileFromStorage_result.class, metaDataMap);
     }
 
-    public uploadFileToStorage_result() {
+    public downloadFileFromStorage_result() {
     }
 
-    public uploadFileToStorage_result(
+    public downloadFileFromStorage_result(
+      org.apache.airavata.model.appcatalog.datamodels.FileStructure success,
       org.apache.airavata.model.error.InvalidRequestException ire,
       org.apache.airavata.model.error.AiravataClientException ace,
       org.apache.airavata.model.error.AiravataSystemException ase,
       org.apache.airavata.model.error.AuthorizationException ae)
     {
       this();
+      this.success = success;
       this.ire = ire;
       this.ace = ace;
       this.ase = ase;
@@ -295554,7 +297216,10 @@ public class Airavata {
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public uploadFileToStorage_result(uploadFileToStorage_result other) {
+    public downloadFileFromStorage_result(downloadFileFromStorage_result other) {
+      if (other.isSetSuccess()) {
+        this.success = new org.apache.airavata.model.appcatalog.datamodels.FileStructure(other.success);
+      }
       if (other.isSetIre()) {
         this.ire = new org.apache.airavata.model.error.InvalidRequestException(other.ire);
       }
@@ -295569,23 +297234,48 @@ public class Airavata {
       }
     }
 
-    public uploadFileToStorage_result deepCopy() {
-      return new uploadFileToStorage_result(this);
+    public downloadFileFromStorage_result deepCopy() {
+      return new downloadFileFromStorage_result(this);
     }
 
     @Override
     public void clear() {
+      this.success = null;
       this.ire = null;
       this.ace = null;
       this.ase = null;
       this.ae = null;
     }
 
+    public org.apache.airavata.model.appcatalog.datamodels.FileStructure getSuccess() {
+      return this.success;
+    }
+
+    public downloadFileFromStorage_result setSuccess(org.apache.airavata.model.appcatalog.datamodels.FileStructure success) {
+      this.success = success;
+      return this;
+    }
+
+    public void unsetSuccess() {
+      this.success = null;
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return this.success != null;
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      if (!value) {
+        this.success = null;
+      }
+    }
+
     public org.apache.airavata.model.error.InvalidRequestException getIre() {
       return this.ire;
     }
 
-    public uploadFileToStorage_result setIre(org.apache.airavata.model.error.InvalidRequestException ire) {
+    public downloadFileFromStorage_result setIre(org.apache.airavata.model.error.InvalidRequestException ire) {
       this.ire = ire;
       return this;
     }
@@ -295609,7 +297299,7 @@ public class Airavata {
       return this.ace;
     }
 
-    public uploadFileToStorage_result setAce(org.apache.airavata.model.error.AiravataClientException ace) {
+    public downloadFileFromStorage_result setAce(org.apache.airavata.model.error.AiravataClientException ace) {
       this.ace = ace;
       return this;
     }
@@ -295633,7 +297323,7 @@ public class Airavata {
       return this.ase;
     }
 
-    public uploadFileToStorage_result setAse(org.apache.airavata.model.error.AiravataSystemException ase) {
+    public downloadFileFromStorage_result setAse(org.apache.airavata.model.error.AiravataSystemException ase) {
       this.ase = ase;
       return this;
     }
@@ -295657,7 +297347,7 @@ public class Airavata {
       return this.ae;
     }
 
-    public uploadFileToStorage_result setAe(org.apache.airavata.model.error.AuthorizationException ae) {
+    public downloadFileFromStorage_result setAe(org.apache.airavata.model.error.AuthorizationException ae) {
       this.ae = ae;
       return this;
     }
@@ -295679,6 +297369,14 @@ public class Airavata {
 
     public void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((org.apache.airavata.model.appcatalog.datamodels.FileStructure)value);
+        }
+        break;
+
       case IRE:
         if (value == null) {
           unsetIre();
@@ -295716,6 +297414,9 @@ public class Airavata {
 
     public java.lang.Object getFieldValue(_Fields field) {
       switch (field) {
+      case SUCCESS:
+        return getSuccess();
+
       case IRE:
         return getIre();
 
@@ -295739,6 +297440,8 @@ public class Airavata {
       }
 
       switch (field) {
+      case SUCCESS:
+        return isSetSuccess();
       case IRE:
         return isSetIre();
       case ACE:
@@ -295755,17 +297458,26 @@ public class Airavata {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof uploadFileToStorage_result)
-        return this.equals((uploadFileToStorage_result)that);
+      if (that instanceof downloadFileFromStorage_result)
+        return this.equals((downloadFileFromStorage_result)that);
       return false;
     }
 
-    public boolean equals(uploadFileToStorage_result that) {
+    public boolean equals(downloadFileFromStorage_result that) {
       if (that == null)
         return false;
       if (this == that)
         return true;
 
+      boolean this_present_success = true && this.isSetSuccess();
+      boolean that_present_success = true && that.isSetSuccess();
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (!this.success.equals(that.success))
+          return false;
+      }
+
       boolean this_present_ire = true && this.isSetIre();
       boolean that_present_ire = true && that.isSetIre();
       if (this_present_ire || that_present_ire) {
@@ -295809,6 +297521,10 @@ public class Airavata {
     public int hashCode() {
       int hashCode = 1;
 
+      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
+      if (isSetSuccess())
+        hashCode = hashCode * 8191 + success.hashCode();
+
       hashCode = hashCode * 8191 + ((isSetIre()) ? 131071 : 524287);
       if (isSetIre())
         hashCode = hashCode * 8191 + ire.hashCode();
@@ -295829,13 +297545,23 @@ public class Airavata {
     }
 
     @Override
-    public int compareTo(uploadFileToStorage_result other) {
+    public int compareTo(downloadFileFromStorage_result other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
 
       int lastComparison = 0;
 
+      lastComparison = java.lang.Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       lastComparison = java.lang.Boolean.valueOf(isSetIre()).compareTo(other.isSetIre());
       if (lastComparison != 0) {
         return lastComparison;
@@ -295893,9 +297619,17 @@ public class Airavata {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("uploadFileToStorage_result(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("downloadFileFromStorage_result(");
       boolean first = true;
 
+      sb.append("success:");
+      if (this.success == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.success);
+      }
+      first = false;
+      if (!first) sb.append(", ");
       sb.append("ire:");
       if (this.ire == null) {
         sb.append("null");
@@ -295934,6 +297668,9 @@ public class Airavata {
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
       // check for sub-struct validity
+      if (success != null) {
+        success.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -295952,15 +297689,15 @@ public class Airavata {
       }
     }
 
-    private static class uploadFileToStorage_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public uploadFileToStorage_resultStandardScheme getScheme() {
-        return new uploadFileToStorage_resultStandardScheme();
+    private static class downloadFileFromStorage_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public downloadFileFromStorage_resultStandardScheme getScheme() {
+        return new downloadFileFromStorage_resultStandardScheme();
       }
     }
 
-    private static class uploadFileToStorage_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<uploadFileToStorage_result> {
+    private static class downloadFileFromStorage_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<downloadFileFromStorage_result> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, uploadFileToStorage_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, downloadFileFromStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -295970,6 +297707,15 @@ public class Airavata {
             break;
           }
           switch (schemeField.id) {
+            case 0: // SUCCESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.success = new org.apache.airavata.model.appcatalog.datamodels.FileStructure();
+                struct.success.read(iprot);
+                struct.setSuccessIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
             case 1: // IRE
               if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                 struct.ire = new org.apache.airavata.model.error.InvalidRequestException();
@@ -296017,10 +297763,15 @@ public class Airavata {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, uploadFileToStorage_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, downloadFileFromStorage_result struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.success != null) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          struct.success.write(oprot);
+          oprot.writeFieldEnd();
+        }
         if (struct.ire != null) {
           oprot.writeFieldBegin(IRE_FIELD_DESC);
           struct.ire.write(oprot);
@@ -296047,31 +297798,37 @@ public class Airavata {
 
     }
 
-    private static class uploadFileToStorage_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public uploadFileToStorage_resultTupleScheme getScheme() {
-        return new uploadFileToStorage_resultTupleScheme();
+    private static class downloadFileFromStorage_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public downloadFileFromStorage_resultTupleScheme getScheme() {
+        return new downloadFileFromStorage_resultTupleScheme();
       }
     }
 
-    private static class uploadFileToStorage_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<uploadFileToStorage_result> {
+    private static class downloadFileFromStorage_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<downloadFileFromStorage_result> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, uploadFileToStorage_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, downloadFileFromStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         java.util.BitSet optionals = new java.util.BitSet();
-        if (struct.isSetIre()) {
+        if (struct.isSetSuccess()) {
           optionals.set(0);
         }
-        if (struct.isSetAce()) {
+        if (struct.isSetIre()) {
           optionals.set(1);
         }
-        if (struct.isSetAse()) {
+        if (struct.isSetAce()) {
           optionals.set(2);
         }
-        if (struct.isSetAe()) {
+        if (struct.isSetAse()) {
           optionals.set(3);
         }
-        oprot.writeBitSet(optionals, 4);
+        if (struct.isSetAe()) {
+          optionals.set(4);
+        }
+        oprot.writeBitSet(optionals, 5);
+        if (struct.isSetSuccess()) {
+          struct.success.write(oprot);
+        }
         if (struct.isSetIre()) {
           struct.ire.write(oprot);
         }
@@ -296087,25 +297844,30 @@ public class Airavata {
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, uploadFileToStorage_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, downloadFileFromStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
-        java.util.BitSet incoming = iprot.readBitSet(4);
+        java.util.BitSet incoming = iprot.readBitSet(5);
         if (incoming.get(0)) {
+          struct.success = new org.apache.airavata.model.appcatalog.datamodels.FileStructure();
+          struct.success.read(iprot);
+          struct.setSuccessIsSet(true);
+        }
+        if (incoming.get(1)) {
           struct.ire = new org.apache.airavata.model.error.InvalidRequestException();
           struct.ire.read(iprot);
           struct.setIreIsSet(true);
         }
-        if (incoming.get(1)) {
+        if (incoming.get(2)) {
           struct.ace = new org.apache.airavata.model.error.AiravataClientException();
           struct.ace.read(iprot);
           struct.setAceIsSet(true);
         }
-        if (incoming.get(2)) {
+        if (incoming.get(3)) {
           struct.ase = new org.apache.airavata.model.error.AiravataSystemException();
           struct.ase.read(iprot);
           struct.setAseIsSet(true);
         }
-        if (incoming.get(3)) {
+        if (incoming.get(4)) {
           struct.ae = new org.apache.airavata.model.error.AuthorizationException();
           struct.ae.read(iprot);
           struct.setAeIsSet(true);
@@ -296118,23 +297880,23 @@ public class Airavata {
     }
   }
 
-  public static class downloadFileFromStorage_args implements org.apache.thrift.TBase<downloadFileFromStorage_args, downloadFileFromStorage_args._Fields>, java.io.Serializable, Cloneable, Comparable<downloadFileFromStorage_args>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("downloadFileFromStorage_args");
+  public static class getFileDetailsFromStorage_args implements org.apache.thrift.TBase<getFileDetailsFromStorage_args, getFileDetailsFromStorage_args._Fields>, java.io.Serializable, Cloneable, Comparable<getFileDetailsFromStorage_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getFileDetailsFromStorage_args");
 
     private static final org.apache.thrift.protocol.TField AUTHZ_TOKEN_FIELD_DESC = new org.apache.thrift.protocol.TField("authzToken", org.apache.thrift.protocol.TType.STRUCT, (short)1);
     private static final org.apache.thrift.protocol.TField GATEWAY_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayId", org.apache.thrift.protocol.TType.STRING, (short)2);
     private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)3);
     private static final org.apache.thrift.protocol.TField USER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("userId", org.apache.thrift.protocol.TType.STRING, (short)4);
-    private static final org.apache.thrift.protocol.TField PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("path", org.apache.thrift.protocol.TType.STRING, (short)5);
+    private static final org.apache.thrift.protocol.TField FILE_PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("filePath", org.apache.thrift.protocol.TType.STRING, (short)5);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new downloadFileFromStorage_argsStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new downloadFileFromStorage_argsTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getFileDetailsFromStorage_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getFileDetailsFromStorage_argsTupleSchemeFactory();
 
     public org.apache.airavata.model.security.AuthzToken authzToken; // required
     public java.lang.String gatewayId; // required
     public java.lang.String storageResourceId; // required
     public java.lang.String userId; // required
-    public java.lang.String path; // required
+    public java.lang.String filePath; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -296142,7 +297904,7 @@ public class Airavata {
       GATEWAY_ID((short)2, "gatewayId"),
       STORAGE_RESOURCE_ID((short)3, "storageResourceId"),
       USER_ID((short)4, "userId"),
-      PATH((short)5, "path");
+      FILE_PATH((short)5, "filePath");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -296165,8 +297927,8 @@ public class Airavata {
             return STORAGE_RESOURCE_ID;
           case 4: // USER_ID
             return USER_ID;
-          case 5: // PATH
-            return PATH;
+          case 5: // FILE_PATH
+            return FILE_PATH;
           default:
             return null;
         }
@@ -296218,34 +297980,34 @@ public class Airavata {
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       tmpMap.put(_Fields.USER_ID, new org.apache.thrift.meta_data.FieldMetaData("userId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-      tmpMap.put(_Fields.PATH, new org.apache.thrift.meta_data.FieldMetaData("path", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+      tmpMap.put(_Fields.FILE_PATH, new org.apache.thrift.meta_data.FieldMetaData("filePath", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(downloadFileFromStorage_args.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getFileDetailsFromStorage_args.class, metaDataMap);
     }
 
-    public downloadFileFromStorage_args() {
+    public getFileDetailsFromStorage_args() {
     }
 
-    public downloadFileFromStorage_args(
+    public getFileDetailsFromStorage_args(
       org.apache.airavata.model.security.AuthzToken authzToken,
       java.lang.String gatewayId,
       java.lang.String storageResourceId,
       java.lang.String userId,
-      java.lang.String path)
+      java.lang.String filePath)
     {
       this();
       this.authzToken = authzToken;
       this.gatewayId = gatewayId;
       this.storageResourceId = storageResourceId;
       this.userId = userId;
-      this.path = path;
+      this.filePath = filePath;
     }
 
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public downloadFileFromStorage_args(downloadFileFromStorage_args other) {
+    public getFileDetailsFromStorage_args(getFileDetailsFromStorage_args other) {
       if (other.isSetAuthzToken()) {
         this.authzToken = new org.apache.airavata.model.security.AuthzToken(other.authzToken);
       }
@@ -296258,13 +298020,13 @@ public class Airavata {
       if (other.isSetUserId()) {
         this.userId = other.userId;
       }
-      if (other.isSetPath()) {
-        this.path = other.path;
+      if (other.isSetFilePath()) {
+        this.filePath = other.filePath;
       }
     }
 
-    public downloadFileFromStorage_args deepCopy() {
-      return new downloadFileFromStorage_args(this);
+    public getFileDetailsFromStorage_args deepCopy() {
+      return new getFileDetailsFromStorage_args(this);
     }
 
     @Override
@@ -296273,14 +298035,14 @@ public class Airavata {
       this.gatewayId = null;
       this.storageResourceId = null;
       this.userId = null;
-      this.path = null;
+      this.filePath = null;
     }
 
     public org.apache.airavata.model.security.AuthzToken getAuthzToken() {
       return this.authzToken;
     }
 
-    public downloadFileFromStorage_args setAuthzToken(org.apache.airavata.model.security.AuthzToken authzToken) {
+    public getFileDetailsFromStorage_args setAuthzToken(org.apache.airavata.model.security.AuthzToken authzToken) {
       this.authzToken = authzToken;
       return this;
     }
@@ -296304,7 +298066,7 @@ public class Airavata {
       return this.gatewayId;
     }
 
-    public downloadFileFromStorage_args setGatewayId(java.lang.String gatewayId) {
+    public getFileDetailsFromStorage_args setGatewayId(java.lang.String gatewayId) {
       this.gatewayId = gatewayId;
       return this;
     }
@@ -296328,7 +298090,7 @@ public class Airavata {
       return this.storageResourceId;
     }
 
-    public downloadFileFromStorage_args setStorageResourceId(java.lang.String storageResourceId) {
+    public getFileDetailsFromStorage_args setStorageResourceId(java.lang.String storageResourceId) {
       this.storageResourceId = storageResourceId;
       return this;
     }
@@ -296352,7 +298114,7 @@ public class Airavata {
       return this.userId;
     }
 
-    public downloadFileFromStorage_args setUserId(java.lang.String userId) {
+    public getFileDetailsFromStorage_args setUserId(java.lang.String userId) {
       this.userId = userId;
       return this;
     }
@@ -296372,27 +298134,27 @@ public class Airavata {
       }
     }
 
-    public java.lang.String getPath() {
-      return this.path;
+    public java.lang.String getFilePath() {
+      return this.filePath;
     }
 
-    public downloadFileFromStorage_args setPath(java.lang.String path) {
-      this.path = path;
+    public getFileDetailsFromStorage_args setFilePath(java.lang.String filePath) {
+      this.filePath = filePath;
       return this;
     }
 
-    public void unsetPath() {
-      this.path = null;
+    public void unsetFilePath() {
+      this.filePath = null;
     }
 
-    /** Returns true if field path is set (has been assigned a value) and false otherwise */
-    public boolean isSetPath() {
-      return this.path != null;
+    /** Returns true if field filePath is set (has been assigned a value) and false otherwise */
+    public boolean isSetFilePath() {
+      return this.filePath != null;
     }
 
-    public void setPathIsSet(boolean value) {
+    public void setFilePathIsSet(boolean value) {
       if (!value) {
-        this.path = null;
+        this.filePath = null;
       }
     }
 
@@ -296430,11 +298192,11 @@ public class Airavata {
         }
         break;
 
-      case PATH:
+      case FILE_PATH:
         if (value == null) {
-          unsetPath();
+          unsetFilePath();
         } else {
-          setPath((java.lang.String)value);
+          setFilePath((java.lang.String)value);
         }
         break;
 
@@ -296455,8 +298217,8 @@ public class Airavata {
       case USER_ID:
         return getUserId();
 
-      case PATH:
-        return getPath();
+      case FILE_PATH:
+        return getFilePath();
 
       }
       throw new java.lang.IllegalStateException();
@@ -296477,8 +298239,8 @@ public class Airavata {
         return isSetStorageResourceId();
       case USER_ID:
         return isSetUserId();
-      case PATH:
-        return isSetPath();
+      case FILE_PATH:
+        return isSetFilePath();
       }
       throw new java.lang.IllegalStateException();
     }
@@ -296487,12 +298249,12 @@ public class Airavata {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof downloadFileFromStorage_args)
-        return this.equals((downloadFileFromStorage_args)that);
+      if (that instanceof getFileDetailsFromStorage_args)
+        return this.equals((getFileDetailsFromStorage_args)that);
       return false;
     }
 
-    public boolean equals(downloadFileFromStorage_args that) {
+    public boolean equals(getFileDetailsFromStorage_args that) {
       if (that == null)
         return false;
       if (this == that)
@@ -296534,12 +298296,12 @@ public class Airavata {
           return false;
       }
 
-      boolean this_present_path = true && this.isSetPath();
-      boolean that_present_path = true && that.isSetPath();
-      if (this_present_path || that_present_path) {
-        if (!(this_present_path && that_present_path))
+      boolean this_present_filePath = true && this.isSetFilePath();
+      boolean that_present_filePath = true && that.isSetFilePath();
+      if (this_present_filePath || that_present_filePath) {
+        if (!(this_present_filePath && that_present_filePath))
           return false;
-        if (!this.path.equals(that.path))
+        if (!this.filePath.equals(that.filePath))
           return false;
       }
 
@@ -296566,15 +298328,15 @@ public class Airavata {
       if (isSetUserId())
         hashCode = hashCode * 8191 + userId.hashCode();
 
-      hashCode = hashCode * 8191 + ((isSetPath()) ? 131071 : 524287);
-      if (isSetPath())
-        hashCode = hashCode * 8191 + path.hashCode();
+      hashCode = hashCode * 8191 + ((isSetFilePath()) ? 131071 : 524287);
+      if (isSetFilePath())
+        hashCode = hashCode * 8191 + filePath.hashCode();
 
       return hashCode;
     }
 
     @Override
-    public int compareTo(downloadFileFromStorage_args other) {
+    public int compareTo(getFileDetailsFromStorage_args other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
@@ -296621,12 +298383,12 @@ public class Airavata {
           return lastComparison;
         }
       }
-      lastComparison = java.lang.Boolean.valueOf(isSetPath()).compareTo(other.isSetPath());
+      lastComparison = java.lang.Boolean.valueOf(isSetFilePath()).compareTo(other.isSetFilePath());
       if (lastComparison != 0) {
         return lastComparison;
       }
-      if (isSetPath()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.path, other.path);
+      if (isSetFilePath()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.filePath, other.filePath);
         if (lastComparison != 0) {
           return lastComparison;
         }
@@ -296648,7 +298410,7 @@ public class Airavata {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("downloadFileFromStorage_args(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("getFileDetailsFromStorage_args(");
       boolean first = true;
 
       sb.append("authzToken:");
@@ -296683,11 +298445,11 @@ public class Airavata {
       }
       first = false;
       if (!first) sb.append(", ");
-      sb.append("path:");
-      if (this.path == null) {
+      sb.append("filePath:");
+      if (this.filePath == null) {
         sb.append("null");
       } else {
-        sb.append(this.path);
+        sb.append(this.filePath);
       }
       first = false;
       sb.append(")");
@@ -296724,15 +298486,15 @@ public class Airavata {
       }
     }
 
-    private static class downloadFileFromStorage_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public downloadFileFromStorage_argsStandardScheme getScheme() {
-        return new downloadFileFromStorage_argsStandardScheme();
+    private static class getFileDetailsFromStorage_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getFileDetailsFromStorage_argsStandardScheme getScheme() {
+        return new getFileDetailsFromStorage_argsStandardScheme();
       }
     }
 
-    private static class downloadFileFromStorage_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<downloadFileFromStorage_args> {
+    private static class getFileDetailsFromStorage_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<getFileDetailsFromStorage_args> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, downloadFileFromStorage_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, getFileDetailsFromStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -296775,10 +298537,10 @@ public class Airavata {
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
-            case 5: // PATH
+            case 5: // FILE_PATH
               if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-                struct.path = iprot.readString();
-                struct.setPathIsSet(true);
+                struct.filePath = iprot.readString();
+                struct.setFilePathIsSet(true);
               } else { 
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
@@ -296794,7 +298556,7 @@ public class Airavata {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, downloadFileFromStorage_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, getFileDetailsFromStorage_args struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
@@ -296818,9 +298580,9 @@ public class Airavata {
           oprot.writeString(struct.userId);
           oprot.writeFieldEnd();
         }
-        if (struct.path != null) {
-          oprot.writeFieldBegin(PATH_FIELD_DESC);
-          oprot.writeString(struct.path);
+        if (struct.filePath != null) {
+          oprot.writeFieldBegin(FILE_PATH_FIELD_DESC);
+          oprot.writeString(struct.filePath);
           oprot.writeFieldEnd();
         }
         oprot.writeFieldStop();
@@ -296829,16 +298591,16 @@ public class Airavata {
 
     }
 
-    private static class downloadFileFromStorage_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public downloadFileFromStorage_argsTupleScheme getScheme() {
-        return new downloadFileFromStorage_argsTupleScheme();
+    private static class getFileDetailsFromStorage_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getFileDetailsFromStorage_argsTupleScheme getScheme() {
+        return new getFileDetailsFromStorage_argsTupleScheme();
       }
     }
 
-    private static class downloadFileFromStorage_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<downloadFileFromStorage_args> {
+    private static class getFileDetailsFromStorage_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<getFileDetailsFromStorage_args> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, downloadFileFromStorage_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, getFileDetailsFromStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         struct.authzToken.write(oprot);
         oprot.writeString(struct.gatewayId);
@@ -296849,7 +298611,7 @@ public class Airavata {
         if (struct.isSetUserId()) {
           optionals.set(1);
         }
-        if (struct.isSetPath()) {
+        if (struct.isSetFilePath()) {
           optionals.set(2);
         }
         oprot.writeBitSet(optionals, 3);
@@ -296859,13 +298621,13 @@ public class Airavata {
         if (struct.isSetUserId()) {
           oprot.writeString(struct.userId);
         }
-        if (struct.isSetPath()) {
-          oprot.writeString(struct.path);
+        if (struct.isSetFilePath()) {
+          oprot.writeString(struct.filePath);
         }
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, downloadFileFromStorage_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, getFileDetailsFromStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         struct.authzToken = new org.apache.airavata.model.security.AuthzToken();
         struct.authzToken.read(iprot);
@@ -296882,8 +298644,8 @@ public class Airavata {
           struct.setUserIdIsSet(true);
         }
         if (incoming.get(2)) {
-          struct.path = iprot.readString();
-          struct.setPathIsSet(true);
+          struct.filePath = iprot.readString();
+          struct.setFilePathIsSet(true);
         }
       }
     }
@@ -296893,8 +298655,8 @@ public class Airavata {
     }
   }
 
-  public static class downloadFileFromStorage_result implements org.apache.thrift.TBase<downloadFileFromStorage_result, downloadFileFromStorage_result._Fields>, java.io.Serializable, Cloneable, Comparable<downloadFileFromStorage_result>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("downloadFileFromStorage_result");
+  public static class getFileDetailsFromStorage_result implements org.apache.thrift.TBase<getFileDetailsFromStorage_result, getFileDetailsFromStorage_result._Fields>, java.io.Serializable, Cloneable, Comparable<getFileDetailsFromStorage_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getFileDetailsFromStorage_result");
 
     private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);
     private static final org.apache.thrift.protocol.TField IRE_FIELD_DESC = new org.apache.thrift.protocol.TField("ire", org.apache.thrift.protocol.TType.STRUCT, (short)1);
@@ -296902,8 +298664,8 @@ public class Airavata {
     private static final org.apache.thrift.protocol.TField ASE_FIELD_DESC = new org.apache.thrift.protocol.TField("ase", org.apache.thrift.protocol.TType.STRUCT, (short)3);
     private static final org.apache.thrift.protocol.TField AE_FIELD_DESC = new org.apache.thrift.protocol.TField("ae", org.apache.thrift.protocol.TType.STRUCT, (short)4);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new downloadFileFromStorage_resultStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new downloadFileFromStorage_resultTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getFileDetailsFromStorage_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getFileDetailsFromStorage_resultTupleSchemeFactory();
 
     public org.apache.airavata.model.appcatalog.datamodels.FileStructure success; // required
     public org.apache.airavata.model.error.InvalidRequestException ire; // required
@@ -296996,13 +298758,13 @@ public class Airavata {
       tmpMap.put(_Fields.AE, new org.apache.thrift.meta_data.FieldMetaData("ae", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.error.AuthorizationException.class)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(downloadFileFromStorage_result.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getFileDetailsFromStorage_result.class, metaDataMap);
     }
 
-    public downloadFileFromStorage_result() {
+    public getFileDetailsFromStorage_result() {
     }
 
-    public downloadFileFromStorage_result(
+    public getFileDetailsFromStorage_result(
       org.apache.airavata.model.appcatalog.datamodels.FileStructure success,
       org.apache.airavata.model.error.InvalidRequestException ire,
       org.apache.airavata.model.error.AiravataClientException ace,
@@ -297020,7 +298782,7 @@ public class Airavata {
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public downloadFileFromStorage_result(downloadFileFromStorage_result other) {
+    public getFileDetailsFromStorage_result(getFileDetailsFromStorage_result other) {
       if (other.isSetSuccess()) {
         this.success = new org.apache.airavata.model.appcatalog.datamodels.FileStructure(other.success);
       }
@@ -297038,8 +298800,8 @@ public class Airavata {
       }
     }
 
-    public downloadFileFromStorage_result deepCopy() {
-      return new downloadFileFromStorage_result(this);
+    public getFileDetailsFromStorage_result deepCopy() {
+      return new getFileDetailsFromStorage_result(this);
     }
 
     @Override
@@ -297055,7 +298817,7 @@ public class Airavata {
       return this.success;
     }
 
-    public downloadFileFromStorage_result setSuccess(org.apache.airavata.model.appcatalog.datamodels.FileStructure success) {
+    public getFileDetailsFromStorage_result setSuccess(org.apache.airavata.model.appcatalog.datamodels.FileStructure success) {
       this.success = success;
       return this;
     }
@@ -297079,7 +298841,7 @@ public class Airavata {
       return this.ire;
     }
 
-    public downloadFileFromStorage_result setIre(org.apache.airavata.model.error.InvalidRequestException ire) {
+    public getFileDetailsFromStorage_result setIre(org.apache.airavata.model.error.InvalidRequestException ire) {
       this.ire = ire;
       return this;
     }
@@ -297103,7 +298865,7 @@ public class Airavata {
       return this.ace;
     }
 
-    public downloadFileFromStorage_result setAce(org.apache.airavata.model.error.AiravataClientException ace) {
+    public getFileDetailsFromStorage_result setAce(org.apache.airavata.model.error.AiravataClientException ace) {
       this.ace = ace;
       return this;
     }
@@ -297127,7 +298889,7 @@ public class Airavata {
       return this.ase;
     }
 
-    public downloadFileFromStorage_result setAse(org.apache.airavata.model.error.AiravataSystemException ase) {
+    public getFileDetailsFromStorage_result setAse(org.apache.airavata.model.error.AiravataSystemException ase) {
       this.ase = ase;
       return this;
     }
@@ -297151,7 +298913,7 @@ public class Airavata {
       return this.ae;
     }
 
-    public downloadFileFromStorage_result setAe(org.apache.airavata.model.error.AuthorizationException ae) {
+    public getFileDetailsFromStorage_result setAe(org.apache.airavata.model.error.AuthorizationException ae) {
       this.ae = ae;
       return this;
     }
@@ -297262,12 +299024,12 @@ public class Airavata {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof downloadFileFromStorage_result)
-        return this.equals((downloadFileFromStorage_result)that);
+      if (that instanceof getFileDetailsFromStorage_result)
+        return this.equals((getFileDetailsFromStorage_result)that);
       return false;
     }
 
-    public boolean equals(downloadFileFromStorage_result that) {
+    public boolean equals(getFileDetailsFromStorage_result that) {
       if (that == null)
         return false;
       if (this == that)
@@ -297349,7 +299111,7 @@ public class Airavata {
     }
 
     @Override
-    public int compareTo(downloadFileFromStorage_result other) {
+    public int compareTo(getFileDetailsFromStorage_result other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
@@ -297423,7 +299185,7 @@ public class Airavata {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("downloadFileFromStorage_result(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("getFileDetailsFromStorage_result(");
       boolean first = true;
 
       sb.append("success:");
@@ -297493,15 +299255,15 @@ public class Airavata {
       }
     }
 
-    private static class downloadFileFromStorage_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public downloadFileFromStorage_resultStandardScheme getScheme() {
-        return new downloadFileFromStorage_resultStandardScheme();
+    private static class getFileDetailsFromStorage_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getFileDetailsFromStorage_resultStandardScheme getScheme() {
+        return new getFileDetailsFromStorage_resultStandardScheme();
       }
     }
 
-    private static class downloadFileFromStorage_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<downloadFileFromStorage_result> {
+    private static class getFileDetailsFromStorage_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<getFileDetailsFromStorage_result> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, downloadFileFromStorage_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, getFileDetailsFromStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -297567,7 +299329,7 @@ public class Airavata {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, downloadFileFromStorage_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, getFileDetailsFromStorage_result struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
@@ -297602,16 +299364,16 @@ public class Airavata {
 
     }
 
-    private static class downloadFileFromStorage_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public downloadFileFromStorage_resultTupleScheme getScheme() {
-        return new downloadFileFromStorage_resultTupleScheme();
+    private static class getFileDetailsFromStorage_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getFileDetailsFromStorage_resultTupleScheme getScheme() {
+        return new getFileDetailsFromStorage_resultTupleScheme();
       }
     }
 
-    private static class downloadFileFromStorage_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<downloadFileFromStorage_result> {
+    private static class getFileDetailsFromStorage_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<getFileDetailsFromStorage_result> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, downloadFileFromStorage_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, getFileDetailsFromStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         java.util.BitSet optionals = new java.util.BitSet();
         if (struct.isSetSuccess()) {
@@ -297648,7 +299410,7 @@ public class Airavata {
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, downloadFileFromStorage_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, getFileDetailsFromStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         java.util.BitSet incoming = iprot.readBitSet(5);
         if (incoming.get(0)) {
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/datamodels/FileStructure.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/datamodels/FileStructure.java
index fe7ad3d..5a47f1f 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/datamodels/FileStructure.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/datamodels/FileStructure.java
@@ -30,7 +30,7 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
 
   private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("name", org.apache.thrift.protocol.TType.STRING, (short)1);
   private static final org.apache.thrift.protocol.TField PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("path", org.apache.thrift.protocol.TType.STRING, (short)2);
-  private static final org.apache.thrift.protocol.TField IS_FILE_FIELD_DESC = new org.apache.thrift.protocol.TField("isFile", org.apache.thrift.protocol.TType.STRING, (short)3);
+  private static final org.apache.thrift.protocol.TField IS_FILE_FIELD_DESC = new org.apache.thrift.protocol.TField("isFile", org.apache.thrift.protocol.TType.BOOL, (short)3);
   private static final org.apache.thrift.protocol.TField CREATED_DATE_FIELD_DESC = new org.apache.thrift.protocol.TField("createdDate", org.apache.thrift.protocol.TType.I64, (short)4);
   private static final org.apache.thrift.protocol.TField MODIFIED_DATE_FIELD_DESC = new org.apache.thrift.protocol.TField("modifiedDate", org.apache.thrift.protocol.TType.I64, (short)5);
   private static final org.apache.thrift.protocol.TField OWNER_FIELD_DESC = new org.apache.thrift.protocol.TField("owner", org.apache.thrift.protocol.TType.STRING, (short)6);
@@ -42,7 +42,7 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
 
   private java.lang.String name; // required
   private java.lang.String path; // required
-  private java.lang.String isFile; // required
+  private boolean isFile; // required
   private long createdDate; // required
   private long modifiedDate; // required
   private java.lang.String owner; // required
@@ -129,9 +129,10 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
   }
 
   // isset id assignments
-  private static final int __CREATEDDATE_ISSET_ID = 0;
-  private static final int __MODIFIEDDATE_ISSET_ID = 1;
-  private static final int __SIZE_ISSET_ID = 2;
+  private static final int __ISFILE_ISSET_ID = 0;
+  private static final int __CREATEDDATE_ISSET_ID = 1;
+  private static final int __MODIFIEDDATE_ISSET_ID = 2;
+  private static final int __SIZE_ISSET_ID = 3;
   private byte __isset_bitfield = 0;
   public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
@@ -141,7 +142,7 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
     tmpMap.put(_Fields.PATH, new org.apache.thrift.meta_data.FieldMetaData("path", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.IS_FILE, new org.apache.thrift.meta_data.FieldMetaData("isFile", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
     tmpMap.put(_Fields.CREATED_DATE, new org.apache.thrift.meta_data.FieldMetaData("createdDate", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     tmpMap.put(_Fields.MODIFIED_DATE, new org.apache.thrift.meta_data.FieldMetaData("modifiedDate", org.apache.thrift.TFieldRequirementType.REQUIRED, 
@@ -162,7 +163,7 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
   public FileStructure(
     java.lang.String name,
     java.lang.String path,
-    java.lang.String isFile,
+    boolean isFile,
     long createdDate,
     long modifiedDate,
     java.lang.String owner,
@@ -173,6 +174,7 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
     this.name = name;
     this.path = path;
     this.isFile = isFile;
+    setIsFileIsSet(true);
     this.createdDate = createdDate;
     setCreatedDateIsSet(true);
     this.modifiedDate = modifiedDate;
@@ -194,9 +196,7 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
     if (other.isSetPath()) {
       this.path = other.path;
     }
-    if (other.isSetIsFile()) {
-      this.isFile = other.isFile;
-    }
+    this.isFile = other.isFile;
     this.createdDate = other.createdDate;
     this.modifiedDate = other.modifiedDate;
     if (other.isSetOwner()) {
@@ -216,7 +216,8 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
   public void clear() {
     this.name = null;
     this.path = null;
-    this.isFile = null;
+    setIsFileIsSet(false);
+    this.isFile = false;
     setCreatedDateIsSet(false);
     this.createdDate = 0;
     setModifiedDateIsSet(false);
@@ -273,27 +274,26 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
     }
   }
 
-  public java.lang.String getIsFile() {
+  public boolean isIsFile() {
     return this.isFile;
   }
 
-  public void setIsFile(java.lang.String isFile) {
+  public void setIsFile(boolean isFile) {
     this.isFile = isFile;
+    setIsFileIsSet(true);
   }
 
   public void unsetIsFile() {
-    this.isFile = null;
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __ISFILE_ISSET_ID);
   }
 
   /** Returns true if field isFile is set (has been assigned a value) and false otherwise */
   public boolean isSetIsFile() {
-    return this.isFile != null;
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __ISFILE_ISSET_ID);
   }
 
   public void setIsFileIsSet(boolean value) {
-    if (!value) {
-      this.isFile = null;
-    }
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __ISFILE_ISSET_ID, value);
   }
 
   public long getCreatedDate() {
@@ -439,7 +439,7 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
       if (value == null) {
         unsetIsFile();
       } else {
-        setIsFile((java.lang.String)value);
+        setIsFile((java.lang.Boolean)value);
       }
       break;
 
@@ -499,7 +499,7 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
       return getPath();
 
     case IS_FILE:
-      return getIsFile();
+      return isIsFile();
 
     case CREATED_DATE:
       return getCreatedDate();
@@ -580,12 +580,12 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
         return false;
     }
 
-    boolean this_present_isFile = true && this.isSetIsFile();
-    boolean that_present_isFile = true && that.isSetIsFile();
+    boolean this_present_isFile = true;
+    boolean that_present_isFile = true;
     if (this_present_isFile || that_present_isFile) {
       if (!(this_present_isFile && that_present_isFile))
         return false;
-      if (!this.isFile.equals(that.isFile))
+      if (this.isFile != that.isFile)
         return false;
     }
 
@@ -649,9 +649,7 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
     if (isSetPath())
       hashCode = hashCode * 8191 + path.hashCode();
 
-    hashCode = hashCode * 8191 + ((isSetIsFile()) ? 131071 : 524287);
-    if (isSetIsFile())
-      hashCode = hashCode * 8191 + isFile.hashCode();
+    hashCode = hashCode * 8191 + ((isFile) ? 131071 : 524287);
 
     hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(createdDate);
 
@@ -795,11 +793,7 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
     first = false;
     if (!first) sb.append(", ");
     sb.append("isFile:");
-    if (this.isFile == null) {
-      sb.append("null");
-    } else {
-      sb.append(this.isFile);
-    }
+    sb.append(this.isFile);
     first = false;
     if (!first) sb.append(", ");
     sb.append("createdDate:");
@@ -923,8 +917,8 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
             }
             break;
           case 3: // IS_FILE
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.isFile = iprot.readString();
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.isFile = iprot.readBool();
               struct.setIsFileIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
@@ -993,11 +987,9 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
         oprot.writeString(struct.path);
         oprot.writeFieldEnd();
       }
-      if (struct.isFile != null) {
-        oprot.writeFieldBegin(IS_FILE_FIELD_DESC);
-        oprot.writeString(struct.isFile);
-        oprot.writeFieldEnd();
-      }
+      oprot.writeFieldBegin(IS_FILE_FIELD_DESC);
+      oprot.writeBool(struct.isFile);
+      oprot.writeFieldEnd();
       oprot.writeFieldBegin(CREATED_DATE_FIELD_DESC);
       oprot.writeI64(struct.createdDate);
       oprot.writeFieldEnd();
@@ -1036,7 +1028,7 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
       org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       oprot.writeString(struct.name);
       oprot.writeString(struct.path);
-      oprot.writeString(struct.isFile);
+      oprot.writeBool(struct.isFile);
       oprot.writeI64(struct.createdDate);
       oprot.writeI64(struct.modifiedDate);
       oprot.writeString(struct.owner);
@@ -1051,7 +1043,7 @@ public class FileStructure implements org.apache.thrift.TBase<FileStructure, Fil
       struct.setNameIsSet(true);
       struct.path = iprot.readString();
       struct.setPathIsSet(true);
-      struct.isFile = iprot.readString();
+      struct.isFile = iprot.readBool();
       struct.setIsFileIsSet(true);
       struct.createdDate = iprot.readI64();
       struct.setCreatedDateIsSet(true);
diff --git a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
index 8acc0e0..65ccb6f 100644
--- a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
+++ b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
@@ -5022,7 +5022,7 @@ public class RegistryServerHandler implements RegistryService.Iface {
         try {
             storageResourceAdaptor.downloadFile(path, tmpFile.getAbsolutePath());
         } catch (AgentException e) {
-            logger.error("Failed to download remote file " + path + " to loacal path " + tmpFile.getAbsolutePath() + " from storage resource " + storageResourceId, e);
+            logger.error("Failed to download remote file " + path + " to local path " + tmpFile.getAbsolutePath() + " from storage resource " + storageResourceId, e);
         }
 
         FileStructure structure = new FileStructure();
@@ -5043,11 +5043,13 @@ public class RegistryServerHandler implements RegistryService.Iface {
         StorageResourceAdaptor storageResourceAdaptor = fetchAdaptorForStorageResource(storageResourceId, gatewayId);
 
         try {
-            return storageResourceAdaptor.listDirectory(dirPath).stream().map(path -> {
-                FileStructure structure = new FileStructure();
-                structure.setName(path);
-                return structure;
-            }).collect(Collectors.toList());
+            List<FileStructure> fileStructures = new ArrayList<>();
+            List<String> fileNames = storageResourceAdaptor.listDirectory(dirPath);
+            for (String fileName : fileNames) {
+                String filePath = dirPath.endsWith(File.separator) ? dirPath + fileName : dirPath + File.separator + fileName;
+                fileStructures.add(getFileDetailsFromStorage(gatewayId, storageResourceId, userId, filePath));
+            }
+            return  fileStructures;
         } catch (AgentException e) {
             logger.error("Failed to list directories for path " + dirPath + " on storage resource " + storageResourceId, e);
             throw new TException("Failed to list directories for path " + dirPath + " on storage resource " + storageResourceId);
@@ -5055,6 +5057,25 @@ public class RegistryServerHandler implements RegistryService.Iface {
     }
 
     @Override
+    public FileStructure getFileDetailsFromStorage(String gatewayId, String storageResourceId, String userId, String filePath) throws TException {
+        StorageResourceAdaptor storageResourceAdaptor = fetchAdaptorForStorageResource(storageResourceId, gatewayId);
+
+        try {
+            FileInfo fileInfo = storageResourceAdaptor.getFileInfo(filePath);
+            FileStructure fileStructure = new FileStructure();
+            fileStructure.setPath(filePath);
+            fileStructure.setName(new File(filePath).getName());
+            fileStructure.setCreatedDate(fileInfo.getCreatedDate());
+            fileStructure.setModifiedDate(fileInfo.getModifiedDate());
+            fileStructure.setIsFile(fileInfo.isFile());
+            return fileStructure;
+        } catch (AgentException e) {
+            logger.error("Failed to fetch file info for path " + filePath + " on storage resource " + storageResourceId, e);
+            throw new TException("Failed to fetch file info for path " + filePath + " on storage resource " + storageResourceId);
+        }
+    }
+
+    @Override
     public void deleteFileFromStorage(String gatewayId, String storageResourceId, String userId, String path) throws TException {
         StorageResourceAdaptor storageResourceAdaptor = fetchAdaptorForStorageResource(storageResourceId, gatewayId);
         try {
diff --git a/modules/registry/registry-server/registry-api-stubs/src/main/java/org/apache/airavata/registry/api/RegistryService.java b/modules/registry/registry-server/registry-api-stubs/src/main/java/org/apache/airavata/registry/api/RegistryService.java
index 94771e1..97ccf98 100644
--- a/modules/registry/registry-server/registry-api-stubs/src/main/java/org/apache/airavata/registry/api/RegistryService.java
+++ b/modules/registry/registry-server/registry-api-stubs/src/main/java/org/apache/airavata/registry/api/RegistryService.java
@@ -2610,6 +2610,8 @@ public class RegistryService {
 
     public java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure> listDirectoryFromStorage(java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String dirPath) throws org.apache.thrift.TException;
 
+    public org.apache.airavata.model.appcatalog.datamodels.FileStructure getFileDetailsFromStorage(java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String filePath) throws org.apache.thrift.TException;
+
     public void deleteFileFromStorage(java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String path) throws org.apache.thrift.TException;
 
     public void deleteDirectoryFromStorage(java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String path) throws org.apache.thrift.TException;
@@ -3012,6 +3014,8 @@ public class RegistryService {
 
     public void listDirectoryFromStorage(java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String dirPath, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure>> resultHandler) throws org.apache.thrift.TException;
 
+    public void getFileDetailsFromStorage(java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String filePath, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.appcatalog.datamodels.FileStructure> resultHandler) throws org.apache.thrift.TException;
+
     public void deleteFileFromStorage(java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String path, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException;
 
     public void deleteDirectoryFromStorage(java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String path, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException;
@@ -8194,6 +8198,32 @@ public class RegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "listDirectoryFromStorage failed: unknown result");
     }
 
+    public org.apache.airavata.model.appcatalog.datamodels.FileStructure getFileDetailsFromStorage(java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String filePath) throws org.apache.thrift.TException
+    {
+      send_getFileDetailsFromStorage(gatewayId, storageResourceId, userId, filePath);
+      return recv_getFileDetailsFromStorage();
+    }
+
+    public void send_getFileDetailsFromStorage(java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String filePath) throws org.apache.thrift.TException
+    {
+      getFileDetailsFromStorage_args args = new getFileDetailsFromStorage_args();
+      args.setGatewayId(gatewayId);
+      args.setStorageResourceId(storageResourceId);
+      args.setUserId(userId);
+      args.setFilePath(filePath);
+      sendBase("getFileDetailsFromStorage", args);
+    }
+
+    public org.apache.airavata.model.appcatalog.datamodels.FileStructure recv_getFileDetailsFromStorage() throws org.apache.thrift.TException
+    {
+      getFileDetailsFromStorage_result result = new getFileDetailsFromStorage_result();
+      receiveBase(result, "getFileDetailsFromStorage");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getFileDetailsFromStorage failed: unknown result");
+    }
+
     public void deleteFileFromStorage(java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String path) throws org.apache.thrift.TException
     {
       send_deleteFileFromStorage(gatewayId, storageResourceId, userId, path);
@@ -14995,6 +15025,47 @@ public class RegistryService {
       }
     }
 
+    public void getFileDetailsFromStorage(java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String filePath, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.appcatalog.datamodels.FileStructure> resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      getFileDetailsFromStorage_call method_call = new getFileDetailsFromStorage_call(gatewayId, storageResourceId, userId, filePath, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class getFileDetailsFromStorage_call extends org.apache.thrift.async.TAsyncMethodCall<org.apache.airavata.model.appcatalog.datamodels.FileStructure> {
+      private java.lang.String gatewayId;
+      private java.lang.String storageResourceId;
+      private java.lang.String userId;
+      private java.lang.String filePath;
+      public getFileDetailsFromStorage_call(java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String filePath, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.appcatalog.datamodels.FileStructure> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.gatewayId = gatewayId;
+        this.storageResourceId = storageResourceId;
+        this.userId = userId;
+        this.filePath = filePath;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getFileDetailsFromStorage", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        getFileDetailsFromStorage_args args = new getFileDetailsFromStorage_args();
+        args.setGatewayId(gatewayId);
+        args.setStorageResourceId(storageResourceId);
+        args.setUserId(userId);
+        args.setFilePath(filePath);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public org.apache.airavata.model.appcatalog.datamodels.FileStructure getResult() throws org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new java.lang.IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_getFileDetailsFromStorage();
+      }
+    }
+
     public void deleteFileFromStorage(java.lang.String gatewayId, java.lang.String storageResourceId, java.lang.String userId, java.lang.String path, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
       checkReady();
       deleteFileFromStorage_call method_call = new deleteFileFromStorage_call(gatewayId, storageResourceId, userId, path, resultHandler, this, ___protocolFactory, ___transport);
@@ -15450,6 +15521,7 @@ public class RegistryService {
       processMap.put("uploadFileToStorage", new uploadFileToStorage());
       processMap.put("downloadFileFromStorage", new downloadFileFromStorage());
       processMap.put("listDirectoryFromStorage", new listDirectoryFromStorage());
+      processMap.put("getFileDetailsFromStorage", new getFileDetailsFromStorage());
       processMap.put("deleteFileFromStorage", new deleteFileFromStorage());
       processMap.put("deleteDirectoryFromStorage", new deleteDirectoryFromStorage());
       processMap.put("isExistInStorage", new isExistInStorage());
@@ -20168,6 +20240,26 @@ public class RegistryService {
       }
     }
 
+    public static class getFileDetailsFromStorage<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getFileDetailsFromStorage_args> {
+      public getFileDetailsFromStorage() {
+        super("getFileDetailsFromStorage");
+      }
+
+      public getFileDetailsFromStorage_args getEmptyArgsInstance() {
+        return new getFileDetailsFromStorage_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getFileDetailsFromStorage_result getResult(I iface, getFileDetailsFromStorage_args args) throws org.apache.thrift.TException {
+        getFileDetailsFromStorage_result result = new getFileDetailsFromStorage_result();
+        result.success = iface.getFileDetailsFromStorage(args.gatewayId, args.storageResourceId, args.userId, args.filePath);
+        return result;
+      }
+    }
+
     public static class deleteFileFromStorage<I extends Iface> extends org.apache.thrift.ProcessFunction<I, deleteFileFromStorage_args> {
       public deleteFileFromStorage() {
         super("deleteFileFromStorage");
@@ -20496,6 +20588,7 @@ public class RegistryService {
       processMap.put("uploadFileToStorage", new uploadFileToStorage());
       processMap.put("downloadFileFromStorage", new downloadFileFromStorage());
       processMap.put("listDirectoryFromStorage", new listDirectoryFromStorage());
+      processMap.put("getFileDetailsFromStorage", new getFileDetailsFromStorage());
       processMap.put("deleteFileFromStorage", new deleteFileFromStorage());
       processMap.put("deleteDirectoryFromStorage", new deleteDirectoryFromStorage());
       processMap.put("isExistInStorage", new isExistInStorage());
@@ -33137,142 +33230,21 @@ public class RegistryService {
       }
     }
 
-    public static class deleteFileFromStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, deleteFileFromStorage_args, Void> {
-      public deleteFileFromStorage() {
-        super("deleteFileFromStorage");
-      }
-
-      public deleteFileFromStorage_args getEmptyArgsInstance() {
-        return new deleteFileFromStorage_args();
-      }
-
-      public org.apache.thrift.async.AsyncMethodCallback<Void> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
-        final org.apache.thrift.AsyncProcessFunction fcall = this;
-        return new org.apache.thrift.async.AsyncMethodCallback<Void>() { 
-          public void onComplete(Void o) {
-            deleteFileFromStorage_result result = new deleteFileFromStorage_result();
-            try {
-              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
-            } catch (org.apache.thrift.transport.TTransportException e) {
-              _LOGGER.error("TTransportException writing to internal frame buffer", e);
-              fb.close();
-            } catch (java.lang.Exception e) {
-              _LOGGER.error("Exception writing to internal frame buffer", e);
-              onError(e);
-            }
-          }
-          public void onError(java.lang.Exception e) {
-            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
-            org.apache.thrift.TSerializable msg;
-            deleteFileFromStorage_result result = new deleteFileFromStorage_result();
-            if (e instanceof org.apache.thrift.transport.TTransportException) {
-              _LOGGER.error("TTransportException inside handler", e);
-              fb.close();
-              return;
-            } else if (e instanceof org.apache.thrift.TApplicationException) {
-              _LOGGER.error("TApplicationException inside handler", e);
-              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
-              msg = (org.apache.thrift.TApplicationException)e;
-            } else {
-              _LOGGER.error("Exception inside handler", e);
-              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
-              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
-            }
-            try {
-              fcall.sendResponse(fb,msg,msgType,seqid);
-            } catch (java.lang.Exception ex) {
-              _LOGGER.error("Exception writing to internal frame buffer", ex);
-              fb.close();
-            }
-          }
-        };
-      }
-
-      protected boolean isOneway() {
-        return false;
-      }
-
-      public void start(I iface, deleteFileFromStorage_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
-        iface.deleteFileFromStorage(args.gatewayId, args.storageResourceId, args.userId, args.path,resultHandler);
-      }
-    }
-
-    public static class deleteDirectoryFromStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, deleteDirectoryFromStorage_args, Void> {
-      public deleteDirectoryFromStorage() {
-        super("deleteDirectoryFromStorage");
-      }
-
-      public deleteDirectoryFromStorage_args getEmptyArgsInstance() {
-        return new deleteDirectoryFromStorage_args();
-      }
-
-      public org.apache.thrift.async.AsyncMethodCallback<Void> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
-        final org.apache.thrift.AsyncProcessFunction fcall = this;
-        return new org.apache.thrift.async.AsyncMethodCallback<Void>() { 
-          public void onComplete(Void o) {
-            deleteDirectoryFromStorage_result result = new deleteDirectoryFromStorage_result();
-            try {
-              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
-            } catch (org.apache.thrift.transport.TTransportException e) {
-              _LOGGER.error("TTransportException writing to internal frame buffer", e);
-              fb.close();
-            } catch (java.lang.Exception e) {
-              _LOGGER.error("Exception writing to internal frame buffer", e);
-              onError(e);
-            }
-          }
-          public void onError(java.lang.Exception e) {
-            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
-            org.apache.thrift.TSerializable msg;
-            deleteDirectoryFromStorage_result result = new deleteDirectoryFromStorage_result();
-            if (e instanceof org.apache.thrift.transport.TTransportException) {
-              _LOGGER.error("TTransportException inside handler", e);
-              fb.close();
-              return;
-            } else if (e instanceof org.apache.thrift.TApplicationException) {
-              _LOGGER.error("TApplicationException inside handler", e);
-              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
-              msg = (org.apache.thrift.TApplicationException)e;
-            } else {
-              _LOGGER.error("Exception inside handler", e);
-              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
-              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
-            }
-            try {
-              fcall.sendResponse(fb,msg,msgType,seqid);
-            } catch (java.lang.Exception ex) {
-              _LOGGER.error("Exception writing to internal frame buffer", ex);
-              fb.close();
-            }
-          }
-        };
-      }
-
-      protected boolean isOneway() {
-        return false;
-      }
-
-      public void start(I iface, deleteDirectoryFromStorage_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
-        iface.deleteDirectoryFromStorage(args.gatewayId, args.storageResourceId, args.userId, args.path,resultHandler);
-      }
-    }
-
-    public static class isExistInStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, isExistInStorage_args, java.lang.Boolean> {
-      public isExistInStorage() {
-        super("isExistInStorage");
+    public static class getFileDetailsFromStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getFileDetailsFromStorage_args, org.apache.airavata.model.appcatalog.datamodels.FileStructure> {
+      public getFileDetailsFromStorage() {
+        super("getFileDetailsFromStorage");
       }
 
-      public isExistInStorage_args getEmptyArgsInstance() {
-        return new isExistInStorage_args();
+      public getFileDetailsFromStorage_args getEmptyArgsInstance() {
+        return new getFileDetailsFromStorage_args();
       }
 
-      public org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
+      public org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.appcatalog.datamodels.FileStructure> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
-        return new org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean>() { 
-          public void onComplete(java.lang.Boolean o) {
-            isExistInStorage_result result = new isExistInStorage_result();
+        return new org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.appcatalog.datamodels.FileStructure>() { 
+          public void onComplete(org.apache.airavata.model.appcatalog.datamodels.FileStructure o) {
+            getFileDetailsFromStorage_result result = new getFileDetailsFromStorage_result();
             result.success = o;
-            result.setSuccessIsSet(true);
             try {
               fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
             } catch (org.apache.thrift.transport.TTransportException e) {
@@ -33286,7 +33258,7 @@ public class RegistryService {
           public void onError(java.lang.Exception e) {
             byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
             org.apache.thrift.TSerializable msg;
-            isExistInStorage_result result = new isExistInStorage_result();
+            getFileDetailsFromStorage_result result = new getFileDetailsFromStorage_result();
             if (e instanceof org.apache.thrift.transport.TTransportException) {
               _LOGGER.error("TTransportException inside handler", e);
               fb.close();
@@ -33314,87 +33286,25 @@ public class RegistryService {
         return false;
       }
 
-      public void start(I iface, isExistInStorage_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
-        iface.isExistInStorage(args.gatewayId, args.storageResourceId, args.userId, args.path,resultHandler);
+      public void start(I iface, getFileDetailsFromStorage_args args, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.appcatalog.datamodels.FileStructure> resultHandler) throws org.apache.thrift.TException {
+        iface.getFileDetailsFromStorage(args.gatewayId, args.storageResourceId, args.userId, args.filePath,resultHandler);
       }
     }
 
-    public static class createDirectoryInStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, createDirectoryInStorage_args, Void> {
-      public createDirectoryInStorage() {
-        super("createDirectoryInStorage");
+    public static class deleteFileFromStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, deleteFileFromStorage_args, Void> {
+      public deleteFileFromStorage() {
+        super("deleteFileFromStorage");
       }
 
-      public createDirectoryInStorage_args getEmptyArgsInstance() {
-        return new createDirectoryInStorage_args();
+      public deleteFileFromStorage_args getEmptyArgsInstance() {
+        return new deleteFileFromStorage_args();
       }
 
       public org.apache.thrift.async.AsyncMethodCallback<Void> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
         return new org.apache.thrift.async.AsyncMethodCallback<Void>() { 
           public void onComplete(Void o) {
-            createDirectoryInStorage_result result = new createDirectoryInStorage_result();
-            try {
-              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
-            } catch (org.apache.thrift.transport.TTransportException e) {
-              _LOGGER.error("TTransportException writing to internal frame buffer", e);
-              fb.close();
-            } catch (java.lang.Exception e) {
-              _LOGGER.error("Exception writing to internal frame buffer", e);
-              onError(e);
-            }
-          }
-          public void onError(java.lang.Exception e) {
-            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
-            org.apache.thrift.TSerializable msg;
-            createDirectoryInStorage_result result = new createDirectoryInStorage_result();
-            if (e instanceof org.apache.thrift.transport.TTransportException) {
-              _LOGGER.error("TTransportException inside handler", e);
-              fb.close();
-              return;
-            } else if (e instanceof org.apache.thrift.TApplicationException) {
-              _LOGGER.error("TApplicationException inside handler", e);
-              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
-              msg = (org.apache.thrift.TApplicationException)e;
-            } else {
-              _LOGGER.error("Exception inside handler", e);
-              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
-              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
-            }
-            try {
-              fcall.sendResponse(fb,msg,msgType,seqid);
-            } catch (java.lang.Exception ex) {
-              _LOGGER.error("Exception writing to internal frame buffer", ex);
-              fb.close();
-            }
-          }
-        };
-      }
-
-      protected boolean isOneway() {
-        return false;
-      }
-
-      public void start(I iface, createDirectoryInStorage_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
-        iface.createDirectoryInStorage(args.gatewayId, args.storageResourceId, args.userId, args.dirPath,resultHandler);
-      }
-    }
-
-    public static class checkIsFileInStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, checkIsFileInStorage_args, java.lang.Boolean> {
-      public checkIsFileInStorage() {
-        super("checkIsFileInStorage");
-      }
-
-      public checkIsFileInStorage_args getEmptyArgsInstance() {
-        return new checkIsFileInStorage_args();
-      }
-
-      public org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
-        final org.apache.thrift.AsyncProcessFunction fcall = this;
-        return new org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean>() { 
-          public void onComplete(java.lang.Boolean o) {
-            checkIsFileInStorage_result result = new checkIsFileInStorage_result();
-            result.success = o;
-            result.setSuccessIsSet(true);
+            deleteFileFromStorage_result result = new deleteFileFromStorage_result();
             try {
               fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
             } catch (org.apache.thrift.transport.TTransportException e) {
@@ -33408,7 +33318,7 @@ public class RegistryService {
           public void onError(java.lang.Exception e) {
             byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
             org.apache.thrift.TSerializable msg;
-            checkIsFileInStorage_result result = new checkIsFileInStorage_result();
+            deleteFileFromStorage_result result = new deleteFileFromStorage_result();
             if (e instanceof org.apache.thrift.transport.TTransportException) {
               _LOGGER.error("TTransportException inside handler", e);
               fb.close();
@@ -33436,25 +33346,25 @@ public class RegistryService {
         return false;
       }
 
-      public void start(I iface, checkIsFileInStorage_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
-        iface.checkIsFileInStorage(args.gatewayId, args.storageResourceId, args.userId, args.path,resultHandler);
+      public void start(I iface, deleteFileFromStorage_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
+        iface.deleteFileFromStorage(args.gatewayId, args.storageResourceId, args.userId, args.path,resultHandler);
       }
     }
 
-    public static class renameFileInStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, renameFileInStorage_args, Void> {
-      public renameFileInStorage() {
-        super("renameFileInStorage");
+    public static class deleteDirectoryFromStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, deleteDirectoryFromStorage_args, Void> {
+      public deleteDirectoryFromStorage() {
+        super("deleteDirectoryFromStorage");
       }
 
-      public renameFileInStorage_args getEmptyArgsInstance() {
-        return new renameFileInStorage_args();
+      public deleteDirectoryFromStorage_args getEmptyArgsInstance() {
+        return new deleteDirectoryFromStorage_args();
       }
 
       public org.apache.thrift.async.AsyncMethodCallback<Void> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
         return new org.apache.thrift.async.AsyncMethodCallback<Void>() { 
           public void onComplete(Void o) {
-            renameFileInStorage_result result = new renameFileInStorage_result();
+            deleteDirectoryFromStorage_result result = new deleteDirectoryFromStorage_result();
             try {
               fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
             } catch (org.apache.thrift.transport.TTransportException e) {
@@ -33468,7 +33378,251 @@ public class RegistryService {
           public void onError(java.lang.Exception e) {
             byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
             org.apache.thrift.TSerializable msg;
-            renameFileInStorage_result result = new renameFileInStorage_result();
+            deleteDirectoryFromStorage_result result = new deleteDirectoryFromStorage_result();
+            if (e instanceof org.apache.thrift.transport.TTransportException) {
+              _LOGGER.error("TTransportException inside handler", e);
+              fb.close();
+              return;
+            } else if (e instanceof org.apache.thrift.TApplicationException) {
+              _LOGGER.error("TApplicationException inside handler", e);
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TApplicationException)e;
+            } else {
+              _LOGGER.error("Exception inside handler", e);
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+            } catch (java.lang.Exception ex) {
+              _LOGGER.error("Exception writing to internal frame buffer", ex);
+              fb.close();
+            }
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, deleteDirectoryFromStorage_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
+        iface.deleteDirectoryFromStorage(args.gatewayId, args.storageResourceId, args.userId, args.path,resultHandler);
+      }
+    }
+
+    public static class isExistInStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, isExistInStorage_args, java.lang.Boolean> {
+      public isExistInStorage() {
+        super("isExistInStorage");
+      }
+
+      public isExistInStorage_args getEmptyArgsInstance() {
+        return new isExistInStorage_args();
+      }
+
+      public org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean>() { 
+          public void onComplete(java.lang.Boolean o) {
+            isExistInStorage_result result = new isExistInStorage_result();
+            result.success = o;
+            result.setSuccessIsSet(true);
+            try {
+              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+            } catch (org.apache.thrift.transport.TTransportException e) {
+              _LOGGER.error("TTransportException writing to internal frame buffer", e);
+              fb.close();
+            } catch (java.lang.Exception e) {
+              _LOGGER.error("Exception writing to internal frame buffer", e);
+              onError(e);
+            }
+          }
+          public void onError(java.lang.Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TSerializable msg;
+            isExistInStorage_result result = new isExistInStorage_result();
+            if (e instanceof org.apache.thrift.transport.TTransportException) {
+              _LOGGER.error("TTransportException inside handler", e);
+              fb.close();
+              return;
+            } else if (e instanceof org.apache.thrift.TApplicationException) {
+              _LOGGER.error("TApplicationException inside handler", e);
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TApplicationException)e;
+            } else {
+              _LOGGER.error("Exception inside handler", e);
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+            } catch (java.lang.Exception ex) {
+              _LOGGER.error("Exception writing to internal frame buffer", ex);
+              fb.close();
+            }
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, isExistInStorage_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
+        iface.isExistInStorage(args.gatewayId, args.storageResourceId, args.userId, args.path,resultHandler);
+      }
+    }
+
+    public static class createDirectoryInStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, createDirectoryInStorage_args, Void> {
+      public createDirectoryInStorage() {
+        super("createDirectoryInStorage");
+      }
+
+      public createDirectoryInStorage_args getEmptyArgsInstance() {
+        return new createDirectoryInStorage_args();
+      }
+
+      public org.apache.thrift.async.AsyncMethodCallback<Void> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new org.apache.thrift.async.AsyncMethodCallback<Void>() { 
+          public void onComplete(Void o) {
+            createDirectoryInStorage_result result = new createDirectoryInStorage_result();
+            try {
+              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+            } catch (org.apache.thrift.transport.TTransportException e) {
+              _LOGGER.error("TTransportException writing to internal frame buffer", e);
+              fb.close();
+            } catch (java.lang.Exception e) {
+              _LOGGER.error("Exception writing to internal frame buffer", e);
+              onError(e);
+            }
+          }
+          public void onError(java.lang.Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TSerializable msg;
+            createDirectoryInStorage_result result = new createDirectoryInStorage_result();
+            if (e instanceof org.apache.thrift.transport.TTransportException) {
+              _LOGGER.error("TTransportException inside handler", e);
+              fb.close();
+              return;
+            } else if (e instanceof org.apache.thrift.TApplicationException) {
+              _LOGGER.error("TApplicationException inside handler", e);
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TApplicationException)e;
+            } else {
+              _LOGGER.error("Exception inside handler", e);
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+            } catch (java.lang.Exception ex) {
+              _LOGGER.error("Exception writing to internal frame buffer", ex);
+              fb.close();
+            }
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, createDirectoryInStorage_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
+        iface.createDirectoryInStorage(args.gatewayId, args.storageResourceId, args.userId, args.dirPath,resultHandler);
+      }
+    }
+
+    public static class checkIsFileInStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, checkIsFileInStorage_args, java.lang.Boolean> {
+      public checkIsFileInStorage() {
+        super("checkIsFileInStorage");
+      }
+
+      public checkIsFileInStorage_args getEmptyArgsInstance() {
+        return new checkIsFileInStorage_args();
+      }
+
+      public org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean>() { 
+          public void onComplete(java.lang.Boolean o) {
+            checkIsFileInStorage_result result = new checkIsFileInStorage_result();
+            result.success = o;
+            result.setSuccessIsSet(true);
+            try {
+              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+            } catch (org.apache.thrift.transport.TTransportException e) {
+              _LOGGER.error("TTransportException writing to internal frame buffer", e);
+              fb.close();
+            } catch (java.lang.Exception e) {
+              _LOGGER.error("Exception writing to internal frame buffer", e);
+              onError(e);
+            }
+          }
+          public void onError(java.lang.Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TSerializable msg;
+            checkIsFileInStorage_result result = new checkIsFileInStorage_result();
+            if (e instanceof org.apache.thrift.transport.TTransportException) {
+              _LOGGER.error("TTransportException inside handler", e);
+              fb.close();
+              return;
+            } else if (e instanceof org.apache.thrift.TApplicationException) {
+              _LOGGER.error("TApplicationException inside handler", e);
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TApplicationException)e;
+            } else {
+              _LOGGER.error("Exception inside handler", e);
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+            } catch (java.lang.Exception ex) {
+              _LOGGER.error("Exception writing to internal frame buffer", ex);
+              fb.close();
+            }
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, checkIsFileInStorage_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
+        iface.checkIsFileInStorage(args.gatewayId, args.storageResourceId, args.userId, args.path,resultHandler);
+      }
+    }
+
+    public static class renameFileInStorage<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, renameFileInStorage_args, Void> {
+      public renameFileInStorage() {
+        super("renameFileInStorage");
+      }
+
+      public renameFileInStorage_args getEmptyArgsInstance() {
+        return new renameFileInStorage_args();
+      }
+
+      public org.apache.thrift.async.AsyncMethodCallback<Void> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new org.apache.thrift.async.AsyncMethodCallback<Void>() { 
+          public void onComplete(Void o) {
+            renameFileInStorage_result result = new renameFileInStorage_result();
+            try {
+              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+            } catch (org.apache.thrift.transport.TTransportException e) {
+              _LOGGER.error("TTransportException writing to internal frame buffer", e);
+              fb.close();
+            } catch (java.lang.Exception e) {
+              _LOGGER.error("Exception writing to internal frame buffer", e);
+              onError(e);
+            }
+          }
+          public void onError(java.lang.Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TSerializable msg;
+            renameFileInStorage_result result = new renameFileInStorage_result();
             if (e instanceof org.apache.thrift.transport.TTransportException) {
               _LOGGER.error("TTransportException inside handler", e);
               fb.close();
@@ -207475,7 +207629,1123 @@ public class RegistryService {
       return this.storageResourceId;
     }
 
-    public uploadFileToStorage_args setStorageResourceId(java.lang.String storageResourceId) {
+    public uploadFileToStorage_args setStorageResourceId(java.lang.String storageResourceId) {
+      this.storageResourceId = storageResourceId;
+      return this;
+    }
+
+    public void unsetStorageResourceId() {
+      this.storageResourceId = null;
+    }
+
+    /** Returns true if field storageResourceId is set (has been assigned a value) and false otherwise */
+    public boolean isSetStorageResourceId() {
+      return this.storageResourceId != null;
+    }
+
+    public void setStorageResourceIdIsSet(boolean value) {
+      if (!value) {
+        this.storageResourceId = null;
+      }
+    }
+
+    public java.lang.String getUserId() {
+      return this.userId;
+    }
+
+    public uploadFileToStorage_args setUserId(java.lang.String userId) {
+      this.userId = userId;
+      return this;
+    }
+
+    public void unsetUserId() {
+      this.userId = null;
+    }
+
+    /** Returns true if field userId is set (has been assigned a value) and false otherwise */
+    public boolean isSetUserId() {
+      return this.userId != null;
+    }
+
+    public void setUserIdIsSet(boolean value) {
+      if (!value) {
+        this.userId = null;
+      }
+    }
+
+    public byte[] getContent() {
+      setContent(org.apache.thrift.TBaseHelper.rightSize(content));
+      return content == null ? null : content.array();
+    }
+
+    public java.nio.ByteBuffer bufferForContent() {
+      return org.apache.thrift.TBaseHelper.copyBinary(content);
+    }
+
+    public uploadFileToStorage_args setContent(byte[] content) {
+      this.content = content == null ? (java.nio.ByteBuffer)null : java.nio.ByteBuffer.wrap(content.clone());
+      return this;
+    }
+
+    public uploadFileToStorage_args setContent(java.nio.ByteBuffer content) {
+      this.content = org.apache.thrift.TBaseHelper.copyBinary(content);
+      return this;
+    }
+
+    public void unsetContent() {
+      this.content = null;
+    }
+
+    /** Returns true if field content is set (has been assigned a value) and false otherwise */
+    public boolean isSetContent() {
+      return this.content != null;
+    }
+
+    public void setContentIsSet(boolean value) {
+      if (!value) {
+        this.content = null;
+      }
+    }
+
+    public java.lang.String getPath() {
+      return this.path;
+    }
+
+    public uploadFileToStorage_args setPath(java.lang.String path) {
+      this.path = path;
+      return this;
+    }
+
+    public void unsetPath() {
+      this.path = null;
+    }
+
+    /** Returns true if field path is set (has been assigned a value) and false otherwise */
+    public boolean isSetPath() {
+      return this.path != null;
+    }
+
+    public void setPathIsSet(boolean value) {
+      if (!value) {
+        this.path = null;
+      }
+    }
+
+    public java.lang.String getType() {
+      return this.type;
+    }
+
+    public uploadFileToStorage_args setType(java.lang.String type) {
+      this.type = type;
+      return this;
+    }
+
+    public void unsetType() {
+      this.type = null;
+    }
+
+    /** Returns true if field type is set (has been assigned a value) and false otherwise */
+    public boolean isSetType() {
+      return this.type != null;
+    }
+
+    public void setTypeIsSet(boolean value) {
+      if (!value) {
+        this.type = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, java.lang.Object value) {
+      switch (field) {
+      case GATEWAY_ID:
+        if (value == null) {
+          unsetGatewayId();
+        } else {
+          setGatewayId((java.lang.String)value);
+        }
+        break;
+
+      case STORAGE_RESOURCE_ID:
+        if (value == null) {
+          unsetStorageResourceId();
+        } else {
+          setStorageResourceId((java.lang.String)value);
+        }
+        break;
+
+      case USER_ID:
+        if (value == null) {
+          unsetUserId();
+        } else {
+          setUserId((java.lang.String)value);
+        }
+        break;
+
+      case CONTENT:
+        if (value == null) {
+          unsetContent();
+        } else {
+          if (value instanceof byte[]) {
+            setContent((byte[])value);
+          } else {
+            setContent((java.nio.ByteBuffer)value);
+          }
+        }
+        break;
+
+      case PATH:
+        if (value == null) {
+          unsetPath();
+        } else {
+          setPath((java.lang.String)value);
+        }
+        break;
+
+      case TYPE:
+        if (value == null) {
+          unsetType();
+        } else {
+          setType((java.lang.String)value);
+        }
+        break;
+
+      }
+    }
+
+    public java.lang.Object getFieldValue(_Fields field) {
+      switch (field) {
+      case GATEWAY_ID:
+        return getGatewayId();
+
+      case STORAGE_RESOURCE_ID:
+        return getStorageResourceId();
+
+      case USER_ID:
+        return getUserId();
+
+      case CONTENT:
+        return getContent();
+
+      case PATH:
+        return getPath();
+
+      case TYPE:
+        return getType();
+
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new java.lang.IllegalArgumentException();
+      }
+
+      switch (field) {
+      case GATEWAY_ID:
+        return isSetGatewayId();
+      case STORAGE_RESOURCE_ID:
+        return isSetStorageResourceId();
+      case USER_ID:
+        return isSetUserId();
+      case CONTENT:
+        return isSetContent();
+      case PATH:
+        return isSetPath();
+      case TYPE:
+        return isSetType();
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(java.lang.Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof uploadFileToStorage_args)
+        return this.equals((uploadFileToStorage_args)that);
+      return false;
+    }
+
+    public boolean equals(uploadFileToStorage_args that) {
+      if (that == null)
+        return false;
+      if (this == that)
+        return true;
+
+      boolean this_present_gatewayId = true && this.isSetGatewayId();
+      boolean that_present_gatewayId = true && that.isSetGatewayId();
+      if (this_present_gatewayId || that_present_gatewayId) {
+        if (!(this_present_gatewayId && that_present_gatewayId))
+          return false;
+        if (!this.gatewayId.equals(that.gatewayId))
+          return false;
+      }
+
+      boolean this_present_storageResourceId = true && this.isSetStorageResourceId();
+      boolean that_present_storageResourceId = true && that.isSetStorageResourceId();
+      if (this_present_storageResourceId || that_present_storageResourceId) {
+        if (!(this_present_storageResourceId && that_present_storageResourceId))
+          return false;
+        if (!this.storageResourceId.equals(that.storageResourceId))
+          return false;
+      }
+
+      boolean this_present_userId = true && this.isSetUserId();
+      boolean that_present_userId = true && that.isSetUserId();
+      if (this_present_userId || that_present_userId) {
+        if (!(this_present_userId && that_present_userId))
+          return false;
+        if (!this.userId.equals(that.userId))
+          return false;
+      }
+
+      boolean this_present_content = true && this.isSetContent();
+      boolean that_present_content = true && that.isSetContent();
+      if (this_present_content || that_present_content) {
+        if (!(this_present_content && that_present_content))
+          return false;
+        if (!this.content.equals(that.content))
+          return false;
+      }
+
+      boolean this_present_path = true && this.isSetPath();
+      boolean that_present_path = true && that.isSetPath();
+      if (this_present_path || that_present_path) {
+        if (!(this_present_path && that_present_path))
+          return false;
+        if (!this.path.equals(that.path))
+          return false;
+      }
+
+      boolean this_present_type = true && this.isSetType();
+      boolean that_present_type = true && that.isSetType();
+      if (this_present_type || that_present_type) {
+        if (!(this_present_type && that_present_type))
+          return false;
+        if (!this.type.equals(that.type))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      int hashCode = 1;
+
+      hashCode = hashCode * 8191 + ((isSetGatewayId()) ? 131071 : 524287);
+      if (isSetGatewayId())
+        hashCode = hashCode * 8191 + gatewayId.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetStorageResourceId()) ? 131071 : 524287);
+      if (isSetStorageResourceId())
+        hashCode = hashCode * 8191 + storageResourceId.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetUserId()) ? 131071 : 524287);
+      if (isSetUserId())
+        hashCode = hashCode * 8191 + userId.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetContent()) ? 131071 : 524287);
+      if (isSetContent())
+        hashCode = hashCode * 8191 + content.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetPath()) ? 131071 : 524287);
+      if (isSetPath())
+        hashCode = hashCode * 8191 + path.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetType()) ? 131071 : 524287);
+      if (isSetType())
+        hashCode = hashCode * 8191 + type.hashCode();
+
+      return hashCode;
+    }
+
+    @Override
+    public int compareTo(uploadFileToStorage_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = java.lang.Boolean.valueOf(isSetGatewayId()).compareTo(other.isSetGatewayId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetGatewayId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.gatewayId, other.gatewayId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetStorageResourceId()).compareTo(other.isSetStorageResourceId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetStorageResourceId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storageResourceId, other.storageResourceId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetUserId()).compareTo(other.isSetUserId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetUserId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userId, other.userId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetContent()).compareTo(other.isSetContent());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetContent()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.content, other.content);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetPath()).compareTo(other.isSetPath());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetPath()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.path, other.path);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetType()).compareTo(other.isSetType());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetType()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.type, other.type);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      scheme(iprot).read(iprot, this);
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      scheme(oprot).write(oprot, this);
+    }
+
+    @Override
+    public java.lang.String toString() {
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("uploadFileToStorage_args(");
+      boolean first = true;
+
+      sb.append("gatewayId:");
+      if (this.gatewayId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.gatewayId);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("storageResourceId:");
+      if (this.storageResourceId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.storageResourceId);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("userId:");
+      if (this.userId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.userId);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("content:");
+      if (this.content == null) {
+        sb.append("null");
+      } else {
+        org.apache.thrift.TBaseHelper.toString(this.content, sb);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("path:");
+      if (this.path == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.path);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("type:");
+      if (this.type == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.type);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      if (gatewayId == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'gatewayId' was not present! Struct: " + toString());
+      }
+      // check for sub-struct validity
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
+      try {
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private static class uploadFileToStorage_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public uploadFileToStorage_argsStandardScheme getScheme() {
+        return new uploadFileToStorage_argsStandardScheme();
+      }
+    }
+
+    private static class uploadFileToStorage_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<uploadFileToStorage_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, uploadFileToStorage_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TField schemeField;
+        iprot.readStructBegin();
+        while (true)
+        {
+          schemeField = iprot.readFieldBegin();
+          if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+            break;
+          }
+          switch (schemeField.id) {
+            case 1: // GATEWAY_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.gatewayId = iprot.readString();
+                struct.setGatewayIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // STORAGE_RESOURCE_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.storageResourceId = iprot.readString();
+                struct.setStorageResourceIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 3: // USER_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.userId = iprot.readString();
+                struct.setUserIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 4: // CONTENT
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.content = iprot.readBinary();
+                struct.setContentIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 5: // PATH
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.path = iprot.readString();
+                struct.setPathIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 6: // TYPE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.type = iprot.readString();
+                struct.setTypeIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            default:
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+          }
+          iprot.readFieldEnd();
+        }
+        iprot.readStructEnd();
+
+        // check for required fields of primitive type, which can't be checked in the validate method
+        struct.validate();
+      }
+
+      public void write(org.apache.thrift.protocol.TProtocol oprot, uploadFileToStorage_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.gatewayId != null) {
+          oprot.writeFieldBegin(GATEWAY_ID_FIELD_DESC);
+          oprot.writeString(struct.gatewayId);
+          oprot.writeFieldEnd();
+        }
+        if (struct.storageResourceId != null) {
+          oprot.writeFieldBegin(STORAGE_RESOURCE_ID_FIELD_DESC);
+          oprot.writeString(struct.storageResourceId);
+          oprot.writeFieldEnd();
+        }
+        if (struct.userId != null) {
+          oprot.writeFieldBegin(USER_ID_FIELD_DESC);
+          oprot.writeString(struct.userId);
+          oprot.writeFieldEnd();
+        }
+        if (struct.content != null) {
+          oprot.writeFieldBegin(CONTENT_FIELD_DESC);
+          oprot.writeBinary(struct.content);
+          oprot.writeFieldEnd();
+        }
+        if (struct.path != null) {
+          oprot.writeFieldBegin(PATH_FIELD_DESC);
+          oprot.writeString(struct.path);
+          oprot.writeFieldEnd();
+        }
+        if (struct.type != null) {
+          oprot.writeFieldBegin(TYPE_FIELD_DESC);
+          oprot.writeString(struct.type);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class uploadFileToStorage_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public uploadFileToStorage_argsTupleScheme getScheme() {
+        return new uploadFileToStorage_argsTupleScheme();
+      }
+    }
+
+    private static class uploadFileToStorage_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<uploadFileToStorage_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, uploadFileToStorage_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        oprot.writeString(struct.gatewayId);
+        java.util.BitSet optionals = new java.util.BitSet();
+        if (struct.isSetStorageResourceId()) {
+          optionals.set(0);
+        }
+        if (struct.isSetUserId()) {
+          optionals.set(1);
+        }
+        if (struct.isSetContent()) {
+          optionals.set(2);
+        }
+        if (struct.isSetPath()) {
+          optionals.set(3);
+        }
+        if (struct.isSetType()) {
+          optionals.set(4);
+        }
+        oprot.writeBitSet(optionals, 5);
+        if (struct.isSetStorageResourceId()) {
+          oprot.writeString(struct.storageResourceId);
+        }
+        if (struct.isSetUserId()) {
+          oprot.writeString(struct.userId);
+        }
+        if (struct.isSetContent()) {
+          oprot.writeBinary(struct.content);
+        }
+        if (struct.isSetPath()) {
+          oprot.writeString(struct.path);
+        }
+        if (struct.isSetType()) {
+          oprot.writeString(struct.type);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, uploadFileToStorage_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        struct.gatewayId = iprot.readString();
+        struct.setGatewayIdIsSet(true);
+        java.util.BitSet incoming = iprot.readBitSet(5);
+        if (incoming.get(0)) {
+          struct.storageResourceId = iprot.readString();
+          struct.setStorageResourceIdIsSet(true);
+        }
+        if (incoming.get(1)) {
+          struct.userId = iprot.readString();
+          struct.setUserIdIsSet(true);
+        }
+        if (incoming.get(2)) {
+          struct.content = iprot.readBinary();
+          struct.setContentIsSet(true);
+        }
+        if (incoming.get(3)) {
+          struct.path = iprot.readString();
+          struct.setPathIsSet(true);
+        }
+        if (incoming.get(4)) {
+          struct.type = iprot.readString();
+          struct.setTypeIsSet(true);
+        }
+      }
+    }
+
+    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+    }
+  }
+
+  public static class uploadFileToStorage_result implements org.apache.thrift.TBase<uploadFileToStorage_result, uploadFileToStorage_result._Fields>, java.io.Serializable, Cloneable, Comparable<uploadFileToStorage_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("uploadFileToStorage_result");
+
+
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new uploadFileToStorage_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new uploadFileToStorage_resultTupleSchemeFactory();
+
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+;
+
+      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
+
+      static {
+        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(java.lang.String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final java.lang.String _fieldName;
+
+      _Fields(short thriftId, java.lang.String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public java.lang.String getFieldName() {
+        return _fieldName;
+      }
+    }
+    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(uploadFileToStorage_result.class, metaDataMap);
+    }
+
+    public uploadFileToStorage_result() {
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public uploadFileToStorage_result(uploadFileToStorage_result other) {
+    }
+
+    public uploadFileToStorage_result deepCopy() {
+      return new uploadFileToStorage_result(this);
+    }
+
+    @Override
+    public void clear() {
+    }
+
+    public void setFieldValue(_Fields field, java.lang.Object value) {
+      switch (field) {
+      }
+    }
+
+    public java.lang.Object getFieldValue(_Fields field) {
+      switch (field) {
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new java.lang.IllegalArgumentException();
+      }
+
+      switch (field) {
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(java.lang.Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof uploadFileToStorage_result)
+        return this.equals((uploadFileToStorage_result)that);
+      return false;
+    }
+
+    public boolean equals(uploadFileToStorage_result that) {
+      if (that == null)
+        return false;
+      if (this == that)
+        return true;
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      int hashCode = 1;
+
+      return hashCode;
+    }
+
+    @Override
+    public int compareTo(uploadFileToStorage_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      scheme(iprot).read(iprot, this);
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      scheme(oprot).write(oprot, this);
+      }
+
+    @Override
+    public java.lang.String toString() {
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("uploadFileToStorage_result(");
+      boolean first = true;
+
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      // check for sub-struct validity
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
+      try {
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private static class uploadFileToStorage_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public uploadFileToStorage_resultStandardScheme getScheme() {
+        return new uploadFileToStorage_resultStandardScheme();
+      }
+    }
+
+    private static class uploadFileToStorage_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<uploadFileToStorage_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, uploadFileToStorage_result struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TField schemeField;
+        iprot.readStructBegin();
+        while (true)
+        {
+          schemeField = iprot.readFieldBegin();
+          if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+            break;
+          }
+          switch (schemeField.id) {
+            default:
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+          }
+          iprot.readFieldEnd();
+        }
+        iprot.readStructEnd();
+
+        // check for required fields of primitive type, which can't be checked in the validate method
+        struct.validate();
+      }
+
+      public void write(org.apache.thrift.protocol.TProtocol oprot, uploadFileToStorage_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class uploadFileToStorage_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public uploadFileToStorage_resultTupleScheme getScheme() {
+        return new uploadFileToStorage_resultTupleScheme();
+      }
+    }
+
+    private static class uploadFileToStorage_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<uploadFileToStorage_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, uploadFileToStorage_result struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, uploadFileToStorage_result struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+      }
+    }
+
+    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+    }
+  }
+
+  public static class downloadFileFromStorage_args implements org.apache.thrift.TBase<downloadFileFromStorage_args, downloadFileFromStorage_args._Fields>, java.io.Serializable, Cloneable, Comparable<downloadFileFromStorage_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("downloadFileFromStorage_args");
+
+    private static final org.apache.thrift.protocol.TField GATEWAY_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayId", org.apache.thrift.protocol.TType.STRING, (short)1);
+    private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)2);
+    private static final org.apache.thrift.protocol.TField USER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("userId", org.apache.thrift.protocol.TType.STRING, (short)3);
+    private static final org.apache.thrift.protocol.TField PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("path", org.apache.thrift.protocol.TType.STRING, (short)4);
+
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new downloadFileFromStorage_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new downloadFileFromStorage_argsTupleSchemeFactory();
+
+    public java.lang.String gatewayId; // required
+    public java.lang.String storageResourceId; // required
+    public java.lang.String userId; // required
+    public java.lang.String path; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      GATEWAY_ID((short)1, "gatewayId"),
+      STORAGE_RESOURCE_ID((short)2, "storageResourceId"),
+      USER_ID((short)3, "userId"),
+      PATH((short)4, "path");
+
+      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
+
+      static {
+        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 1: // GATEWAY_ID
+            return GATEWAY_ID;
+          case 2: // STORAGE_RESOURCE_ID
+            return STORAGE_RESOURCE_ID;
+          case 3: // USER_ID
+            return USER_ID;
+          case 4: // PATH
+            return PATH;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(java.lang.String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final java.lang.String _fieldName;
+
+      _Fields(short thriftId, java.lang.String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public java.lang.String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.GATEWAY_ID, new org.apache.thrift.meta_data.FieldMetaData("gatewayId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.STORAGE_RESOURCE_ID, new org.apache.thrift.meta_data.FieldMetaData("storageResourceId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.USER_ID, new org.apache.thrift.meta_data.FieldMetaData("userId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.PATH, new org.apache.thrift.meta_data.FieldMetaData("path", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(downloadFileFromStorage_args.class, metaDataMap);
+    }
+
+    public downloadFileFromStorage_args() {
+    }
+
+    public downloadFileFromStorage_args(
+      java.lang.String gatewayId,
+      java.lang.String storageResourceId,
+      java.lang.String userId,
+      java.lang.String path)
+    {
+      this();
+      this.gatewayId = gatewayId;
+      this.storageResourceId = storageResourceId;
+      this.userId = userId;
+      this.path = path;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public downloadFileFromStorage_args(downloadFileFromStorage_args other) {
+      if (other.isSetGatewayId()) {
+        this.gatewayId = other.gatewayId;
+      }
+      if (other.isSetStorageResourceId()) {
+        this.storageResourceId = other.storageResourceId;
+      }
+      if (other.isSetUserId()) {
+        this.userId = other.userId;
+      }
+      if (other.isSetPath()) {
+        this.path = other.path;
+      }
+    }
+
+    public downloadFileFromStorage_args deepCopy() {
+      return new downloadFileFromStorage_args(this);
+    }
+
+    @Override
+    public void clear() {
+      this.gatewayId = null;
+      this.storageResourceId = null;
+      this.userId = null;
+      this.path = null;
+    }
+
+    public java.lang.String getGatewayId() {
+      return this.gatewayId;
+    }
+
+    public downloadFileFromStorage_args setGatewayId(java.lang.String gatewayId) {
+      this.gatewayId = gatewayId;
+      return this;
+    }
+
+    public void unsetGatewayId() {
+      this.gatewayId = null;
+    }
+
+    /** Returns true if field gatewayId is set (has been assigned a value) and false otherwise */
+    public boolean isSetGatewayId() {
+      return this.gatewayId != null;
+    }
+
+    public void setGatewayIdIsSet(boolean value) {
+      if (!value) {
+        this.gatewayId = null;
+      }
+    }
+
+    public java.lang.String getStorageResourceId() {
+      return this.storageResourceId;
+    }
+
+    public downloadFileFromStorage_args setStorageResourceId(java.lang.String storageResourceId) {
       this.storageResourceId = storageResourceId;
       return this;
     }
@@ -207499,7 +208769,7 @@ public class RegistryService {
       return this.userId;
     }
 
-    public uploadFileToStorage_args setUserId(java.lang.String userId) {
+    public downloadFileFromStorage_args setUserId(java.lang.String userId) {
       this.userId = userId;
       return this;
     }
@@ -207519,45 +208789,11 @@ public class RegistryService {
       }
     }
 
-    public byte[] getContent() {
-      setContent(org.apache.thrift.TBaseHelper.rightSize(content));
-      return content == null ? null : content.array();
-    }
-
-    public java.nio.ByteBuffer bufferForContent() {
-      return org.apache.thrift.TBaseHelper.copyBinary(content);
-    }
-
-    public uploadFileToStorage_args setContent(byte[] content) {
-      this.content = content == null ? (java.nio.ByteBuffer)null : java.nio.ByteBuffer.wrap(content.clone());
-      return this;
-    }
-
-    public uploadFileToStorage_args setContent(java.nio.ByteBuffer content) {
-      this.content = org.apache.thrift.TBaseHelper.copyBinary(content);
-      return this;
-    }
-
-    public void unsetContent() {
-      this.content = null;
-    }
-
-    /** Returns true if field content is set (has been assigned a value) and false otherwise */
-    public boolean isSetContent() {
-      return this.content != null;
-    }
-
-    public void setContentIsSet(boolean value) {
-      if (!value) {
-        this.content = null;
-      }
-    }
-
     public java.lang.String getPath() {
       return this.path;
     }
 
-    public uploadFileToStorage_args setPath(java.lang.String path) {
+    public downloadFileFromStorage_args setPath(java.lang.String path) {
       this.path = path;
       return this;
     }
@@ -207577,30 +208813,6 @@ public class RegistryService {
       }
     }
 
-    public java.lang.String getType() {
-      return this.type;
-    }
-
-    public uploadFileToStorage_args setType(java.lang.String type) {
-      this.type = type;
-      return this;
-    }
-
-    public void unsetType() {
-      this.type = null;
-    }
-
-    /** Returns true if field type is set (has been assigned a value) and false otherwise */
-    public boolean isSetType() {
-      return this.type != null;
-    }
-
-    public void setTypeIsSet(boolean value) {
-      if (!value) {
-        this.type = null;
-      }
-    }
-
     public void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
       case GATEWAY_ID:
@@ -207627,18 +208839,6 @@ public class RegistryService {
         }
         break;
 
-      case CONTENT:
-        if (value == null) {
-          unsetContent();
-        } else {
-          if (value instanceof byte[]) {
-            setContent((byte[])value);
-          } else {
-            setContent((java.nio.ByteBuffer)value);
-          }
-        }
-        break;
-
       case PATH:
         if (value == null) {
           unsetPath();
@@ -207647,14 +208847,6 @@ public class RegistryService {
         }
         break;
 
-      case TYPE:
-        if (value == null) {
-          unsetType();
-        } else {
-          setType((java.lang.String)value);
-        }
-        break;
-
       }
     }
 
@@ -207669,15 +208861,9 @@ public class RegistryService {
       case USER_ID:
         return getUserId();
 
-      case CONTENT:
-        return getContent();
-
       case PATH:
         return getPath();
 
-      case TYPE:
-        return getType();
-
       }
       throw new java.lang.IllegalStateException();
     }
@@ -207695,12 +208881,8 @@ public class RegistryService {
         return isSetStorageResourceId();
       case USER_ID:
         return isSetUserId();
-      case CONTENT:
-        return isSetContent();
       case PATH:
         return isSetPath();
-      case TYPE:
-        return isSetType();
       }
       throw new java.lang.IllegalStateException();
     }
@@ -207709,12 +208891,12 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof uploadFileToStorage_args)
-        return this.equals((uploadFileToStorage_args)that);
+      if (that instanceof downloadFileFromStorage_args)
+        return this.equals((downloadFileFromStorage_args)that);
       return false;
     }
 
-    public boolean equals(uploadFileToStorage_args that) {
+    public boolean equals(downloadFileFromStorage_args that) {
       if (that == null)
         return false;
       if (this == that)
@@ -207747,15 +208929,6 @@ public class RegistryService {
           return false;
       }
 
-      boolean this_present_content = true && this.isSetContent();
-      boolean that_present_content = true && that.isSetContent();
-      if (this_present_content || that_present_content) {
-        if (!(this_present_content && that_present_content))
-          return false;
-        if (!this.content.equals(that.content))
-          return false;
-      }
-
       boolean this_present_path = true && this.isSetPath();
       boolean that_present_path = true && that.isSetPath();
       if (this_present_path || that_present_path) {
@@ -207765,15 +208938,6 @@ public class RegistryService {
           return false;
       }
 
-      boolean this_present_type = true && this.isSetType();
-      boolean that_present_type = true && that.isSetType();
-      if (this_present_type || that_present_type) {
-        if (!(this_present_type && that_present_type))
-          return false;
-        if (!this.type.equals(that.type))
-          return false;
-      }
-
       return true;
     }
 
@@ -207793,23 +208957,15 @@ public class RegistryService {
       if (isSetUserId())
         hashCode = hashCode * 8191 + userId.hashCode();
 
-      hashCode = hashCode * 8191 + ((isSetContent()) ? 131071 : 524287);
-      if (isSetContent())
-        hashCode = hashCode * 8191 + content.hashCode();
-
       hashCode = hashCode * 8191 + ((isSetPath()) ? 131071 : 524287);
       if (isSetPath())
         hashCode = hashCode * 8191 + path.hashCode();
 
-      hashCode = hashCode * 8191 + ((isSetType()) ? 131071 : 524287);
-      if (isSetType())
-        hashCode = hashCode * 8191 + type.hashCode();
-
       return hashCode;
     }
 
     @Override
-    public int compareTo(uploadFileToStorage_args other) {
+    public int compareTo(downloadFileFromStorage_args other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
@@ -207846,16 +209002,6 @@ public class RegistryService {
           return lastComparison;
         }
       }
-      lastComparison = java.lang.Boolean.valueOf(isSetContent()).compareTo(other.isSetContent());
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-      if (isSetContent()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.content, other.content);
-        if (lastComparison != 0) {
-          return lastComparison;
-        }
-      }
       lastComparison = java.lang.Boolean.valueOf(isSetPath()).compareTo(other.isSetPath());
       if (lastComparison != 0) {
         return lastComparison;
@@ -207866,16 +209012,6 @@ public class RegistryService {
           return lastComparison;
         }
       }
-      lastComparison = java.lang.Boolean.valueOf(isSetType()).compareTo(other.isSetType());
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-      if (isSetType()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.type, other.type);
-        if (lastComparison != 0) {
-          return lastComparison;
-        }
-      }
       return 0;
     }
 
@@ -207893,7 +209029,7 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("uploadFileToStorage_args(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("downloadFileFromStorage_args(");
       boolean first = true;
 
       sb.append("gatewayId:");
@@ -207920,14 +209056,6 @@ public class RegistryService {
       }
       first = false;
       if (!first) sb.append(", ");
-      sb.append("content:");
-      if (this.content == null) {
-        sb.append("null");
-      } else {
-        org.apache.thrift.TBaseHelper.toString(this.content, sb);
-      }
-      first = false;
-      if (!first) sb.append(", ");
       sb.append("path:");
       if (this.path == null) {
         sb.append("null");
@@ -207935,14 +209063,6 @@ public class RegistryService {
         sb.append(this.path);
       }
       first = false;
-      if (!first) sb.append(", ");
-      sb.append("type:");
-      if (this.type == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.type);
-      }
-      first = false;
       sb.append(")");
       return sb.toString();
     }
@@ -207971,15 +209091,15 @@ public class RegistryService {
       }
     }
 
-    private static class uploadFileToStorage_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public uploadFileToStorage_argsStandardScheme getScheme() {
-        return new uploadFileToStorage_argsStandardScheme();
+    private static class downloadFileFromStorage_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public downloadFileFromStorage_argsStandardScheme getScheme() {
+        return new downloadFileFromStorage_argsStandardScheme();
       }
     }
 
-    private static class uploadFileToStorage_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<uploadFileToStorage_args> {
+    private static class downloadFileFromStorage_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<downloadFileFromStorage_args> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, uploadFileToStorage_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, downloadFileFromStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -208013,15 +209133,7 @@ public class RegistryService {
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
-            case 4: // CONTENT
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-                struct.content = iprot.readBinary();
-                struct.setContentIsSet(true);
-              } else { 
-                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-              }
-              break;
-            case 5: // PATH
+            case 4: // PATH
               if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                 struct.path = iprot.readString();
                 struct.setPathIsSet(true);
@@ -208029,14 +209141,6 @@ public class RegistryService {
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
-            case 6: // TYPE
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-                struct.type = iprot.readString();
-                struct.setTypeIsSet(true);
-              } else { 
-                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-              }
-              break;
             default:
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
           }
@@ -208048,7 +209152,7 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, uploadFileToStorage_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, downloadFileFromStorage_args struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
@@ -208067,37 +209171,27 @@ public class RegistryService {
           oprot.writeString(struct.userId);
           oprot.writeFieldEnd();
         }
-        if (struct.content != null) {
-          oprot.writeFieldBegin(CONTENT_FIELD_DESC);
-          oprot.writeBinary(struct.content);
-          oprot.writeFieldEnd();
-        }
         if (struct.path != null) {
           oprot.writeFieldBegin(PATH_FIELD_DESC);
           oprot.writeString(struct.path);
           oprot.writeFieldEnd();
         }
-        if (struct.type != null) {
-          oprot.writeFieldBegin(TYPE_FIELD_DESC);
-          oprot.writeString(struct.type);
-          oprot.writeFieldEnd();
-        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
 
     }
 
-    private static class uploadFileToStorage_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public uploadFileToStorage_argsTupleScheme getScheme() {
-        return new uploadFileToStorage_argsTupleScheme();
+    private static class downloadFileFromStorage_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public downloadFileFromStorage_argsTupleScheme getScheme() {
+        return new downloadFileFromStorage_argsTupleScheme();
       }
     }
 
-    private static class uploadFileToStorage_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<uploadFileToStorage_args> {
+    private static class downloadFileFromStorage_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<downloadFileFromStorage_args> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, uploadFileToStorage_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, downloadFileFromStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         oprot.writeString(struct.gatewayId);
         java.util.BitSet optionals = new java.util.BitSet();
@@ -208107,39 +209201,27 @@ public class RegistryService {
         if (struct.isSetUserId()) {
           optionals.set(1);
         }
-        if (struct.isSetContent()) {
-          optionals.set(2);
-        }
         if (struct.isSetPath()) {
-          optionals.set(3);
-        }
-        if (struct.isSetType()) {
-          optionals.set(4);
+          optionals.set(2);
         }
-        oprot.writeBitSet(optionals, 5);
+        oprot.writeBitSet(optionals, 3);
         if (struct.isSetStorageResourceId()) {
           oprot.writeString(struct.storageResourceId);
         }
         if (struct.isSetUserId()) {
           oprot.writeString(struct.userId);
         }
-        if (struct.isSetContent()) {
-          oprot.writeBinary(struct.content);
-        }
         if (struct.isSetPath()) {
           oprot.writeString(struct.path);
         }
-        if (struct.isSetType()) {
-          oprot.writeString(struct.type);
-        }
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, uploadFileToStorage_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, downloadFileFromStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         struct.gatewayId = iprot.readString();
         struct.setGatewayIdIsSet(true);
-        java.util.BitSet incoming = iprot.readBitSet(5);
+        java.util.BitSet incoming = iprot.readBitSet(3);
         if (incoming.get(0)) {
           struct.storageResourceId = iprot.readString();
           struct.setStorageResourceIdIsSet(true);
@@ -208149,17 +209231,9 @@ public class RegistryService {
           struct.setUserIdIsSet(true);
         }
         if (incoming.get(2)) {
-          struct.content = iprot.readBinary();
-          struct.setContentIsSet(true);
-        }
-        if (incoming.get(3)) {
           struct.path = iprot.readString();
           struct.setPathIsSet(true);
         }
-        if (incoming.get(4)) {
-          struct.type = iprot.readString();
-          struct.setTypeIsSet(true);
-        }
       }
     }
 
@@ -208168,17 +209242,19 @@ public class RegistryService {
     }
   }
 
-  public static class uploadFileToStorage_result implements org.apache.thrift.TBase<uploadFileToStorage_result, uploadFileToStorage_result._Fields>, java.io.Serializable, Cloneable, Comparable<uploadFileToStorage_result>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("uploadFileToStorage_result");
+  public static class downloadFileFromStorage_result implements org.apache.thrift.TBase<downloadFileFromStorage_result, downloadFileFromStorage_result._Fields>, java.io.Serializable, Cloneable, Comparable<downloadFileFromStorage_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("downloadFileFromStorage_result");
 
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new uploadFileToStorage_resultStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new uploadFileToStorage_resultTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new downloadFileFromStorage_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new downloadFileFromStorage_resultTupleSchemeFactory();
 
+    public org.apache.airavata.model.appcatalog.datamodels.FileStructure success; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-;
+      SUCCESS((short)0, "success");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -208193,6 +209269,8 @@ public class RegistryService {
        */
       public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
+          case 0: // SUCCESS
+            return SUCCESS;
           default:
             return null;
         }
@@ -208231,37 +209309,87 @@ public class RegistryService {
         return _fieldName;
       }
     }
+
+    // isset id assignments
     public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
     static {
       java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.datamodels.FileStructure.class)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(uploadFileToStorage_result.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(downloadFileFromStorage_result.class, metaDataMap);
     }
 
-    public uploadFileToStorage_result() {
+    public downloadFileFromStorage_result() {
+    }
+
+    public downloadFileFromStorage_result(
+      org.apache.airavata.model.appcatalog.datamodels.FileStructure success)
+    {
+      this();
+      this.success = success;
     }
 
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public uploadFileToStorage_result(uploadFileToStorage_result other) {
+    public downloadFileFromStorage_result(downloadFileFromStorage_result other) {
+      if (other.isSetSuccess()) {
+        this.success = new org.apache.airavata.model.appcatalog.datamodels.FileStructure(other.success);
+      }
     }
 
-    public uploadFileToStorage_result deepCopy() {
-      return new uploadFileToStorage_result(this);
+    public downloadFileFromStorage_result deepCopy() {
+      return new downloadFileFromStorage_result(this);
     }
 
     @Override
     public void clear() {
+      this.success = null;
+    }
+
+    public org.apache.airavata.model.appcatalog.datamodels.FileStructure getSuccess() {
+      return this.success;
+    }
+
+    public downloadFileFromStorage_result setSuccess(org.apache.airavata.model.appcatalog.datamodels.FileStructure success) {
+      this.success = success;
+      return this;
+    }
+
+    public void unsetSuccess() {
+      this.success = null;
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return this.success != null;
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      if (!value) {
+        this.success = null;
+      }
     }
 
     public void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((org.apache.airavata.model.appcatalog.datamodels.FileStructure)value);
+        }
+        break;
+
       }
     }
 
     public java.lang.Object getFieldValue(_Fields field) {
       switch (field) {
+      case SUCCESS:
+        return getSuccess();
+
       }
       throw new java.lang.IllegalStateException();
     }
@@ -208273,6 +209401,8 @@ public class RegistryService {
       }
 
       switch (field) {
+      case SUCCESS:
+        return isSetSuccess();
       }
       throw new java.lang.IllegalStateException();
     }
@@ -208281,17 +209411,26 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof uploadFileToStorage_result)
-        return this.equals((uploadFileToStorage_result)that);
+      if (that instanceof downloadFileFromStorage_result)
+        return this.equals((downloadFileFromStorage_result)that);
       return false;
     }
 
-    public boolean equals(uploadFileToStorage_result that) {
+    public boolean equals(downloadFileFromStorage_result that) {
       if (that == null)
         return false;
       if (this == that)
         return true;
 
+      boolean this_present_success = true && this.isSetSuccess();
+      boolean that_present_success = true && that.isSetSuccess();
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (!this.success.equals(that.success))
+          return false;
+      }
+
       return true;
     }
 
@@ -208299,17 +209438,31 @@ public class RegistryService {
     public int hashCode() {
       int hashCode = 1;
 
+      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
+      if (isSetSuccess())
+        hashCode = hashCode * 8191 + success.hashCode();
+
       return hashCode;
     }
 
     @Override
-    public int compareTo(uploadFileToStorage_result other) {
+    public int compareTo(downloadFileFromStorage_result other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
 
       int lastComparison = 0;
 
+      lastComparison = java.lang.Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       return 0;
     }
 
@@ -208327,9 +209480,16 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("uploadFileToStorage_result(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("downloadFileFromStorage_result(");
       boolean first = true;
 
+      sb.append("success:");
+      if (this.success == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.success);
+      }
+      first = false;
       sb.append(")");
       return sb.toString();
     }
@@ -208337,6 +209497,9 @@ public class RegistryService {
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
       // check for sub-struct validity
+      if (success != null) {
+        success.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -208355,15 +209518,15 @@ public class RegistryService {
       }
     }
 
-    private static class uploadFileToStorage_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public uploadFileToStorage_resultStandardScheme getScheme() {
-        return new uploadFileToStorage_resultStandardScheme();
+    private static class downloadFileFromStorage_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public downloadFileFromStorage_resultStandardScheme getScheme() {
+        return new downloadFileFromStorage_resultStandardScheme();
       }
     }
 
-    private static class uploadFileToStorage_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<uploadFileToStorage_result> {
+    private static class downloadFileFromStorage_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<downloadFileFromStorage_result> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, uploadFileToStorage_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, downloadFileFromStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -208373,6 +209536,15 @@ public class RegistryService {
             break;
           }
           switch (schemeField.id) {
+            case 0: // SUCCESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.success = new org.apache.airavata.model.appcatalog.datamodels.FileStructure();
+                struct.success.read(iprot);
+                struct.setSuccessIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
             default:
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
           }
@@ -208384,32 +209556,51 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, uploadFileToStorage_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, downloadFileFromStorage_result struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.success != null) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          struct.success.write(oprot);
+          oprot.writeFieldEnd();
+        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
 
     }
 
-    private static class uploadFileToStorage_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public uploadFileToStorage_resultTupleScheme getScheme() {
-        return new uploadFileToStorage_resultTupleScheme();
+    private static class downloadFileFromStorage_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public downloadFileFromStorage_resultTupleScheme getScheme() {
+        return new downloadFileFromStorage_resultTupleScheme();
       }
     }
 
-    private static class uploadFileToStorage_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<uploadFileToStorage_result> {
+    private static class downloadFileFromStorage_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<downloadFileFromStorage_result> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, uploadFileToStorage_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, downloadFileFromStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        java.util.BitSet optionals = new java.util.BitSet();
+        if (struct.isSetSuccess()) {
+          optionals.set(0);
+        }
+        oprot.writeBitSet(optionals, 1);
+        if (struct.isSetSuccess()) {
+          struct.success.write(oprot);
+        }
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, uploadFileToStorage_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, downloadFileFromStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        java.util.BitSet incoming = iprot.readBitSet(1);
+        if (incoming.get(0)) {
+          struct.success = new org.apache.airavata.model.appcatalog.datamodels.FileStructure();
+          struct.success.read(iprot);
+          struct.setSuccessIsSet(true);
+        }
       }
     }
 
@@ -208418,28 +209609,28 @@ public class RegistryService {
     }
   }
 
-  public static class downloadFileFromStorage_args implements org.apache.thrift.TBase<downloadFileFromStorage_args, downloadFileFromStorage_args._Fields>, java.io.Serializable, Cloneable, Comparable<downloadFileFromStorage_args>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("downloadFileFromStorage_args");
+  public static class listDirectoryFromStorage_args implements org.apache.thrift.TBase<listDirectoryFromStorage_args, listDirectoryFromStorage_args._Fields>, java.io.Serializable, Cloneable, Comparable<listDirectoryFromStorage_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("listDirectoryFromStorage_args");
 
     private static final org.apache.thrift.protocol.TField GATEWAY_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayId", org.apache.thrift.protocol.TType.STRING, (short)1);
     private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)2);
     private static final org.apache.thrift.protocol.TField USER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("userId", org.apache.thrift.protocol.TType.STRING, (short)3);
-    private static final org.apache.thrift.protocol.TField PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("path", org.apache.thrift.protocol.TType.STRING, (short)4);
+    private static final org.apache.thrift.protocol.TField DIR_PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("dirPath", org.apache.thrift.protocol.TType.STRING, (short)4);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new downloadFileFromStorage_argsStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new downloadFileFromStorage_argsTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new listDirectoryFromStorage_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new listDirectoryFromStorage_argsTupleSchemeFactory();
 
     public java.lang.String gatewayId; // required
     public java.lang.String storageResourceId; // required
     public java.lang.String userId; // required
-    public java.lang.String path; // required
+    public java.lang.String dirPath; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
       GATEWAY_ID((short)1, "gatewayId"),
       STORAGE_RESOURCE_ID((short)2, "storageResourceId"),
       USER_ID((short)3, "userId"),
-      PATH((short)4, "path");
+      DIR_PATH((short)4, "dirPath");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -208460,8 +209651,8 @@ public class RegistryService {
             return STORAGE_RESOURCE_ID;
           case 3: // USER_ID
             return USER_ID;
-          case 4: // PATH
-            return PATH;
+          case 4: // DIR_PATH
+            return DIR_PATH;
           default:
             return null;
         }
@@ -208511,32 +209702,32 @@ public class RegistryService {
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       tmpMap.put(_Fields.USER_ID, new org.apache.thrift.meta_data.FieldMetaData("userId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-      tmpMap.put(_Fields.PATH, new org.apache.thrift.meta_data.FieldMetaData("path", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+      tmpMap.put(_Fields.DIR_PATH, new org.apache.thrift.meta_data.FieldMetaData("dirPath", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(downloadFileFromStorage_args.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(listDirectoryFromStorage_args.class, metaDataMap);
     }
 
-    public downloadFileFromStorage_args() {
+    public listDirectoryFromStorage_args() {
     }
 
-    public downloadFileFromStorage_args(
+    public listDirectoryFromStorage_args(
       java.lang.String gatewayId,
       java.lang.String storageResourceId,
       java.lang.String userId,
-      java.lang.String path)
+      java.lang.String dirPath)
     {
       this();
       this.gatewayId = gatewayId;
       this.storageResourceId = storageResourceId;
       this.userId = userId;
-      this.path = path;
+      this.dirPath = dirPath;
     }
 
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public downloadFileFromStorage_args(downloadFileFromStorage_args other) {
+    public listDirectoryFromStorage_args(listDirectoryFromStorage_args other) {
       if (other.isSetGatewayId()) {
         this.gatewayId = other.gatewayId;
       }
@@ -208546,13 +209737,13 @@ public class RegistryService {
       if (other.isSetUserId()) {
         this.userId = other.userId;
       }
-      if (other.isSetPath()) {
-        this.path = other.path;
+      if (other.isSetDirPath()) {
+        this.dirPath = other.dirPath;
       }
     }
 
-    public downloadFileFromStorage_args deepCopy() {
-      return new downloadFileFromStorage_args(this);
+    public listDirectoryFromStorage_args deepCopy() {
+      return new listDirectoryFromStorage_args(this);
     }
 
     @Override
@@ -208560,14 +209751,14 @@ public class RegistryService {
       this.gatewayId = null;
       this.storageResourceId = null;
       this.userId = null;
-      this.path = null;
+      this.dirPath = null;
     }
 
     public java.lang.String getGatewayId() {
       return this.gatewayId;
     }
 
-    public downloadFileFromStorage_args setGatewayId(java.lang.String gatewayId) {
+    public listDirectoryFromStorage_args setGatewayId(java.lang.String gatewayId) {
       this.gatewayId = gatewayId;
       return this;
     }
@@ -208591,7 +209782,7 @@ public class RegistryService {
       return this.storageResourceId;
     }
 
-    public downloadFileFromStorage_args setStorageResourceId(java.lang.String storageResourceId) {
+    public listDirectoryFromStorage_args setStorageResourceId(java.lang.String storageResourceId) {
       this.storageResourceId = storageResourceId;
       return this;
     }
@@ -208615,7 +209806,7 @@ public class RegistryService {
       return this.userId;
     }
 
-    public downloadFileFromStorage_args setUserId(java.lang.String userId) {
+    public listDirectoryFromStorage_args setUserId(java.lang.String userId) {
       this.userId = userId;
       return this;
     }
@@ -208635,27 +209826,27 @@ public class RegistryService {
       }
     }
 
-    public java.lang.String getPath() {
-      return this.path;
+    public java.lang.String getDirPath() {
+      return this.dirPath;
     }
 
-    public downloadFileFromStorage_args setPath(java.lang.String path) {
-      this.path = path;
+    public listDirectoryFromStorage_args setDirPath(java.lang.String dirPath) {
+      this.dirPath = dirPath;
       return this;
     }
 
-    public void unsetPath() {
-      this.path = null;
+    public void unsetDirPath() {
+      this.dirPath = null;
     }
 
-    /** Returns true if field path is set (has been assigned a value) and false otherwise */
-    public boolean isSetPath() {
-      return this.path != null;
+    /** Returns true if field dirPath is set (has been assigned a value) and false otherwise */
+    public boolean isSetDirPath() {
+      return this.dirPath != null;
     }
 
-    public void setPathIsSet(boolean value) {
+    public void setDirPathIsSet(boolean value) {
       if (!value) {
-        this.path = null;
+        this.dirPath = null;
       }
     }
 
@@ -208685,11 +209876,11 @@ public class RegistryService {
         }
         break;
 
-      case PATH:
+      case DIR_PATH:
         if (value == null) {
-          unsetPath();
+          unsetDirPath();
         } else {
-          setPath((java.lang.String)value);
+          setDirPath((java.lang.String)value);
         }
         break;
 
@@ -208707,8 +209898,8 @@ public class RegistryService {
       case USER_ID:
         return getUserId();
 
-      case PATH:
-        return getPath();
+      case DIR_PATH:
+        return getDirPath();
 
       }
       throw new java.lang.IllegalStateException();
@@ -208727,8 +209918,8 @@ public class RegistryService {
         return isSetStorageResourceId();
       case USER_ID:
         return isSetUserId();
-      case PATH:
-        return isSetPath();
+      case DIR_PATH:
+        return isSetDirPath();
       }
       throw new java.lang.IllegalStateException();
     }
@@ -208737,12 +209928,12 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof downloadFileFromStorage_args)
-        return this.equals((downloadFileFromStorage_args)that);
+      if (that instanceof listDirectoryFromStorage_args)
+        return this.equals((listDirectoryFromStorage_args)that);
       return false;
     }
 
-    public boolean equals(downloadFileFromStorage_args that) {
+    public boolean equals(listDirectoryFromStorage_args that) {
       if (that == null)
         return false;
       if (this == that)
@@ -208775,12 +209966,12 @@ public class RegistryService {
           return false;
       }
 
-      boolean this_present_path = true && this.isSetPath();
-      boolean that_present_path = true && that.isSetPath();
-      if (this_present_path || that_present_path) {
-        if (!(this_present_path && that_present_path))
+      boolean this_present_dirPath = true && this.isSetDirPath();
+      boolean that_present_dirPath = true && that.isSetDirPath();
+      if (this_present_dirPath || that_present_dirPath) {
+        if (!(this_present_dirPath && that_present_dirPath))
           return false;
-        if (!this.path.equals(that.path))
+        if (!this.dirPath.equals(that.dirPath))
           return false;
       }
 
@@ -208803,15 +209994,15 @@ public class RegistryService {
       if (isSetUserId())
         hashCode = hashCode * 8191 + userId.hashCode();
 
-      hashCode = hashCode * 8191 + ((isSetPath()) ? 131071 : 524287);
-      if (isSetPath())
-        hashCode = hashCode * 8191 + path.hashCode();
+      hashCode = hashCode * 8191 + ((isSetDirPath()) ? 131071 : 524287);
+      if (isSetDirPath())
+        hashCode = hashCode * 8191 + dirPath.hashCode();
 
       return hashCode;
     }
 
     @Override
-    public int compareTo(downloadFileFromStorage_args other) {
+    public int compareTo(listDirectoryFromStorage_args other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
@@ -208848,12 +210039,12 @@ public class RegistryService {
           return lastComparison;
         }
       }
-      lastComparison = java.lang.Boolean.valueOf(isSetPath()).compareTo(other.isSetPath());
+      lastComparison = java.lang.Boolean.valueOf(isSetDirPath()).compareTo(other.isSetDirPath());
       if (lastComparison != 0) {
         return lastComparison;
       }
-      if (isSetPath()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.path, other.path);
+      if (isSetDirPath()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dirPath, other.dirPath);
         if (lastComparison != 0) {
           return lastComparison;
         }
@@ -208875,7 +210066,7 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("downloadFileFromStorage_args(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("listDirectoryFromStorage_args(");
       boolean first = true;
 
       sb.append("gatewayId:");
@@ -208902,11 +210093,11 @@ public class RegistryService {
       }
       first = false;
       if (!first) sb.append(", ");
-      sb.append("path:");
-      if (this.path == null) {
+      sb.append("dirPath:");
+      if (this.dirPath == null) {
         sb.append("null");
       } else {
-        sb.append(this.path);
+        sb.append(this.dirPath);
       }
       first = false;
       sb.append(")");
@@ -208937,15 +210128,15 @@ public class RegistryService {
       }
     }
 
-    private static class downloadFileFromStorage_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public downloadFileFromStorage_argsStandardScheme getScheme() {
-        return new downloadFileFromStorage_argsStandardScheme();
+    private static class listDirectoryFromStorage_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public listDirectoryFromStorage_argsStandardScheme getScheme() {
+        return new listDirectoryFromStorage_argsStandardScheme();
       }
     }
 
-    private static class downloadFileFromStorage_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<downloadFileFromStorage_args> {
+    private static class listDirectoryFromStorage_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<listDirectoryFromStorage_args> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, downloadFileFromStorage_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, listDirectoryFromStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -208979,10 +210170,10 @@ public class RegistryService {
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
-            case 4: // PATH
+            case 4: // DIR_PATH
               if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-                struct.path = iprot.readString();
-                struct.setPathIsSet(true);
+                struct.dirPath = iprot.readString();
+                struct.setDirPathIsSet(true);
               } else { 
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
@@ -208998,7 +210189,7 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, downloadFileFromStorage_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, listDirectoryFromStorage_args struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
@@ -209017,9 +210208,9 @@ public class RegistryService {
           oprot.writeString(struct.userId);
           oprot.writeFieldEnd();
         }
-        if (struct.path != null) {
-          oprot.writeFieldBegin(PATH_FIELD_DESC);
-          oprot.writeString(struct.path);
+        if (struct.dirPath != null) {
+          oprot.writeFieldBegin(DIR_PATH_FIELD_DESC);
+          oprot.writeString(struct.dirPath);
           oprot.writeFieldEnd();
         }
         oprot.writeFieldStop();
@@ -209028,16 +210219,16 @@ public class RegistryService {
 
     }
 
-    private static class downloadFileFromStorage_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public downloadFileFromStorage_argsTupleScheme getScheme() {
-        return new downloadFileFromStorage_argsTupleScheme();
+    private static class listDirectoryFromStorage_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public listDirectoryFromStorage_argsTupleScheme getScheme() {
+        return new listDirectoryFromStorage_argsTupleScheme();
       }
     }
 
-    private static class downloadFileFromStorage_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<downloadFileFromStorage_args> {
+    private static class listDirectoryFromStorage_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<listDirectoryFromStorage_args> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, downloadFileFromStorage_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, listDirectoryFromStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         oprot.writeString(struct.gatewayId);
         java.util.BitSet optionals = new java.util.BitSet();
@@ -209047,7 +210238,7 @@ public class RegistryService {
         if (struct.isSetUserId()) {
           optionals.set(1);
         }
-        if (struct.isSetPath()) {
+        if (struct.isSetDirPath()) {
           optionals.set(2);
         }
         oprot.writeBitSet(optionals, 3);
@@ -209057,13 +210248,13 @@ public class RegistryService {
         if (struct.isSetUserId()) {
           oprot.writeString(struct.userId);
         }
-        if (struct.isSetPath()) {
-          oprot.writeString(struct.path);
+        if (struct.isSetDirPath()) {
+          oprot.writeString(struct.dirPath);
         }
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, downloadFileFromStorage_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, listDirectoryFromStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         struct.gatewayId = iprot.readString();
         struct.setGatewayIdIsSet(true);
@@ -209077,8 +210268,8 @@ public class RegistryService {
           struct.setUserIdIsSet(true);
         }
         if (incoming.get(2)) {
-          struct.path = iprot.readString();
-          struct.setPathIsSet(true);
+          struct.dirPath = iprot.readString();
+          struct.setDirPathIsSet(true);
         }
       }
     }
@@ -209088,15 +210279,15 @@ public class RegistryService {
     }
   }
 
-  public static class downloadFileFromStorage_result implements org.apache.thrift.TBase<downloadFileFromStorage_result, downloadFileFromStorage_result._Fields>, java.io.Serializable, Cloneable, Comparable<downloadFileFromStorage_result>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("downloadFileFromStorage_result");
+  public static class listDirectoryFromStorage_result implements org.apache.thrift.TBase<listDirectoryFromStorage_result, listDirectoryFromStorage_result._Fields>, java.io.Serializable, Cloneable, Comparable<listDirectoryFromStorage_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("listDirectoryFromStorage_result");
 
-    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.LIST, (short)0);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new downloadFileFromStorage_resultStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new downloadFileFromStorage_resultTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new listDirectoryFromStorage_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new listDirectoryFromStorage_resultTupleSchemeFactory();
 
-    public org.apache.airavata.model.appcatalog.datamodels.FileStructure success; // required
+    public java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure> success; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -209161,16 +210352,17 @@ public class RegistryService {
     static {
       java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
       tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
-          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.datamodels.FileStructure.class)));
+          new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+              new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.datamodels.FileStructure.class))));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(downloadFileFromStorage_result.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(listDirectoryFromStorage_result.class, metaDataMap);
     }
 
-    public downloadFileFromStorage_result() {
+    public listDirectoryFromStorage_result() {
     }
 
-    public downloadFileFromStorage_result(
-      org.apache.airavata.model.appcatalog.datamodels.FileStructure success)
+    public listDirectoryFromStorage_result(
+      java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure> success)
     {
       this();
       this.success = success;
@@ -209179,14 +210371,18 @@ public class RegistryService {
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public downloadFileFromStorage_result(downloadFileFromStorage_result other) {
+    public listDirectoryFromStorage_result(listDirectoryFromStorage_result other) {
       if (other.isSetSuccess()) {
-        this.success = new org.apache.airavata.model.appcatalog.datamodels.FileStructure(other.success);
+        java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure> __this__success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.datamodels.FileStructure>(other.success.size());
+        for (org.apache.airavata.model.appcatalog.datamodels.FileStructure other_element : other.success) {
+          __this__success.add(new org.apache.airavata.model.appcatalog.datamodels.FileStructure(other_element));
+        }
+        this.success = __this__success;
       }
     }
 
-    public downloadFileFromStorage_result deepCopy() {
-      return new downloadFileFromStorage_result(this);
+    public listDirectoryFromStorage_result deepCopy() {
+      return new listDirectoryFromStorage_result(this);
     }
 
     @Override
@@ -209194,11 +210390,26 @@ public class RegistryService {
       this.success = null;
     }
 
-    public org.apache.airavata.model.appcatalog.datamodels.FileStructure getSuccess() {
+    public int getSuccessSize() {
+      return (this.success == null) ? 0 : this.success.size();
+    }
+
+    public java.util.Iterator<org.apache.airavata.model.appcatalog.datamodels.FileStructure> getSuccessIterator() {
+      return (this.success == null) ? null : this.success.iterator();
+    }
+
+    public void addToSuccess(org.apache.airavata.model.appcatalog.datamodels.FileStructure elem) {
+      if (this.success == null) {
+        this.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.datamodels.FileStructure>();
+      }
+      this.success.add(elem);
+    }
+
+    public java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure> getSuccess() {
       return this.success;
     }
 
-    public downloadFileFromStorage_result setSuccess(org.apache.airavata.model.appcatalog.datamodels.FileStructure success) {
+    public listDirectoryFromStorage_result setSuccess(java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure> success) {
       this.success = success;
       return this;
     }
@@ -209224,7 +210435,7 @@ public class RegistryService {
         if (value == null) {
           unsetSuccess();
         } else {
-          setSuccess((org.apache.airavata.model.appcatalog.datamodels.FileStructure)value);
+          setSuccess((java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure>)value);
         }
         break;
 
@@ -209257,12 +210468,12 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof downloadFileFromStorage_result)
-        return this.equals((downloadFileFromStorage_result)that);
+      if (that instanceof listDirectoryFromStorage_result)
+        return this.equals((listDirectoryFromStorage_result)that);
       return false;
     }
 
-    public boolean equals(downloadFileFromStorage_result that) {
+    public boolean equals(listDirectoryFromStorage_result that) {
       if (that == null)
         return false;
       if (this == that)
@@ -209292,7 +210503,7 @@ public class RegistryService {
     }
 
     @Override
-    public int compareTo(downloadFileFromStorage_result other) {
+    public int compareTo(listDirectoryFromStorage_result other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
@@ -209326,7 +210537,7 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("downloadFileFromStorage_result(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("listDirectoryFromStorage_result(");
       boolean first = true;
 
       sb.append("success:");
@@ -209343,9 +210554,6 @@ public class RegistryService {
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
       // check for sub-struct validity
-      if (success != null) {
-        success.validate();
-      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -209364,15 +210572,15 @@ public class RegistryService {
       }
     }
 
-    private static class downloadFileFromStorage_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public downloadFileFromStorage_resultStandardScheme getScheme() {
-        return new downloadFileFromStorage_resultStandardScheme();
+    private static class listDirectoryFromStorage_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public listDirectoryFromStorage_resultStandardScheme getScheme() {
+        return new listDirectoryFromStorage_resultStandardScheme();
       }
     }
 
-    private static class downloadFileFromStorage_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<downloadFileFromStorage_result> {
+    private static class listDirectoryFromStorage_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<listDirectoryFromStorage_result> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, downloadFileFromStorage_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, listDirectoryFromStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -209383,9 +210591,19 @@ public class RegistryService {
           }
           switch (schemeField.id) {
             case 0: // SUCCESS
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-                struct.success = new org.apache.airavata.model.appcatalog.datamodels.FileStructure();
-                struct.success.read(iprot);
+              if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+                {
+                  org.apache.thrift.protocol.TList _list482 = iprot.readListBegin();
+                  struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.datamodels.FileStructure>(_list482.size);
+                  org.apache.airavata.model.appcatalog.datamodels.FileStructure _elem483;
+                  for (int _i484 = 0; _i484 < _list482.size; ++_i484)
+                  {
+                    _elem483 = new org.apache.airavata.model.appcatalog.datamodels.FileStructure();
+                    _elem483.read(iprot);
+                    struct.success.add(_elem483);
+                  }
+                  iprot.readListEnd();
+                }
                 struct.setSuccessIsSet(true);
               } else { 
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
@@ -209402,13 +210620,20 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, downloadFileFromStorage_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, listDirectoryFromStorage_result struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
         if (struct.success != null) {
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
-          struct.success.write(oprot);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
+            for (org.apache.airavata.model.appcatalog.datamodels.FileStructure _iter485 : struct.success)
+            {
+              _iter485.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
           oprot.writeFieldEnd();
         }
         oprot.writeFieldStop();
@@ -209417,16 +210642,16 @@ public class RegistryService {
 
     }
 
-    private static class downloadFileFromStorage_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public downloadFileFromStorage_resultTupleScheme getScheme() {
-        return new downloadFileFromStorage_resultTupleScheme();
+    private static class listDirectoryFromStorage_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public listDirectoryFromStorage_resultTupleScheme getScheme() {
+        return new listDirectoryFromStorage_resultTupleScheme();
       }
     }
 
-    private static class downloadFileFromStorage_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<downloadFileFromStorage_result> {
+    private static class listDirectoryFromStorage_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<listDirectoryFromStorage_result> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, downloadFileFromStorage_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, listDirectoryFromStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         java.util.BitSet optionals = new java.util.BitSet();
         if (struct.isSetSuccess()) {
@@ -209434,17 +210659,32 @@ public class RegistryService {
         }
         oprot.writeBitSet(optionals, 1);
         if (struct.isSetSuccess()) {
-          struct.success.write(oprot);
+          {
+            oprot.writeI32(struct.success.size());
+            for (org.apache.airavata.model.appcatalog.datamodels.FileStructure _iter486 : struct.success)
+            {
+              _iter486.write(oprot);
+            }
+          }
         }
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, downloadFileFromStorage_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, listDirectoryFromStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         java.util.BitSet incoming = iprot.readBitSet(1);
         if (incoming.get(0)) {
-          struct.success = new org.apache.airavata.model.appcatalog.datamodels.FileStructure();
-          struct.success.read(iprot);
+          {
+            org.apache.thrift.protocol.TList _list487 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+            struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.datamodels.FileStructure>(_list487.size);
+            org.apache.airavata.model.appcatalog.datamodels.FileStructure _elem488;
+            for (int _i489 = 0; _i489 < _list487.size; ++_i489)
+            {
+              _elem488 = new org.apache.airavata.model.appcatalog.datamodels.FileStructure();
+              _elem488.read(iprot);
+              struct.success.add(_elem488);
+            }
+          }
           struct.setSuccessIsSet(true);
         }
       }
@@ -209455,28 +210695,28 @@ public class RegistryService {
     }
   }
 
-  public static class listDirectoryFromStorage_args implements org.apache.thrift.TBase<listDirectoryFromStorage_args, listDirectoryFromStorage_args._Fields>, java.io.Serializable, Cloneable, Comparable<listDirectoryFromStorage_args>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("listDirectoryFromStorage_args");
+  public static class getFileDetailsFromStorage_args implements org.apache.thrift.TBase<getFileDetailsFromStorage_args, getFileDetailsFromStorage_args._Fields>, java.io.Serializable, Cloneable, Comparable<getFileDetailsFromStorage_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getFileDetailsFromStorage_args");
 
     private static final org.apache.thrift.protocol.TField GATEWAY_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayId", org.apache.thrift.protocol.TType.STRING, (short)1);
     private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)2);
     private static final org.apache.thrift.protocol.TField USER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("userId", org.apache.thrift.protocol.TType.STRING, (short)3);
-    private static final org.apache.thrift.protocol.TField DIR_PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("dirPath", org.apache.thrift.protocol.TType.STRING, (short)4);
+    private static final org.apache.thrift.protocol.TField FILE_PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("filePath", org.apache.thrift.protocol.TType.STRING, (short)4);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new listDirectoryFromStorage_argsStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new listDirectoryFromStorage_argsTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getFileDetailsFromStorage_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getFileDetailsFromStorage_argsTupleSchemeFactory();
 
     public java.lang.String gatewayId; // required
     public java.lang.String storageResourceId; // required
     public java.lang.String userId; // required
-    public java.lang.String dirPath; // required
+    public java.lang.String filePath; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
       GATEWAY_ID((short)1, "gatewayId"),
       STORAGE_RESOURCE_ID((short)2, "storageResourceId"),
       USER_ID((short)3, "userId"),
-      DIR_PATH((short)4, "dirPath");
+      FILE_PATH((short)4, "filePath");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -209497,8 +210737,8 @@ public class RegistryService {
             return STORAGE_RESOURCE_ID;
           case 3: // USER_ID
             return USER_ID;
-          case 4: // DIR_PATH
-            return DIR_PATH;
+          case 4: // FILE_PATH
+            return FILE_PATH;
           default:
             return null;
         }
@@ -209548,32 +210788,32 @@ public class RegistryService {
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       tmpMap.put(_Fields.USER_ID, new org.apache.thrift.meta_data.FieldMetaData("userId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-      tmpMap.put(_Fields.DIR_PATH, new org.apache.thrift.meta_data.FieldMetaData("dirPath", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+      tmpMap.put(_Fields.FILE_PATH, new org.apache.thrift.meta_data.FieldMetaData("filePath", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(listDirectoryFromStorage_args.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getFileDetailsFromStorage_args.class, metaDataMap);
     }
 
-    public listDirectoryFromStorage_args() {
+    public getFileDetailsFromStorage_args() {
     }
 
-    public listDirectoryFromStorage_args(
+    public getFileDetailsFromStorage_args(
       java.lang.String gatewayId,
       java.lang.String storageResourceId,
       java.lang.String userId,
-      java.lang.String dirPath)
+      java.lang.String filePath)
     {
       this();
       this.gatewayId = gatewayId;
       this.storageResourceId = storageResourceId;
       this.userId = userId;
-      this.dirPath = dirPath;
+      this.filePath = filePath;
     }
 
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public listDirectoryFromStorage_args(listDirectoryFromStorage_args other) {
+    public getFileDetailsFromStorage_args(getFileDetailsFromStorage_args other) {
       if (other.isSetGatewayId()) {
         this.gatewayId = other.gatewayId;
       }
@@ -209583,13 +210823,13 @@ public class RegistryService {
       if (other.isSetUserId()) {
         this.userId = other.userId;
       }
-      if (other.isSetDirPath()) {
-        this.dirPath = other.dirPath;
+      if (other.isSetFilePath()) {
+        this.filePath = other.filePath;
       }
     }
 
-    public listDirectoryFromStorage_args deepCopy() {
-      return new listDirectoryFromStorage_args(this);
+    public getFileDetailsFromStorage_args deepCopy() {
+      return new getFileDetailsFromStorage_args(this);
     }
 
     @Override
@@ -209597,14 +210837,14 @@ public class RegistryService {
       this.gatewayId = null;
       this.storageResourceId = null;
       this.userId = null;
-      this.dirPath = null;
+      this.filePath = null;
     }
 
     public java.lang.String getGatewayId() {
       return this.gatewayId;
     }
 
-    public listDirectoryFromStorage_args setGatewayId(java.lang.String gatewayId) {
+    public getFileDetailsFromStorage_args setGatewayId(java.lang.String gatewayId) {
       this.gatewayId = gatewayId;
       return this;
     }
@@ -209628,7 +210868,7 @@ public class RegistryService {
       return this.storageResourceId;
     }
 
-    public listDirectoryFromStorage_args setStorageResourceId(java.lang.String storageResourceId) {
+    public getFileDetailsFromStorage_args setStorageResourceId(java.lang.String storageResourceId) {
       this.storageResourceId = storageResourceId;
       return this;
     }
@@ -209652,7 +210892,7 @@ public class RegistryService {
       return this.userId;
     }
 
-    public listDirectoryFromStorage_args setUserId(java.lang.String userId) {
+    public getFileDetailsFromStorage_args setUserId(java.lang.String userId) {
       this.userId = userId;
       return this;
     }
@@ -209672,27 +210912,27 @@ public class RegistryService {
       }
     }
 
-    public java.lang.String getDirPath() {
-      return this.dirPath;
+    public java.lang.String getFilePath() {
+      return this.filePath;
     }
 
-    public listDirectoryFromStorage_args setDirPath(java.lang.String dirPath) {
-      this.dirPath = dirPath;
+    public getFileDetailsFromStorage_args setFilePath(java.lang.String filePath) {
+      this.filePath = filePath;
       return this;
     }
 
-    public void unsetDirPath() {
-      this.dirPath = null;
+    public void unsetFilePath() {
+      this.filePath = null;
     }
 
-    /** Returns true if field dirPath is set (has been assigned a value) and false otherwise */
-    public boolean isSetDirPath() {
-      return this.dirPath != null;
+    /** Returns true if field filePath is set (has been assigned a value) and false otherwise */
+    public boolean isSetFilePath() {
+      return this.filePath != null;
     }
 
-    public void setDirPathIsSet(boolean value) {
+    public void setFilePathIsSet(boolean value) {
       if (!value) {
-        this.dirPath = null;
+        this.filePath = null;
       }
     }
 
@@ -209722,11 +210962,11 @@ public class RegistryService {
         }
         break;
 
-      case DIR_PATH:
+      case FILE_PATH:
         if (value == null) {
-          unsetDirPath();
+          unsetFilePath();
         } else {
-          setDirPath((java.lang.String)value);
+          setFilePath((java.lang.String)value);
         }
         break;
 
@@ -209744,8 +210984,8 @@ public class RegistryService {
       case USER_ID:
         return getUserId();
 
-      case DIR_PATH:
-        return getDirPath();
+      case FILE_PATH:
+        return getFilePath();
 
       }
       throw new java.lang.IllegalStateException();
@@ -209764,8 +211004,8 @@ public class RegistryService {
         return isSetStorageResourceId();
       case USER_ID:
         return isSetUserId();
-      case DIR_PATH:
-        return isSetDirPath();
+      case FILE_PATH:
+        return isSetFilePath();
       }
       throw new java.lang.IllegalStateException();
     }
@@ -209774,12 +211014,12 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof listDirectoryFromStorage_args)
-        return this.equals((listDirectoryFromStorage_args)that);
+      if (that instanceof getFileDetailsFromStorage_args)
+        return this.equals((getFileDetailsFromStorage_args)that);
       return false;
     }
 
-    public boolean equals(listDirectoryFromStorage_args that) {
+    public boolean equals(getFileDetailsFromStorage_args that) {
       if (that == null)
         return false;
       if (this == that)
@@ -209812,12 +211052,12 @@ public class RegistryService {
           return false;
       }
 
-      boolean this_present_dirPath = true && this.isSetDirPath();
-      boolean that_present_dirPath = true && that.isSetDirPath();
-      if (this_present_dirPath || that_present_dirPath) {
-        if (!(this_present_dirPath && that_present_dirPath))
+      boolean this_present_filePath = true && this.isSetFilePath();
+      boolean that_present_filePath = true && that.isSetFilePath();
+      if (this_present_filePath || that_present_filePath) {
+        if (!(this_present_filePath && that_present_filePath))
           return false;
-        if (!this.dirPath.equals(that.dirPath))
+        if (!this.filePath.equals(that.filePath))
           return false;
       }
 
@@ -209840,15 +211080,15 @@ public class RegistryService {
       if (isSetUserId())
         hashCode = hashCode * 8191 + userId.hashCode();
 
-      hashCode = hashCode * 8191 + ((isSetDirPath()) ? 131071 : 524287);
-      if (isSetDirPath())
-        hashCode = hashCode * 8191 + dirPath.hashCode();
+      hashCode = hashCode * 8191 + ((isSetFilePath()) ? 131071 : 524287);
+      if (isSetFilePath())
+        hashCode = hashCode * 8191 + filePath.hashCode();
 
       return hashCode;
     }
 
     @Override
-    public int compareTo(listDirectoryFromStorage_args other) {
+    public int compareTo(getFileDetailsFromStorage_args other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
@@ -209885,12 +211125,12 @@ public class RegistryService {
           return lastComparison;
         }
       }
-      lastComparison = java.lang.Boolean.valueOf(isSetDirPath()).compareTo(other.isSetDirPath());
+      lastComparison = java.lang.Boolean.valueOf(isSetFilePath()).compareTo(other.isSetFilePath());
       if (lastComparison != 0) {
         return lastComparison;
       }
-      if (isSetDirPath()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dirPath, other.dirPath);
+      if (isSetFilePath()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.filePath, other.filePath);
         if (lastComparison != 0) {
           return lastComparison;
         }
@@ -209912,7 +211152,7 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("listDirectoryFromStorage_args(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("getFileDetailsFromStorage_args(");
       boolean first = true;
 
       sb.append("gatewayId:");
@@ -209939,11 +211179,11 @@ public class RegistryService {
       }
       first = false;
       if (!first) sb.append(", ");
-      sb.append("dirPath:");
-      if (this.dirPath == null) {
+      sb.append("filePath:");
+      if (this.filePath == null) {
         sb.append("null");
       } else {
-        sb.append(this.dirPath);
+        sb.append(this.filePath);
       }
       first = false;
       sb.append(")");
@@ -209974,15 +211214,15 @@ public class RegistryService {
       }
     }
 
-    private static class listDirectoryFromStorage_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public listDirectoryFromStorage_argsStandardScheme getScheme() {
-        return new listDirectoryFromStorage_argsStandardScheme();
+    private static class getFileDetailsFromStorage_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getFileDetailsFromStorage_argsStandardScheme getScheme() {
+        return new getFileDetailsFromStorage_argsStandardScheme();
       }
     }
 
-    private static class listDirectoryFromStorage_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<listDirectoryFromStorage_args> {
+    private static class getFileDetailsFromStorage_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<getFileDetailsFromStorage_args> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, listDirectoryFromStorage_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, getFileDetailsFromStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -210016,10 +211256,10 @@ public class RegistryService {
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
-            case 4: // DIR_PATH
+            case 4: // FILE_PATH
               if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-                struct.dirPath = iprot.readString();
-                struct.setDirPathIsSet(true);
+                struct.filePath = iprot.readString();
+                struct.setFilePathIsSet(true);
               } else { 
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
@@ -210035,7 +211275,7 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, listDirectoryFromStorage_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, getFileDetailsFromStorage_args struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
@@ -210054,9 +211294,9 @@ public class RegistryService {
           oprot.writeString(struct.userId);
           oprot.writeFieldEnd();
         }
-        if (struct.dirPath != null) {
-          oprot.writeFieldBegin(DIR_PATH_FIELD_DESC);
-          oprot.writeString(struct.dirPath);
+        if (struct.filePath != null) {
+          oprot.writeFieldBegin(FILE_PATH_FIELD_DESC);
+          oprot.writeString(struct.filePath);
           oprot.writeFieldEnd();
         }
         oprot.writeFieldStop();
@@ -210065,16 +211305,16 @@ public class RegistryService {
 
     }
 
-    private static class listDirectoryFromStorage_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public listDirectoryFromStorage_argsTupleScheme getScheme() {
-        return new listDirectoryFromStorage_argsTupleScheme();
+    private static class getFileDetailsFromStorage_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getFileDetailsFromStorage_argsTupleScheme getScheme() {
+        return new getFileDetailsFromStorage_argsTupleScheme();
       }
     }
 
-    private static class listDirectoryFromStorage_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<listDirectoryFromStorage_args> {
+    private static class getFileDetailsFromStorage_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<getFileDetailsFromStorage_args> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, listDirectoryFromStorage_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, getFileDetailsFromStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         oprot.writeString(struct.gatewayId);
         java.util.BitSet optionals = new java.util.BitSet();
@@ -210084,7 +211324,7 @@ public class RegistryService {
         if (struct.isSetUserId()) {
           optionals.set(1);
         }
-        if (struct.isSetDirPath()) {
+        if (struct.isSetFilePath()) {
           optionals.set(2);
         }
         oprot.writeBitSet(optionals, 3);
@@ -210094,13 +211334,13 @@ public class RegistryService {
         if (struct.isSetUserId()) {
           oprot.writeString(struct.userId);
         }
-        if (struct.isSetDirPath()) {
-          oprot.writeString(struct.dirPath);
+        if (struct.isSetFilePath()) {
+          oprot.writeString(struct.filePath);
         }
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, listDirectoryFromStorage_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, getFileDetailsFromStorage_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         struct.gatewayId = iprot.readString();
         struct.setGatewayIdIsSet(true);
@@ -210114,8 +211354,8 @@ public class RegistryService {
           struct.setUserIdIsSet(true);
         }
         if (incoming.get(2)) {
-          struct.dirPath = iprot.readString();
-          struct.setDirPathIsSet(true);
+          struct.filePath = iprot.readString();
+          struct.setFilePathIsSet(true);
         }
       }
     }
@@ -210125,15 +211365,15 @@ public class RegistryService {
     }
   }
 
-  public static class listDirectoryFromStorage_result implements org.apache.thrift.TBase<listDirectoryFromStorage_result, listDirectoryFromStorage_result._Fields>, java.io.Serializable, Cloneable, Comparable<listDirectoryFromStorage_result>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("listDirectoryFromStorage_result");
+  public static class getFileDetailsFromStorage_result implements org.apache.thrift.TBase<getFileDetailsFromStorage_result, getFileDetailsFromStorage_result._Fields>, java.io.Serializable, Cloneable, Comparable<getFileDetailsFromStorage_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getFileDetailsFromStorage_result");
 
-    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.LIST, (short)0);
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new listDirectoryFromStorage_resultStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new listDirectoryFromStorage_resultTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getFileDetailsFromStorage_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getFileDetailsFromStorage_resultTupleSchemeFactory();
 
-    public java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure> success; // required
+    public org.apache.airavata.model.appcatalog.datamodels.FileStructure success; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -210198,17 +211438,16 @@ public class RegistryService {
     static {
       java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
       tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
-          new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
-              new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.datamodels.FileStructure.class))));
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.datamodels.FileStructure.class)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(listDirectoryFromStorage_result.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getFileDetailsFromStorage_result.class, metaDataMap);
     }
 
-    public listDirectoryFromStorage_result() {
+    public getFileDetailsFromStorage_result() {
     }
 
-    public listDirectoryFromStorage_result(
-      java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure> success)
+    public getFileDetailsFromStorage_result(
+      org.apache.airavata.model.appcatalog.datamodels.FileStructure success)
     {
       this();
       this.success = success;
@@ -210217,18 +211456,14 @@ public class RegistryService {
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public listDirectoryFromStorage_result(listDirectoryFromStorage_result other) {
+    public getFileDetailsFromStorage_result(getFileDetailsFromStorage_result other) {
       if (other.isSetSuccess()) {
-        java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure> __this__success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.datamodels.FileStructure>(other.success.size());
-        for (org.apache.airavata.model.appcatalog.datamodels.FileStructure other_element : other.success) {
-          __this__success.add(new org.apache.airavata.model.appcatalog.datamodels.FileStructure(other_element));
-        }
-        this.success = __this__success;
+        this.success = new org.apache.airavata.model.appcatalog.datamodels.FileStructure(other.success);
       }
     }
 
-    public listDirectoryFromStorage_result deepCopy() {
-      return new listDirectoryFromStorage_result(this);
+    public getFileDetailsFromStorage_result deepCopy() {
+      return new getFileDetailsFromStorage_result(this);
     }
 
     @Override
@@ -210236,26 +211471,11 @@ public class RegistryService {
       this.success = null;
     }
 
-    public int getSuccessSize() {
-      return (this.success == null) ? 0 : this.success.size();
-    }
-
-    public java.util.Iterator<org.apache.airavata.model.appcatalog.datamodels.FileStructure> getSuccessIterator() {
-      return (this.success == null) ? null : this.success.iterator();
-    }
-
-    public void addToSuccess(org.apache.airavata.model.appcatalog.datamodels.FileStructure elem) {
-      if (this.success == null) {
-        this.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.datamodels.FileStructure>();
-      }
-      this.success.add(elem);
-    }
-
-    public java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure> getSuccess() {
+    public org.apache.airavata.model.appcatalog.datamodels.FileStructure getSuccess() {
       return this.success;
     }
 
-    public listDirectoryFromStorage_result setSuccess(java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure> success) {
+    public getFileDetailsFromStorage_result setSuccess(org.apache.airavata.model.appcatalog.datamodels.FileStructure success) {
       this.success = success;
       return this;
     }
@@ -210281,7 +211501,7 @@ public class RegistryService {
         if (value == null) {
           unsetSuccess();
         } else {
-          setSuccess((java.util.List<org.apache.airavata.model.appcatalog.datamodels.FileStructure>)value);
+          setSuccess((org.apache.airavata.model.appcatalog.datamodels.FileStructure)value);
         }
         break;
 
@@ -210314,12 +211534,12 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof listDirectoryFromStorage_result)
-        return this.equals((listDirectoryFromStorage_result)that);
+      if (that instanceof getFileDetailsFromStorage_result)
+        return this.equals((getFileDetailsFromStorage_result)that);
       return false;
     }
 
-    public boolean equals(listDirectoryFromStorage_result that) {
+    public boolean equals(getFileDetailsFromStorage_result that) {
       if (that == null)
         return false;
       if (this == that)
@@ -210349,7 +211569,7 @@ public class RegistryService {
     }
 
     @Override
-    public int compareTo(listDirectoryFromStorage_result other) {
+    public int compareTo(getFileDetailsFromStorage_result other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
@@ -210383,7 +211603,7 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("listDirectoryFromStorage_result(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("getFileDetailsFromStorage_result(");
       boolean first = true;
 
       sb.append("success:");
@@ -210400,6 +211620,9 @@ public class RegistryService {
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
       // check for sub-struct validity
+      if (success != null) {
+        success.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -210418,15 +211641,15 @@ public class RegistryService {
       }
     }
 
-    private static class listDirectoryFromStorage_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public listDirectoryFromStorage_resultStandardScheme getScheme() {
-        return new listDirectoryFromStorage_resultStandardScheme();
+    private static class getFileDetailsFromStorage_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getFileDetailsFromStorage_resultStandardScheme getScheme() {
+        return new getFileDetailsFromStorage_resultStandardScheme();
       }
     }
 
-    private static class listDirectoryFromStorage_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<listDirectoryFromStorage_result> {
+    private static class getFileDetailsFromStorage_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<getFileDetailsFromStorage_result> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, listDirectoryFromStorage_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, getFileDetailsFromStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -210437,19 +211660,9 @@ public class RegistryService {
           }
           switch (schemeField.id) {
             case 0: // SUCCESS
-              if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
-                {
-                  org.apache.thrift.protocol.TList _list482 = iprot.readListBegin();
-                  struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.datamodels.FileStructure>(_list482.size);
-                  org.apache.airavata.model.appcatalog.datamodels.FileStructure _elem483;
-                  for (int _i484 = 0; _i484 < _list482.size; ++_i484)
-                  {
-                    _elem483 = new org.apache.airavata.model.appcatalog.datamodels.FileStructure();
-                    _elem483.read(iprot);
-                    struct.success.add(_elem483);
-                  }
-                  iprot.readListEnd();
-                }
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.success = new org.apache.airavata.model.appcatalog.datamodels.FileStructure();
+                struct.success.read(iprot);
                 struct.setSuccessIsSet(true);
               } else { 
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
@@ -210466,20 +211679,13 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, listDirectoryFromStorage_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, getFileDetailsFromStorage_result struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
         if (struct.success != null) {
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
-          {
-            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-            for (org.apache.airavata.model.appcatalog.datamodels.FileStructure _iter485 : struct.success)
-            {
-              _iter485.write(oprot);
-            }
-            oprot.writeListEnd();
-          }
+          struct.success.write(oprot);
           oprot.writeFieldEnd();
         }
         oprot.writeFieldStop();
@@ -210488,16 +211694,16 @@ public class RegistryService {
 
     }
 
-    private static class listDirectoryFromStorage_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public listDirectoryFromStorage_resultTupleScheme getScheme() {
-        return new listDirectoryFromStorage_resultTupleScheme();
+    private static class getFileDetailsFromStorage_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getFileDetailsFromStorage_resultTupleScheme getScheme() {
+        return new getFileDetailsFromStorage_resultTupleScheme();
       }
     }
 
-    private static class listDirectoryFromStorage_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<listDirectoryFromStorage_result> {
+    private static class getFileDetailsFromStorage_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<getFileDetailsFromStorage_result> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, listDirectoryFromStorage_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, getFileDetailsFromStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         java.util.BitSet optionals = new java.util.BitSet();
         if (struct.isSetSuccess()) {
@@ -210505,32 +211711,17 @@ public class RegistryService {
         }
         oprot.writeBitSet(optionals, 1);
         if (struct.isSetSuccess()) {
-          {
-            oprot.writeI32(struct.success.size());
-            for (org.apache.airavata.model.appcatalog.datamodels.FileStructure _iter486 : struct.success)
-            {
-              _iter486.write(oprot);
-            }
-          }
+          struct.success.write(oprot);
         }
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, listDirectoryFromStorage_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, getFileDetailsFromStorage_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         java.util.BitSet incoming = iprot.readBitSet(1);
         if (incoming.get(0)) {
-          {
-            org.apache.thrift.protocol.TList _list487 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-            struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.datamodels.FileStructure>(_list487.size);
-            org.apache.airavata.model.appcatalog.datamodels.FileStructure _elem488;
-            for (int _i489 = 0; _i489 < _list487.size; ++_i489)
-            {
-              _elem488 = new org.apache.airavata.model.appcatalog.datamodels.FileStructure();
-              _elem488.read(iprot);
-              struct.success.add(_elem488);
-            }
-          }
+          struct.success = new org.apache.airavata.model.appcatalog.datamodels.FileStructure();
+          struct.success.read(iprot);
           struct.setSuccessIsSet(true);
         }
       }
diff --git a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
index 7f7078e..b272371 100644
--- a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
+++ b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
@@ -3680,6 +3680,13 @@ service Airavata {
                             3: airavata_errors.AiravataSystemException ase,
                             4: airavata_errors.AuthorizationException ae)
 
+  data_storage_model.FileStructure getFileDetailsFromStorage(1: required security_model.AuthzToken authzToken,
+                            2: required  string gatewayId, 3: string storageResourceId, 4: string userId, 5: string filePath)  throws (
+                            1: airavata_errors.InvalidRequestException ire,
+                            2: airavata_errors.AiravataClientException ace,
+                            3: airavata_errors.AiravataSystemException ase,
+                            4: airavata_errors.AuthorizationException ae)
+
   list<data_storage_model.FileStructure> listDirectoryFromStorage(1: required security_model.AuthzToken authzToken,
                             2: required  string gatewayId, 3: string storageResourceId, 4: string userId, 5: string dirPath)  throws (
                             1: airavata_errors.InvalidRequestException ire,
diff --git a/thrift-interface-descriptions/component-cpis/registry-api.thrift b/thrift-interface-descriptions/component-cpis/registry-api.thrift
index 9b63dad..8bf2a0b 100644
--- a/thrift-interface-descriptions/component-cpis/registry-api.thrift
+++ b/thrift-interface-descriptions/component-cpis/registry-api.thrift
@@ -2674,6 +2674,7 @@ service RegistryService {
     void uploadFileToStorage(1: required  string gatewayId, 2: string storageResourceId, 3: string userId, 4: binary content, 5: string path, 6: string type)
     data_storage_model.FileStructure downloadFileFromStorage(1: required  string gatewayId, 2: string storageResourceId, 3: string userId, 4: string path)
     list<data_storage_model.FileStructure> listDirectoryFromStorage(1: required  string gatewayId, 2: string storageResourceId, 3: string userId, 4: string dirPath)
+    data_storage_model.FileStructure getFileDetailsFromStorage(1: required  string gatewayId, 2: string storageResourceId, 3: string userId, 4: string filePath)
     void deleteFileFromStorage(1: required  string gatewayId, 2: string storageResourceId, 3: string userId, 4: string path)
     void deleteDirectoryFromStorage(1: required  string gatewayId, 2: string storageResourceId, 3: string userId, 4: string path)
     bool isExistInStorage(1: required  string gatewayId, 2: string storageResourceId, 3: string userId, 4: string path)
diff --git a/thrift-interface-descriptions/data-models/resource-catalog-models/data_storage_model.thrift b/thrift-interface-descriptions/data-models/resource-catalog-models/data_storage_model.thrift
index f0c02f3..98ca9e7 100644
--- a/thrift-interface-descriptions/data-models/resource-catalog-models/data_storage_model.thrift
+++ b/thrift-interface-descriptions/data-models/resource-catalog-models/data_storage_model.thrift
@@ -26,7 +26,7 @@ namespace py airavata.model.appcatalog.datamodels
 struct FileStructure {
     1: required string name;
     2: required string path;
-    3: required string isFile;
+    3: required bool isFile;
     4: required i64 createdDate;
     5: required i64 modifiedDate;
     6: required string owner;


Mime
View raw message