You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by di...@apache.org on 2020/03/11 16:52:35 UTC

[airavata] branch mft-integration updated: Thrift and db models for storing transfer details

This is an automated email from the ASF dual-hosted git repository.

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


The following commit(s) were added to refs/heads/mft-integration by this push:
     new e672eed  Thrift and db models for storing transfer details
e672eed is described below

commit e672eed648340e6e31bb330b882a22b493d85e3e
Author: Dimuthu Wannipurage <di...@gmail.com>
AuthorDate: Wed Mar 11 12:52:20 2020 -0400

    Thrift and db models for storing transfer details
---
 .../lib/airavata/airavata_data_models_types.h      |    1 +
 .../lib/airavata/application_io_models_types.cpp   |   22 +
 .../lib/airavata/application_io_models_types.h     |   12 +-
 .../lib/airavata/group_manager_model_types.cpp     |    8 +-
 .../lib/airavata/group_manager_model_types.h       |    3 +-
 .../API/Sharing/SharingRegistryService.php         |    1 +
 .../lib/Airavata/Model/Application/Io/Types.php    |   25 +
 .../resources/lib/Airavata/Model/Group/Types.php   |    2 +
 .../resources/lib/Airavata/Model/Sharing/Types.php |   24 +
 .../airavata/model/transfer/TransferModel.java     |  580 ++
 .../core/entities/expcatalog/TransferEntity.java   |   76 +
 .../core/entities/expcatalog/TransferEntityPK.java |   71 +
 .../expcatalog/TransferRepository.java             |   58 +
 .../airavata/registry/core/utils/DBConstants.java  |    5 +
 .../registry/core/utils/QueryConstants.java        |    6 +
 .../api/service/handler/RegistryServerHandler.java |   32 +
 .../airavata/registry/api/RegistryService.java     | 9011 +++++++++++++-------
 .../component-cpis/registry-api.thrift             |    9 +
 .../data-models/airavata_data_models.thrift        |    1 +
 .../transfer_model.thrift                          |   30 +
 20 files changed, 6932 insertions(+), 3045 deletions(-)

diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/airavata_data_models_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/airavata_data_models_types.h
index 109269f..2cb82c1 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/airavata_data_models_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/airavata_data_models_types.h
@@ -45,6 +45,7 @@
 #include "process_model_types.h"
 #include "scheduling_model_types.h"
 #include "status_models_types.h"
+#include "transfer_model_types.h"
 #include "data_movement_models_types.h"
 #include "replica_catalog_models_types.h"
 #include "user_profile_model_types.h"
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.cpp
index 98990fa..0b2fb8b 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.cpp
@@ -119,6 +119,11 @@ void InputDataObjectType::__set_isReadOnly(const bool val) {
 __isset.isReadOnly = true;
 }
 
+void InputDataObjectType::__set_overrideFilename(const std::string& val) {
+  this->overrideFilename = val;
+__isset.overrideFilename = true;
+}
+
 uint32_t InputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
@@ -247,6 +252,14 @@ uint32_t InputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot)
           xfer += iprot->skip(ftype);
         }
         break;
+      case 14:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->overrideFilename);
+          this->__isset.overrideFilename = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -330,6 +343,11 @@ uint32_t InputDataObjectType::write(::apache::thrift::protocol::TProtocol* oprot
     xfer += oprot->writeBool(this->isReadOnly);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.overrideFilename) {
+    xfer += oprot->writeFieldBegin("overrideFilename", ::apache::thrift::protocol::T_STRING, 14);
+    xfer += oprot->writeString(this->overrideFilename);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -350,6 +368,7 @@ void swap(InputDataObjectType &a, InputDataObjectType &b) {
   swap(a.dataStaged, b.dataStaged);
   swap(a.storageResourceId, b.storageResourceId);
   swap(a.isReadOnly, b.isReadOnly);
+  swap(a.overrideFilename, b.overrideFilename);
   swap(a.__isset, b.__isset);
 }
 
@@ -367,6 +386,7 @@ InputDataObjectType::InputDataObjectType(const InputDataObjectType& other1) {
   dataStaged = other1.dataStaged;
   storageResourceId = other1.storageResourceId;
   isReadOnly = other1.isReadOnly;
+  overrideFilename = other1.overrideFilename;
   __isset = other1.__isset;
 }
 InputDataObjectType& InputDataObjectType::operator=(const InputDataObjectType& other2) {
@@ -383,6 +403,7 @@ InputDataObjectType& InputDataObjectType::operator=(const InputDataObjectType& o
   dataStaged = other2.dataStaged;
   storageResourceId = other2.storageResourceId;
   isReadOnly = other2.isReadOnly;
+  overrideFilename = other2.overrideFilename;
   __isset = other2.__isset;
   return *this;
 }
@@ -402,6 +423,7 @@ void InputDataObjectType::printTo(std::ostream& out) const {
   out << ", " << "dataStaged="; (__isset.dataStaged ? (out << to_string(dataStaged)) : (out << "<null>"));
   out << ", " << "storageResourceId="; (__isset.storageResourceId ? (out << to_string(storageResourceId)) : (out << "<null>"));
   out << ", " << "isReadOnly="; (__isset.isReadOnly ? (out << to_string(isReadOnly)) : (out << "<null>"));
+  out << ", " << "overrideFilename="; (__isset.overrideFilename ? (out << to_string(overrideFilename)) : (out << "<null>"));
   out << ")";
 }
 
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.h
index fa91377..a7f8f9c 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.h
@@ -57,7 +57,7 @@ class InputDataObjectType;
 class OutputDataObjectType;
 
 typedef struct _InputDataObjectType__isset {
-  _InputDataObjectType__isset() : value(false), type(false), applicationArgument(false), standardInput(false), userFriendlyDescription(false), metaData(false), inputOrder(false), isRequired(false), requiredToAddedToCommandLine(false), dataStaged(false), storageResourceId(false), isReadOnly(false) {}
+  _InputDataObjectType__isset() : value(false), type(false), applicationArgument(false), standardInput(false), userFriendlyDescription(false), metaData(false), inputOrder(false), isRequired(false), requiredToAddedToCommandLine(false), dataStaged(false), storageResourceId(false), isReadOnly(false), overrideFilename(false) {}
   bool value :1;
   bool type :1;
   bool applicationArgument :1;
@@ -70,6 +70,7 @@ typedef struct _InputDataObjectType__isset {
   bool dataStaged :1;
   bool storageResourceId :1;
   bool isReadOnly :1;
+  bool overrideFilename :1;
 } _InputDataObjectType__isset;
 
 class InputDataObjectType : public virtual ::apache::thrift::TBase {
@@ -77,7 +78,7 @@ class InputDataObjectType : public virtual ::apache::thrift::TBase {
 
   InputDataObjectType(const InputDataObjectType&);
   InputDataObjectType& operator=(const InputDataObjectType&);
-  InputDataObjectType() : name(), value(), type((DataType::type)0), applicationArgument(), standardInput(0), userFriendlyDescription(), metaData(), inputOrder(0), isRequired(0), requiredToAddedToCommandLine(0), dataStaged(0), storageResourceId(), isReadOnly(0) {
+  InputDataObjectType() : name(), value(), type((DataType::type)0), applicationArgument(), standardInput(0), userFriendlyDescription(), metaData(), inputOrder(0), isRequired(0), requiredToAddedToCommandLine(0), dataStaged(0), storageResourceId(), isReadOnly(0), overrideFilename() {
   }
 
   virtual ~InputDataObjectType() throw();
@@ -94,6 +95,7 @@ class InputDataObjectType : public virtual ::apache::thrift::TBase {
   bool dataStaged;
   std::string storageResourceId;
   bool isReadOnly;
+  std::string overrideFilename;
 
   _InputDataObjectType__isset __isset;
 
@@ -123,6 +125,8 @@ class InputDataObjectType : public virtual ::apache::thrift::TBase {
 
   void __set_isReadOnly(const bool val);
 
+  void __set_overrideFilename(const std::string& val);
+
   bool operator == (const InputDataObjectType & rhs) const
   {
     if (!(name == rhs.name))
@@ -175,6 +179,10 @@ class InputDataObjectType : public virtual ::apache::thrift::TBase {
       return false;
     else if (__isset.isReadOnly && !(isReadOnly == rhs.isReadOnly))
       return false;
+    if (__isset.overrideFilename != rhs.__isset.overrideFilename)
+      return false;
+    else if (__isset.overrideFilename && !(overrideFilename == rhs.overrideFilename))
+      return false;
     return true;
   }
   bool operator != (const InputDataObjectType &rhs) const {
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/group_manager_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/group_manager_model_types.cpp
index 3f6fdf3..9c551ac 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/group_manager_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/group_manager_model_types.cpp
@@ -53,14 +53,16 @@ const std::map<int, const char*> _ResourceType_VALUES_TO_NAMES(::apache::thrift:
 int _kResourcePermissionTypeValues[] = {
   ResourcePermissionType::WRITE,
   ResourcePermissionType::READ,
-  ResourcePermissionType::OWNER
+  ResourcePermissionType::OWNER,
+  ResourcePermissionType::MANAGE_SHARING
 };
 const char* _kResourcePermissionTypeNames[] = {
   "WRITE",
   "READ",
-  "OWNER"
+  "OWNER",
+  "MANAGE_SHARING"
 };
-const std::map<int, const char*> _ResourcePermissionType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(3, _kResourcePermissionTypeValues, _kResourcePermissionTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+const std::map<int, const char*> _ResourcePermissionType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(4, _kResourcePermissionTypeValues, _kResourcePermissionTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 
 
 GroupModel::~GroupModel() throw() {
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/group_manager_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/group_manager_model_types.h
index 45e468d..f74b698 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/group_manager_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/group_manager_model_types.h
@@ -56,7 +56,8 @@ struct ResourcePermissionType {
   enum type {
     WRITE = 0,
     READ = 1,
-    OWNER = 2
+    OWNER = 2,
+    MANAGE_SHARING = 3
   };
 };
 
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Sharing/SharingRegistryService.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Sharing/SharingRegistryService.php
index 4038013..4b85f3d 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Sharing/SharingRegistryService.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Sharing/SharingRegistryService.php
@@ -62,6 +62,7 @@ interface SharingRegistryServiceIf extends \Airavata\Base\API\BaseAPIIf {
    * <li>description : A short description for the domain</li>
    * <li>createdTime : Will be set by the system</li>
    * <li>updatedTime : Will be set by the system</li>
+   * <li>initialUserGroupId : New users will automatically be added to this group</li>
    * 
    * 
    * @throws \Airavata\Model\Sharing\SharingRegistryException
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Application/Io/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Application/Io/Types.php
index fb4977e..9543c61 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Application/Io/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Application/Io/Types.php
@@ -65,6 +65,8 @@ final class DataType {
  * metaData:
  *   Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
  * 
+ * overrideFilename:
+ *   Rename input file to given value when staging to compute resource.
  */
 class InputDataObjectType {
   static $_TSPEC;
@@ -121,6 +123,10 @@ class InputDataObjectType {
    * @var bool
    */
   public $isReadOnly = null;
+  /**
+   * @var string
+   */
+  public $overrideFilename = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -177,6 +183,10 @@ class InputDataObjectType {
           'var' => 'isReadOnly',
           'type' => TType::BOOL,
           ),
+        14 => array(
+          'var' => 'overrideFilename',
+          'type' => TType::STRING,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -219,6 +229,9 @@ class InputDataObjectType {
       if (isset($vals['isReadOnly'])) {
         $this->isReadOnly = $vals['isReadOnly'];
       }
+      if (isset($vals['overrideFilename'])) {
+        $this->overrideFilename = $vals['overrideFilename'];
+      }
     }
   }
 
@@ -332,6 +345,13 @@ class InputDataObjectType {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 14:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->overrideFilename);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -410,6 +430,11 @@ class InputDataObjectType {
       $xfer += $output->writeBool($this->isReadOnly);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->overrideFilename !== null) {
+      $xfer += $output->writeFieldBegin('overrideFilename', TType::STRING, 14);
+      $xfer += $output->writeString($this->overrideFilename);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Group/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Group/Types.php
index 9e17f8a..f74a97f 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Group/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Group/Types.php
@@ -40,10 +40,12 @@ final class ResourcePermissionType {
   const WRITE = 0;
   const READ = 1;
   const OWNER = 2;
+  const MANAGE_SHARING = 3;
   static public $__names = array(
     0 => 'WRITE',
     1 => 'READ',
     2 => 'OWNER',
+    3 => 'MANAGE_SHARING',
   );
 }
 
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Sharing/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Sharing/Types.php
index 7a74f6d..d5dd2d3 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Sharing/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Sharing/Types.php
@@ -144,6 +144,7 @@ final class SharingType {
  * <li>description : A short description for the domain</li>
  * <li>createdTime : Will be set by the system</li>
  * <li>updatedTime : Will be set by the system</li>
+ * <li>initialUserGroupId : New users will automatically be added to this group</li>
  * 
  */
 class Domain {
@@ -169,6 +170,10 @@ class Domain {
    * @var int
    */
   public $updatedTime = null;
+  /**
+   * @var string
+   */
+  public $initialUserGroupId = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -193,6 +198,10 @@ class Domain {
           'var' => 'updatedTime',
           'type' => TType::I64,
           ),
+        6 => array(
+          'var' => 'initialUserGroupId',
+          'type' => TType::STRING,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -211,6 +220,9 @@ class Domain {
       if (isset($vals['updatedTime'])) {
         $this->updatedTime = $vals['updatedTime'];
       }
+      if (isset($vals['initialUserGroupId'])) {
+        $this->initialUserGroupId = $vals['initialUserGroupId'];
+      }
     }
   }
 
@@ -268,6 +280,13 @@ class Domain {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 6:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->initialUserGroupId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -306,6 +325,11 @@ class Domain {
       $xfer += $output->writeI64($this->updatedTime);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->initialUserGroupId !== null) {
+      $xfer += $output->writeFieldBegin('initialUserGroupId', TType::STRING, 6);
+      $xfer += $output->writeString($this->initialUserGroupId);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/transfer/TransferModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/transfer/TransferModel.java
new file mode 100644
index 0000000..3c15218
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/transfer/TransferModel.java
@@ -0,0 +1,580 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Autogenerated by Thrift Compiler (0.10.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.model.transfer;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
+public class TransferModel implements org.apache.thrift.TBase<TransferModel, TransferModel._Fields>, java.io.Serializable, Cloneable, Comparable<TransferModel> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TransferModel");
+
+  private static final org.apache.thrift.protocol.TField TASK_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("taskId", org.apache.thrift.protocol.TType.STRING, (short)1);
+  private static final org.apache.thrift.protocol.TField TRANSFER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("transferId", org.apache.thrift.protocol.TType.STRING, (short)2);
+  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)3);
+
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new TransferModelStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new TransferModelTupleSchemeFactory();
+
+  private java.lang.String taskId; // required
+  private java.lang.String transferId; // required
+  private 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 {
+    TASK_ID((short)1, "taskId"),
+    TRANSFER_ID((short)2, "transferId"),
+    FILE_PATH((short)3, "filePath");
+
+    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: // TASK_ID
+          return TASK_ID;
+        case 2: // TRANSFER_ID
+          return TRANSFER_ID;
+        case 3: // FILE_PATH
+          return FILE_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.TASK_ID, new org.apache.thrift.meta_data.FieldMetaData("taskId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.TRANSFER_ID, new org.apache.thrift.meta_data.FieldMetaData("transferId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.FILE_PATH, new org.apache.thrift.meta_data.FieldMetaData("filePath", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        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(TransferModel.class, metaDataMap);
+  }
+
+  public TransferModel() {
+  }
+
+  public TransferModel(
+    java.lang.String taskId,
+    java.lang.String transferId,
+    java.lang.String filePath)
+  {
+    this();
+    this.taskId = taskId;
+    this.transferId = transferId;
+    this.filePath = filePath;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public TransferModel(TransferModel other) {
+    if (other.isSetTaskId()) {
+      this.taskId = other.taskId;
+    }
+    if (other.isSetTransferId()) {
+      this.transferId = other.transferId;
+    }
+    if (other.isSetFilePath()) {
+      this.filePath = other.filePath;
+    }
+  }
+
+  public TransferModel deepCopy() {
+    return new TransferModel(this);
+  }
+
+  @Override
+  public void clear() {
+    this.taskId = null;
+    this.transferId = null;
+    this.filePath = null;
+  }
+
+  public java.lang.String getTaskId() {
+    return this.taskId;
+  }
+
+  public void setTaskId(java.lang.String taskId) {
+    this.taskId = taskId;
+  }
+
+  public void unsetTaskId() {
+    this.taskId = null;
+  }
+
+  /** Returns true if field taskId is set (has been assigned a value) and false otherwise */
+  public boolean isSetTaskId() {
+    return this.taskId != null;
+  }
+
+  public void setTaskIdIsSet(boolean value) {
+    if (!value) {
+      this.taskId = null;
+    }
+  }
+
+  public java.lang.String getTransferId() {
+    return this.transferId;
+  }
+
+  public void setTransferId(java.lang.String transferId) {
+    this.transferId = transferId;
+  }
+
+  public void unsetTransferId() {
+    this.transferId = null;
+  }
+
+  /** Returns true if field transferId is set (has been assigned a value) and false otherwise */
+  public boolean isSetTransferId() {
+    return this.transferId != null;
+  }
+
+  public void setTransferIdIsSet(boolean value) {
+    if (!value) {
+      this.transferId = null;
+    }
+  }
+
+  public java.lang.String getFilePath() {
+    return this.filePath;
+  }
+
+  public void setFilePath(java.lang.String filePath) {
+    this.filePath = filePath;
+  }
+
+  public void unsetFilePath() {
+    this.filePath = 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 setFilePathIsSet(boolean value) {
+    if (!value) {
+      this.filePath = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, java.lang.Object value) {
+    switch (field) {
+    case TASK_ID:
+      if (value == null) {
+        unsetTaskId();
+      } else {
+        setTaskId((java.lang.String)value);
+      }
+      break;
+
+    case TRANSFER_ID:
+      if (value == null) {
+        unsetTransferId();
+      } else {
+        setTransferId((java.lang.String)value);
+      }
+      break;
+
+    case FILE_PATH:
+      if (value == null) {
+        unsetFilePath();
+      } else {
+        setFilePath((java.lang.String)value);
+      }
+      break;
+
+    }
+  }
+
+  public java.lang.Object getFieldValue(_Fields field) {
+    switch (field) {
+    case TASK_ID:
+      return getTaskId();
+
+    case TRANSFER_ID:
+      return getTransferId();
+
+    case FILE_PATH:
+      return getFilePath();
+
+    }
+    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 TASK_ID:
+      return isSetTaskId();
+    case TRANSFER_ID:
+      return isSetTransferId();
+    case FILE_PATH:
+      return isSetFilePath();
+    }
+    throw new java.lang.IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(java.lang.Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof TransferModel)
+      return this.equals((TransferModel)that);
+    return false;
+  }
+
+  public boolean equals(TransferModel that) {
+    if (that == null)
+      return false;
+    if (this == that)
+      return true;
+
+    boolean this_present_taskId = true && this.isSetTaskId();
+    boolean that_present_taskId = true && that.isSetTaskId();
+    if (this_present_taskId || that_present_taskId) {
+      if (!(this_present_taskId && that_present_taskId))
+        return false;
+      if (!this.taskId.equals(that.taskId))
+        return false;
+    }
+
+    boolean this_present_transferId = true && this.isSetTransferId();
+    boolean that_present_transferId = true && that.isSetTransferId();
+    if (this_present_transferId || that_present_transferId) {
+      if (!(this_present_transferId && that_present_transferId))
+        return false;
+      if (!this.transferId.equals(that.transferId))
+        return false;
+    }
+
+    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.filePath.equals(that.filePath))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    int hashCode = 1;
+
+    hashCode = hashCode * 8191 + ((isSetTaskId()) ? 131071 : 524287);
+    if (isSetTaskId())
+      hashCode = hashCode * 8191 + taskId.hashCode();
+
+    hashCode = hashCode * 8191 + ((isSetTransferId()) ? 131071 : 524287);
+    if (isSetTransferId())
+      hashCode = hashCode * 8191 + transferId.hashCode();
+
+    hashCode = hashCode * 8191 + ((isSetFilePath()) ? 131071 : 524287);
+    if (isSetFilePath())
+      hashCode = hashCode * 8191 + filePath.hashCode();
+
+    return hashCode;
+  }
+
+  @Override
+  public int compareTo(TransferModel other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = java.lang.Boolean.valueOf(isSetTaskId()).compareTo(other.isSetTaskId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetTaskId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.taskId, other.taskId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = java.lang.Boolean.valueOf(isSetTransferId()).compareTo(other.isSetTransferId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetTransferId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.transferId, other.transferId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = java.lang.Boolean.valueOf(isSetFilePath()).compareTo(other.isSetFilePath());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetFilePath()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.filePath, other.filePath);
+      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("TransferModel(");
+    boolean first = true;
+
+    sb.append("taskId:");
+    if (this.taskId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.taskId);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("transferId:");
+    if (this.transferId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.transferId);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("filePath:");
+    if (this.filePath == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.filePath);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetTaskId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'taskId' is unset! Struct:" + toString());
+    }
+
+    if (!isSetTransferId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'transferId' is unset! Struct:" + toString());
+    }
+
+    if (!isSetFilePath()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'filePath' is unset! 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 TransferModelStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+    public TransferModelStandardScheme getScheme() {
+      return new TransferModelStandardScheme();
+    }
+  }
+
+  private static class TransferModelStandardScheme extends org.apache.thrift.scheme.StandardScheme<TransferModel> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, TransferModel 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: // TASK_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.taskId = iprot.readString();
+              struct.setTaskIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // TRANSFER_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.transferId = iprot.readString();
+              struct.setTransferIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // FILE_PATH
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.filePath = iprot.readString();
+              struct.setFilePathIsSet(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();
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, TransferModel struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.taskId != null) {
+        oprot.writeFieldBegin(TASK_ID_FIELD_DESC);
+        oprot.writeString(struct.taskId);
+        oprot.writeFieldEnd();
+      }
+      if (struct.transferId != null) {
+        oprot.writeFieldBegin(TRANSFER_ID_FIELD_DESC);
+        oprot.writeString(struct.transferId);
+        oprot.writeFieldEnd();
+      }
+      if (struct.filePath != null) {
+        oprot.writeFieldBegin(FILE_PATH_FIELD_DESC);
+        oprot.writeString(struct.filePath);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class TransferModelTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+    public TransferModelTupleScheme getScheme() {
+      return new TransferModelTupleScheme();
+    }
+  }
+
+  private static class TransferModelTupleScheme extends org.apache.thrift.scheme.TupleScheme<TransferModel> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, TransferModel struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+      oprot.writeString(struct.taskId);
+      oprot.writeString(struct.transferId);
+      oprot.writeString(struct.filePath);
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, TransferModel struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+      struct.taskId = iprot.readString();
+      struct.setTaskIdIsSet(true);
+      struct.transferId = iprot.readString();
+      struct.setTransferIdIsSet(true);
+      struct.filePath = iprot.readString();
+      struct.setFilePathIsSet(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();
+  }
+}
+
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TransferEntity.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TransferEntity.java
new file mode 100644
index 0000000..2a5480c
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TransferEntity.java
@@ -0,0 +1,76 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "TRANSFER")
+@IdClass(TransferEntityPK.class)
+public class TransferEntity {
+
+    @Id
+    @Column(name = "TASK_ID")
+    private String taskId;
+
+    @Id
+    @Column(name = "TRANSFER_ID")
+    private String transferId;
+
+    @Column(name = "FILE_PATH")
+    private String filePath;
+
+    @ManyToOne(targetEntity = TaskEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "TASK_ID", referencedColumnName = "TASK_ID")
+    private TaskEntity task;
+
+    public String getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(String taskId) {
+        this.taskId = taskId;
+    }
+
+    public String getTransferId() {
+        return transferId;
+    }
+
+    public void setTransferId(String transferId) {
+        this.transferId = transferId;
+    }
+
+    public String getFilePath() {
+        return filePath;
+    }
+
+    public void setFilePath(String filePath) {
+        this.filePath = filePath;
+    }
+
+    public TaskEntity getTask() {
+        return task;
+    }
+
+    public void setTask(TaskEntity task) {
+        this.task = task;
+    }
+}
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TransferEntityPK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TransferEntityPK.java
new file mode 100644
index 0000000..4fca235
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TransferEntityPK.java
@@ -0,0 +1,71 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+public class TransferEntityPK {
+    private static final long serialVersionUID = 1L;
+
+    private String transferId;
+    private String taskId;
+
+    public TransferEntityPK() {
+    }
+
+    public String getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(String taskId) {
+        this.taskId = taskId;
+    }
+
+    public String getTransferId() {
+        return transferId;
+    }
+
+    public void setTransferId(String transferId) {
+        this.transferId = transferId;
+    }
+
+    public boolean equals(Object other) {
+        if (this == other) {
+            return true;
+        }
+        if (!(other instanceof TaskStatusPK)) {
+            return false;
+        }
+        TransferEntityPK castOther = (TransferEntityPK) other;
+        return
+                this.transferId.equals(castOther.transferId)
+                        && this.taskId.equals(castOther.taskId);
+    }
+
+    public int hashCode() {
+        final int prime = 31;
+        int hash = 17;
+        hash = hash * prime + this.transferId.hashCode();
+        hash = hash * prime + this.taskId.hashCode();
+
+        return hash;
+    }
+}
+
+
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/TransferRepository.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/TransferRepository.java
new file mode 100644
index 0000000..7497fa9
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/TransferRepository.java
@@ -0,0 +1,58 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+ package org.apache.airavata.registry.core.repositories.expcatalog;
+
+import org.apache.airavata.model.transfer.TransferModel;
+import org.apache.airavata.registry.core.RegistryException;
+import org.apache.airavata.registry.core.entities.expcatalog.TransferEntity;
+import org.apache.airavata.registry.core.entities.expcatalog.TransferEntityPK;
+import org.apache.airavata.registry.core.utils.DBConstants;
+import org.apache.airavata.registry.core.utils.QueryConstants;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class TransferRepository extends ExpCatAbstractRepository<TransferModel, TransferEntity, TransferEntityPK>  {
+
+    public TransferRepository() {
+        super(TransferModel.class, TransferEntity.class);
+    }
+
+    public void saveTransfer(TransferModel transferModel) throws RegistryException {
+        create(transferModel);
+    }
+
+    public List<TransferModel> getTransfersForTask(String taskId) throws RegistryException {
+        Map<String, Object> queryParameters = new HashMap<>();
+        queryParameters.put(DBConstants.Transfer.TASK_ID, taskId);
+        List<TransferModel> transfers = select(QueryConstants.GET_TRANSFERS_FOR_TASK_ID, -1, 0, queryParameters);
+        return transfers;
+    }
+
+    public List<TransferModel> getTransfersForTransferId(String transferId) throws RegistryException {
+        Map<String, Object> queryParameters = new HashMap<>();
+        queryParameters.put(DBConstants.Transfer.TRANSFER_ID, transferId);
+        List<TransferModel> transfers = select(QueryConstants.GET_TRANSFERS_FOR_TRANSFER_ID, -1, 0, queryParameters);
+        return transfers;
+    }
+
+}
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/DBConstants.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/DBConstants.java
index b5e887f..06bf320 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/DBConstants.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/DBConstants.java
@@ -180,5 +180,10 @@ public class DBConstants {
         public static final String GATEWAY_ID = "gatewayId";
     }
 
+    public static class Transfer {
+        public static final String TASK_ID = "taskId";
+        public static final String TRANSFER_ID = "transferId";
+    }
+
 
 }
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/QueryConstants.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/QueryConstants.java
index a2c1737..e8a3460 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/QueryConstants.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/QueryConstants.java
@@ -178,4 +178,10 @@ public interface QueryConstants {
 
     String FIND_ALL_PARSERS_FOR_GATEWAY_ID = "SELECT P FROM " + ParserEntity.class.getSimpleName() + " P " +
             "WHERE P.gatewayId = :" + DBConstants.Parser.GATEWAY_ID;
+
+    String GET_TRANSFERS_FOR_TASK_ID = "SELECT T FROM " + TransferEntity.class.getSimpleName() + " T " +
+            "WHERE T.taskId = :" + DBConstants.Transfer.TASK_ID;
+
+    String GET_TRANSFERS_FOR_TRANSFER_ID = "SELECT T FROM " + TransferEntity.class.getSimpleName() + " T " +
+            "WHERE T.transferId = :" + DBConstants.Transfer.TRANSFER_ID;
 }
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 425c9aa..7d5ed1c 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
@@ -80,6 +80,7 @@ import org.apache.airavata.model.status.ProcessStatus;
 import org.apache.airavata.model.status.QueueStatusModel;
 import org.apache.airavata.model.status.TaskStatus;
 import org.apache.airavata.model.task.TaskModel;
+import org.apache.airavata.model.transfer.TransferModel;
 import org.apache.airavata.model.user.UserProfile;
 import org.apache.airavata.model.workspace.Gateway;
 import org.apache.airavata.model.workspace.Notification;
@@ -148,6 +149,7 @@ public class RegistryServerHandler implements RegistryService.Iface {
     private ParsingTemplateRepository parsingTemplateRepository = new ParsingTemplateRepository();
     private UserRepository userRepository = new UserRepository();
     private ComputeResourceRepository computeResourceRepository = new ComputeResourceRepository();
+    private TransferRepository transferRepository = new TransferRepository();
 
     /**
      * Fetch Apache Registry API version
@@ -5058,4 +5060,34 @@ public class RegistryServerHandler implements RegistryService.Iface {
             throw rse;
         }
     }
+
+    @Override
+    public void saveTransfer(TransferModel transferModel) throws RegistryServiceException, TException {
+        try {
+            transferRepository.saveTransfer(transferModel);
+        } catch (Exception e) {
+            logger.error("Error while saving transfer details for task {} and transfer {}",
+                transferModel.getTaskId(), transferModel.getTransferId(), e);
+            throw new RegistryServiceException("Failed to store transfer detail. " + e.getMessage());
+        }
+    }
+
+    @Override
+    public List<TransferModel> getTransfersForTask(String taskId) throws RegistryServiceException, TException {
+        try {
+            return transferRepository.getTransfersForTask(taskId);
+        } catch (Exception e) {
+            logger.error("Error while fetching transfer details for task id {}", taskId, e);
+            throw new RegistryServiceException("Failed to fetch transfers for task id " + taskId + " " + e.getMessage());
+        }
+    }
+
+    @Override
+    public List<TransferModel> getTransfersForTransferId(String transferId) throws RegistryServiceException, TException {
+        try {
+            return transferRepository.getTransfersForTransferId(transferId);
+        } catch (Exception e) {
+            logger.error("Error while fetching transfer details for transfer id {}", transferId, e);
+            throw new RegistryServiceException("Failed to fetch transfers for transfer id " + transferId + " " + e.getMessage());        }
+    }
 }
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 e3b3e64..e67f81f 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,12 @@ public class RegistryService {
 
     public void removeParsingTemplate(java.lang.String templateId, java.lang.String gatewayId) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException;
 
+    public void saveTransfer(org.apache.airavata.model.transfer.TransferModel transferModel) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException;
+
+    public java.util.List<org.apache.airavata.model.transfer.TransferModel> getTransfersForTask(java.lang.String taskId) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException;
+
+    public java.util.List<org.apache.airavata.model.transfer.TransferModel> getTransfersForTransferId(java.lang.String transferId) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException;
+
   }
 
   public interface AsyncIface extends org.apache.airavata.base.api.BaseAPI .AsyncIface {
@@ -3006,6 +3012,12 @@ public class RegistryService {
 
     public void removeParsingTemplate(java.lang.String templateId, java.lang.String gatewayId, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException;
 
+    public void saveTransfer(org.apache.airavata.model.transfer.TransferModel transferModel, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException;
+
+    public void getTransfersForTask(java.lang.String taskId, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.transfer.TransferModel>> resultHandler) throws org.apache.thrift.TException;
+
+    public void getTransfersForTransferId(java.lang.String transferId, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.transfer.TransferModel>> resultHandler) throws org.apache.thrift.TException;
+
   }
 
   public static class Client extends org.apache.airavata.base.api.BaseAPI.Client implements Iface {
@@ -8261,6 +8273,81 @@ public class RegistryService {
       return;
     }
 
+    public void saveTransfer(org.apache.airavata.model.transfer.TransferModel transferModel) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException
+    {
+      send_saveTransfer(transferModel);
+      recv_saveTransfer();
+    }
+
+    public void send_saveTransfer(org.apache.airavata.model.transfer.TransferModel transferModel) throws org.apache.thrift.TException
+    {
+      saveTransfer_args args = new saveTransfer_args();
+      args.setTransferModel(transferModel);
+      sendBase("saveTransfer", args);
+    }
+
+    public void recv_saveTransfer() throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException
+    {
+      saveTransfer_result result = new saveTransfer_result();
+      receiveBase(result, "saveTransfer");
+      if (result.rse != null) {
+        throw result.rse;
+      }
+      return;
+    }
+
+    public java.util.List<org.apache.airavata.model.transfer.TransferModel> getTransfersForTask(java.lang.String taskId) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException
+    {
+      send_getTransfersForTask(taskId);
+      return recv_getTransfersForTask();
+    }
+
+    public void send_getTransfersForTask(java.lang.String taskId) throws org.apache.thrift.TException
+    {
+      getTransfersForTask_args args = new getTransfersForTask_args();
+      args.setTaskId(taskId);
+      sendBase("getTransfersForTask", args);
+    }
+
+    public java.util.List<org.apache.airavata.model.transfer.TransferModel> recv_getTransfersForTask() throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException
+    {
+      getTransfersForTask_result result = new getTransfersForTask_result();
+      receiveBase(result, "getTransfersForTask");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.rse != null) {
+        throw result.rse;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getTransfersForTask failed: unknown result");
+    }
+
+    public java.util.List<org.apache.airavata.model.transfer.TransferModel> getTransfersForTransferId(java.lang.String transferId) throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException
+    {
+      send_getTransfersForTransferId(transferId);
+      return recv_getTransfersForTransferId();
+    }
+
+    public void send_getTransfersForTransferId(java.lang.String transferId) throws org.apache.thrift.TException
+    {
+      getTransfersForTransferId_args args = new getTransfersForTransferId_args();
+      args.setTransferId(transferId);
+      sendBase("getTransfersForTransferId", args);
+    }
+
+    public java.util.List<org.apache.airavata.model.transfer.TransferModel> recv_getTransfersForTransferId() throws org.apache.airavata.registry.api.exception.RegistryServiceException, org.apache.thrift.TException
+    {
+      getTransfersForTransferId_result result = new getTransfersForTransferId_result();
+      receiveBase(result, "getTransfersForTransferId");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.rse != null) {
+        throw result.rse;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getTransfersForTransferId failed: unknown result");
+    }
+
   }
   public static class AsyncClient extends org.apache.airavata.base.api.BaseAPI.AsyncClient implements AsyncIface {
     public static class Factory implements org.apache.thrift.async.TAsyncClientFactory<AsyncClient> {
@@ -15007,6 +15094,102 @@ public class RegistryService {
       }
     }
 
+    public void saveTransfer(org.apache.airavata.model.transfer.TransferModel transferModel, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      saveTransfer_call method_call = new saveTransfer_call(transferModel, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class saveTransfer_call extends org.apache.thrift.async.TAsyncMethodCall<Void> {
+      private org.apache.airavata.model.transfer.TransferModel transferModel;
+      public saveTransfer_call(org.apache.airavata.model.transfer.TransferModel transferModel, org.apache.thrift.async.AsyncMethodCallback<Void> 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.transferModel = transferModel;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("saveTransfer", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        saveTransfer_args args = new saveTransfer_args();
+        args.setTransferModel(transferModel);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public Void getResult() throws org.apache.airavata.registry.api.exception.RegistryServiceException, 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 null;
+      }
+    }
+
+    public void getTransfersForTask(java.lang.String taskId, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.transfer.TransferModel>> resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      getTransfersForTask_call method_call = new getTransfersForTask_call(taskId, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class getTransfersForTask_call extends org.apache.thrift.async.TAsyncMethodCall<java.util.List<org.apache.airavata.model.transfer.TransferModel>> {
+      private java.lang.String taskId;
+      public getTransfersForTask_call(java.lang.String taskId, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.transfer.TransferModel>> 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.taskId = taskId;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getTransfersForTask", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        getTransfersForTask_args args = new getTransfersForTask_args();
+        args.setTaskId(taskId);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public java.util.List<org.apache.airavata.model.transfer.TransferModel> getResult() throws org.apache.airavata.registry.api.exception.RegistryServiceException, 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_getTransfersForTask();
+      }
+    }
+
+    public void getTransfersForTransferId(java.lang.String transferId, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.transfer.TransferModel>> resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      getTransfersForTransferId_call method_call = new getTransfersForTransferId_call(transferId, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class getTransfersForTransferId_call extends org.apache.thrift.async.TAsyncMethodCall<java.util.List<org.apache.airavata.model.transfer.TransferModel>> {
+      private java.lang.String transferId;
+      public getTransfersForTransferId_call(java.lang.String transferId, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.transfer.TransferModel>> 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.transferId = transferId;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getTransfersForTransferId", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        getTransfersForTransferId_args args = new getTransfersForTransferId_args();
+        args.setTransferId(transferId);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public java.util.List<org.apache.airavata.model.transfer.TransferModel> getResult() throws org.apache.airavata.registry.api.exception.RegistryServiceException, 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_getTransfersForTransferId();
+      }
+    }
+
   }
 
   public static class Processor<I extends Iface> extends org.apache.airavata.base.api.BaseAPI.Processor<I> implements org.apache.thrift.TProcessor {
@@ -15216,6 +15399,9 @@ public class RegistryService {
       processMap.put("saveParsingTemplate", new saveParsingTemplate());
       processMap.put("listAllParsingTemplates", new listAllParsingTemplates());
       processMap.put("removeParsingTemplate", new removeParsingTemplate());
+      processMap.put("saveTransfer", new saveTransfer());
+      processMap.put("getTransfersForTask", new getTransfersForTask());
+      processMap.put("getTransfersForTransferId", new getTransfersForTransferId());
       return processMap;
     }
 
@@ -20011,6 +20197,78 @@ public class RegistryService {
       }
     }
 
+    public static class saveTransfer<I extends Iface> extends org.apache.thrift.ProcessFunction<I, saveTransfer_args> {
+      public saveTransfer() {
+        super("saveTransfer");
+      }
+
+      public saveTransfer_args getEmptyArgsInstance() {
+        return new saveTransfer_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public saveTransfer_result getResult(I iface, saveTransfer_args args) throws org.apache.thrift.TException {
+        saveTransfer_result result = new saveTransfer_result();
+        try {
+          iface.saveTransfer(args.transferModel);
+        } catch (org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
+          result.rse = rse;
+        }
+        return result;
+      }
+    }
+
+    public static class getTransfersForTask<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getTransfersForTask_args> {
+      public getTransfersForTask() {
+        super("getTransfersForTask");
+      }
+
+      public getTransfersForTask_args getEmptyArgsInstance() {
+        return new getTransfersForTask_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getTransfersForTask_result getResult(I iface, getTransfersForTask_args args) throws org.apache.thrift.TException {
+        getTransfersForTask_result result = new getTransfersForTask_result();
+        try {
+          result.success = iface.getTransfersForTask(args.taskId);
+        } catch (org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
+          result.rse = rse;
+        }
+        return result;
+      }
+    }
+
+    public static class getTransfersForTransferId<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getTransfersForTransferId_args> {
+      public getTransfersForTransferId() {
+        super("getTransfersForTransferId");
+      }
+
+      public getTransfersForTransferId_args getEmptyArgsInstance() {
+        return new getTransfersForTransferId_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getTransfersForTransferId_result getResult(I iface, getTransfersForTransferId_args args) throws org.apache.thrift.TException {
+        getTransfersForTransferId_result result = new getTransfersForTransferId_result();
+        try {
+          result.success = iface.getTransfersForTransferId(args.transferId);
+        } catch (org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
+          result.rse = rse;
+        }
+        return result;
+      }
+    }
+
   }
 
   public static class AsyncProcessor<I extends AsyncIface> extends org.apache.airavata.base.api.BaseAPI.AsyncProcessor<I> {
@@ -20220,6 +20478,9 @@ public class RegistryService {
       processMap.put("saveParsingTemplate", new saveParsingTemplate());
       processMap.put("listAllParsingTemplates", new listAllParsingTemplates());
       processMap.put("removeParsingTemplate", new removeParsingTemplate());
+      processMap.put("saveTransfer", new saveTransfer());
+      processMap.put("getTransfersForTask", new getTransfersForTask());
+      processMap.put("getTransfersForTransferId", new getTransfersForTransferId());
       return processMap;
     }
 
@@ -33061,479 +33322,218 @@ public class RegistryService {
       }
     }
 
-  }
-
-  public static class isUserExists_args implements org.apache.thrift.TBase<isUserExists_args, isUserExists_args._Fields>, java.io.Serializable, Cloneable, Comparable<isUserExists_args>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("isUserExists_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 USER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("userName", org.apache.thrift.protocol.TType.STRING, (short)2);
-
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new isUserExists_argsStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new isUserExists_argsTupleSchemeFactory();
-
-    public java.lang.String gatewayId; // required
-    public java.lang.String userName; // 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"),
-      USER_NAME((short)2, "userName");
-
-      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: // USER_NAME
-            return USER_NAME;
-          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.USER_NAME, new org.apache.thrift.meta_data.FieldMetaData("userName", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-          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(isUserExists_args.class, metaDataMap);
-    }
-
-    public isUserExists_args() {
-    }
-
-    public isUserExists_args(
-      java.lang.String gatewayId,
-      java.lang.String userName)
-    {
-      this();
-      this.gatewayId = gatewayId;
-      this.userName = userName;
-    }
-
-    /**
-     * Performs a deep copy on <i>other</i>.
-     */
-    public isUserExists_args(isUserExists_args other) {
-      if (other.isSetGatewayId()) {
-        this.gatewayId = other.gatewayId;
-      }
-      if (other.isSetUserName()) {
-        this.userName = other.userName;
-      }
-    }
-
-    public isUserExists_args deepCopy() {
-      return new isUserExists_args(this);
-    }
-
-    @Override
-    public void clear() {
-      this.gatewayId = null;
-      this.userName = null;
-    }
-
-    public java.lang.String getGatewayId() {
-      return this.gatewayId;
-    }
-
-    public isUserExists_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 getUserName() {
-      return this.userName;
-    }
-
-    public isUserExists_args setUserName(java.lang.String userName) {
-      this.userName = userName;
-      return this;
-    }
-
-    public void unsetUserName() {
-      this.userName = null;
-    }
-
-    /** Returns true if field userName is set (has been assigned a value) and false otherwise */
-    public boolean isSetUserName() {
-      return this.userName != null;
-    }
-
-    public void setUserNameIsSet(boolean value) {
-      if (!value) {
-        this.userName = 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 USER_NAME:
-        if (value == null) {
-          unsetUserName();
-        } else {
-          setUserName((java.lang.String)value);
-        }
-        break;
-
+    public static class saveTransfer<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, saveTransfer_args, Void> {
+      public saveTransfer() {
+        super("saveTransfer");
       }
-    }
 
-    public java.lang.Object getFieldValue(_Fields field) {
-      switch (field) {
-      case GATEWAY_ID:
-        return getGatewayId();
-
-      case USER_NAME:
-        return getUserName();
-
-      }
-      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();
+      public saveTransfer_args getEmptyArgsInstance() {
+        return new saveTransfer_args();
       }
 
-      switch (field) {
-      case GATEWAY_ID:
-        return isSetGatewayId();
-      case USER_NAME:
-        return isSetUserName();
+      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) {
+            saveTransfer_result result = new saveTransfer_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;
+            saveTransfer_result result = new saveTransfer_result();
+            if (e instanceof org.apache.airavata.registry.api.exception.RegistryServiceException) {
+              result.rse = (org.apache.airavata.registry.api.exception.RegistryServiceException) e;
+              result.setRseIsSet(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();
+            }
+          }
+        };
       }
-      throw new java.lang.IllegalStateException();
-    }
-
-    @Override
-    public boolean equals(java.lang.Object that) {
-      if (that == null)
-        return false;
-      if (that instanceof isUserExists_args)
-        return this.equals((isUserExists_args)that);
-      return false;
-    }
 
-    public boolean equals(isUserExists_args that) {
-      if (that == null)
+      protected boolean isOneway() {
         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_userName = true && this.isSetUserName();
-      boolean that_present_userName = true && that.isSetUserName();
-      if (this_present_userName || that_present_userName) {
-        if (!(this_present_userName && that_present_userName))
-          return false;
-        if (!this.userName.equals(that.userName))
-          return false;
+      public void start(I iface, saveTransfer_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
+        iface.saveTransfer(args.transferModel,resultHandler);
       }
-
-      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 + ((isSetUserName()) ? 131071 : 524287);
-      if (isSetUserName())
-        hashCode = hashCode * 8191 + userName.hashCode();
-
-      return hashCode;
-    }
-
-    @Override
-    public int compareTo(isUserExists_args other) {
-      if (!getClass().equals(other.getClass())) {
-        return getClass().getName().compareTo(other.getClass().getName());
+    public static class getTransfersForTask<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getTransfersForTask_args, java.util.List<org.apache.airavata.model.transfer.TransferModel>> {
+      public getTransfersForTask() {
+        super("getTransfersForTask");
       }
 
-      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(isSetUserName()).compareTo(other.isSetUserName());
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-      if (isSetUserName()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userName, other.userName);
-        if (lastComparison != 0) {
-          return lastComparison;
-        }
+      public getTransfersForTask_args getEmptyArgsInstance() {
+        return new getTransfersForTask_args();
       }
-      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("isUserExists_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("userName:");
-      if (this.userName == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.userName);
+      public org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.transfer.TransferModel>> 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.transfer.TransferModel>>() { 
+          public void onComplete(java.util.List<org.apache.airavata.model.transfer.TransferModel> o) {
+            getTransfersForTask_result result = new getTransfersForTask_result();
+            result.success = o;
+            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;
+            getTransfersForTask_result result = new getTransfersForTask_result();
+            if (e instanceof org.apache.airavata.registry.api.exception.RegistryServiceException) {
+              result.rse = (org.apache.airavata.registry.api.exception.RegistryServiceException) e;
+              result.setRseIsSet(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();
+            }
+          }
+        };
       }
-      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());
-      }
-      if (userName == null) {
-        throw new org.apache.thrift.protocol.TProtocolException("Required field 'userName' was not present! Struct: " + toString());
+      protected boolean isOneway() {
+        return false;
       }
-      // 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);
+      public void start(I iface, getTransfersForTask_args args, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.transfer.TransferModel>> resultHandler) throws org.apache.thrift.TException {
+        iface.getTransfersForTask(args.taskId,resultHandler);
       }
     }
 
-    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);
+    public static class getTransfersForTransferId<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getTransfersForTransferId_args, java.util.List<org.apache.airavata.model.transfer.TransferModel>> {
+      public getTransfersForTransferId() {
+        super("getTransfersForTransferId");
       }
-    }
 
-    private static class isUserExists_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public isUserExists_argsStandardScheme getScheme() {
-        return new isUserExists_argsStandardScheme();
+      public getTransfersForTransferId_args getEmptyArgsInstance() {
+        return new getTransfersForTransferId_args();
       }
-    }
 
-    private static class isUserExists_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<isUserExists_args> {
-
-      public void read(org.apache.thrift.protocol.TProtocol iprot, isUserExists_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;
+      public org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.transfer.TransferModel>> 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.transfer.TransferModel>>() { 
+          public void onComplete(java.util.List<org.apache.airavata.model.transfer.TransferModel> o) {
+            getTransfersForTransferId_result result = new getTransfersForTransferId_result();
+            result.success = o;
+            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);
+            }
           }
-          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: // USER_NAME
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-                struct.userName = iprot.readString();
-                struct.setUserNameIsSet(true);
-              } else { 
-                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-              }
-              break;
-            default:
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+          public void onError(java.lang.Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TSerializable msg;
+            getTransfersForTransferId_result result = new getTransfersForTransferId_result();
+            if (e instanceof org.apache.airavata.registry.api.exception.RegistryServiceException) {
+              result.rse = (org.apache.airavata.registry.api.exception.RegistryServiceException) e;
+              result.setRseIsSet(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();
+            }
           }
-          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, isUserExists_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.userName != null) {
-          oprot.writeFieldBegin(USER_NAME_FIELD_DESC);
-          oprot.writeString(struct.userName);
-          oprot.writeFieldEnd();
-        }
-        oprot.writeFieldStop();
-        oprot.writeStructEnd();
-      }
-
-    }
-
-    private static class isUserExists_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public isUserExists_argsTupleScheme getScheme() {
-        return new isUserExists_argsTupleScheme();
+        };
       }
-    }
-
-    private static class isUserExists_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<isUserExists_args> {
 
-      @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, isUserExists_args struct) throws org.apache.thrift.TException {
-        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
-        oprot.writeString(struct.gatewayId);
-        oprot.writeString(struct.userName);
+      protected boolean isOneway() {
+        return false;
       }
 
-      @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, isUserExists_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);
-        struct.userName = iprot.readString();
-        struct.setUserNameIsSet(true);
+      public void start(I iface, getTransfersForTransferId_args args, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.transfer.TransferModel>> resultHandler) throws org.apache.thrift.TException {
+        iface.getTransfersForTransferId(args.transferId,resultHandler);
       }
     }
 
-    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 isUserExists_result implements org.apache.thrift.TBase<isUserExists_result, isUserExists_result._Fields>, java.io.Serializable, Cloneable, Comparable<isUserExists_result>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("isUserExists_result");
+  public static class isUserExists_args implements org.apache.thrift.TBase<isUserExists_args, isUserExists_args._Fields>, java.io.Serializable, Cloneable, Comparable<isUserExists_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("isUserExists_args");
 
-    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.BOOL, (short)0);
-    private static final org.apache.thrift.protocol.TField RSE_FIELD_DESC = new org.apache.thrift.protocol.TField("rse", 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)1);
+    private static final org.apache.thrift.protocol.TField USER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("userName", org.apache.thrift.protocol.TType.STRING, (short)2);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new isUserExists_resultStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new isUserExists_resultTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new isUserExists_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new isUserExists_argsTupleSchemeFactory();
 
-    public boolean success; // required
-    public org.apache.airavata.registry.api.exception.RegistryServiceException rse; // required
+    public java.lang.String gatewayId; // required
+    public java.lang.String userName; // 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"),
-      RSE((short)1, "rse");
+      GATEWAY_ID((short)1, "gatewayId"),
+      USER_NAME((short)2, "userName");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -33548,10 +33548,465 @@ public class RegistryService {
        */
       public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
-          case 0: // SUCCESS
-            return SUCCESS;
-          case 1: // RSE
-            return RSE;
+          case 1: // GATEWAY_ID
+            return GATEWAY_ID;
+          case 2: // USER_NAME
+            return USER_NAME;
+          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.USER_NAME, new org.apache.thrift.meta_data.FieldMetaData("userName", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          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(isUserExists_args.class, metaDataMap);
+    }
+
+    public isUserExists_args() {
+    }
+
+    public isUserExists_args(
+      java.lang.String gatewayId,
+      java.lang.String userName)
+    {
+      this();
+      this.gatewayId = gatewayId;
+      this.userName = userName;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public isUserExists_args(isUserExists_args other) {
+      if (other.isSetGatewayId()) {
+        this.gatewayId = other.gatewayId;
+      }
+      if (other.isSetUserName()) {
+        this.userName = other.userName;
+      }
+    }
+
+    public isUserExists_args deepCopy() {
+      return new isUserExists_args(this);
+    }
+
+    @Override
+    public void clear() {
+      this.gatewayId = null;
+      this.userName = null;
+    }
+
+    public java.lang.String getGatewayId() {
+      return this.gatewayId;
+    }
+
+    public isUserExists_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 getUserName() {
+      return this.userName;
+    }
+
+    public isUserExists_args setUserName(java.lang.String userName) {
+      this.userName = userName;
+      return this;
+    }
+
+    public void unsetUserName() {
+      this.userName = null;
+    }
+
+    /** Returns true if field userName is set (has been assigned a value) and false otherwise */
+    public boolean isSetUserName() {
+      return this.userName != null;
+    }
+
+    public void setUserNameIsSet(boolean value) {
+      if (!value) {
+        this.userName = 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 USER_NAME:
+        if (value == null) {
+          unsetUserName();
+        } else {
+          setUserName((java.lang.String)value);
+        }
+        break;
+
+      }
+    }
+
+    public java.lang.Object getFieldValue(_Fields field) {
+      switch (field) {
+      case GATEWAY_ID:
+        return getGatewayId();
+
+      case USER_NAME:
+        return getUserName();
+
+      }
+      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 USER_NAME:
+        return isSetUserName();
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(java.lang.Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof isUserExists_args)
+        return this.equals((isUserExists_args)that);
+      return false;
+    }
+
+    public boolean equals(isUserExists_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_userName = true && this.isSetUserName();
+      boolean that_present_userName = true && that.isSetUserName();
+      if (this_present_userName || that_present_userName) {
+        if (!(this_present_userName && that_present_userName))
+          return false;
+        if (!this.userName.equals(that.userName))
+          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 + ((isSetUserName()) ? 131071 : 524287);
+      if (isSetUserName())
+        hashCode = hashCode * 8191 + userName.hashCode();
+
+      return hashCode;
+    }
+
+    @Override
+    public int compareTo(isUserExists_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(isSetUserName()).compareTo(other.isSetUserName());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetUserName()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userName, other.userName);
+        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("isUserExists_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("userName:");
+      if (this.userName == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.userName);
+      }
+      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());
+      }
+      if (userName == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'userName' 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 isUserExists_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public isUserExists_argsStandardScheme getScheme() {
+        return new isUserExists_argsStandardScheme();
+      }
+    }
+
+    private static class isUserExists_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<isUserExists_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, isUserExists_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: // USER_NAME
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.userName = iprot.readString();
+                struct.setUserNameIsSet(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, isUserExists_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.userName != null) {
+          oprot.writeFieldBegin(USER_NAME_FIELD_DESC);
+          oprot.writeString(struct.userName);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class isUserExists_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public isUserExists_argsTupleScheme getScheme() {
+        return new isUserExists_argsTupleScheme();
+      }
+    }
+
+    private static class isUserExists_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<isUserExists_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, isUserExists_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        oprot.writeString(struct.gatewayId);
+        oprot.writeString(struct.userName);
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, isUserExists_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);
+        struct.userName = iprot.readString();
+        struct.setUserNameIsSet(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 isUserExists_result implements org.apache.thrift.TBase<isUserExists_result, isUserExists_result._Fields>, java.io.Serializable, Cloneable, Comparable<isUserExists_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("isUserExists_result");
+
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.BOOL, (short)0);
+    private static final org.apache.thrift.protocol.TField RSE_FIELD_DESC = new org.apache.thrift.protocol.TField("rse", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new isUserExists_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new isUserExists_resultTupleSchemeFactory();
+
+    public boolean success; // required
+    public org.apache.airavata.registry.api.exception.RegistryServiceException rse; // 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"),
+      RSE((short)1, "rse");
+
+      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: // RSE
+            return RSE;
           default:
             return null;
         }
@@ -199288,14 +199743,2445 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("getGroupComputeResourcePolicyList_args(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("getGroupComputeResourcePolicyList_args(");
+      boolean first = true;
+
+      sb.append("groupResourceProfileId:");
+      if (this.groupResourceProfileId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.groupResourceProfileId);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      if (groupResourceProfileId == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'groupResourceProfileId' 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 getGroupComputeResourcePolicyList_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getGroupComputeResourcePolicyList_argsStandardScheme getScheme() {
+        return new getGroupComputeResourcePolicyList_argsStandardScheme();
+      }
+    }
+
+    private static class getGroupComputeResourcePolicyList_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<getGroupComputeResourcePolicyList_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, getGroupComputeResourcePolicyList_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: // GROUP_RESOURCE_PROFILE_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.groupResourceProfileId = iprot.readString();
+                struct.setGroupResourceProfileIdIsSet(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, getGroupComputeResourcePolicyList_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.groupResourceProfileId != null) {
+          oprot.writeFieldBegin(GROUP_RESOURCE_PROFILE_ID_FIELD_DESC);
+          oprot.writeString(struct.groupResourceProfileId);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class getGroupComputeResourcePolicyList_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getGroupComputeResourcePolicyList_argsTupleScheme getScheme() {
+        return new getGroupComputeResourcePolicyList_argsTupleScheme();
+      }
+    }
+
+    private static class getGroupComputeResourcePolicyList_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<getGroupComputeResourcePolicyList_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, getGroupComputeResourcePolicyList_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        oprot.writeString(struct.groupResourceProfileId);
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, getGroupComputeResourcePolicyList_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        struct.groupResourceProfileId = iprot.readString();
+        struct.setGroupResourceProfileIdIsSet(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 getGroupComputeResourcePolicyList_result implements org.apache.thrift.TBase<getGroupComputeResourcePolicyList_result, getGroupComputeResourcePolicyList_result._Fields>, java.io.Serializable, Cloneable, Comparable<getGroupComputeResourcePolicyList_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getGroupComputeResourcePolicyList_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 RSE_FIELD_DESC = new org.apache.thrift.protocol.TField("rse", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getGroupComputeResourcePolicyList_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getGroupComputeResourcePolicyList_resultTupleSchemeFactory();
+
+    public java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy> success; // required
+    public org.apache.airavata.registry.api.exception.RegistryServiceException rse; // 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"),
+      RSE((short)1, "rse");
+
+      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: // RSE
+            return RSE;
+          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.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.groupresourceprofile.ComputeResourcePolicy.class))));
+      tmpMap.put(_Fields.RSE, new org.apache.thrift.meta_data.FieldMetaData("rse", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.registry.api.exception.RegistryServiceException.class)));
+      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getGroupComputeResourcePolicyList_result.class, metaDataMap);
+    }
+
+    public getGroupComputeResourcePolicyList_result() {
+    }
+
+    public getGroupComputeResourcePolicyList_result(
+      java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy> success,
+      org.apache.airavata.registry.api.exception.RegistryServiceException rse)
+    {
+      this();
+      this.success = success;
+      this.rse = rse;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public getGroupComputeResourcePolicyList_result(getGroupComputeResourcePolicyList_result other) {
+      if (other.isSetSuccess()) {
+        java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy> __this__success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy>(other.success.size());
+        for (org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy other_element : other.success) {
+          __this__success.add(new org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy(other_element));
+        }
+        this.success = __this__success;
+      }
+      if (other.isSetRse()) {
+        this.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException(other.rse);
+      }
+    }
+
+    public getGroupComputeResourcePolicyList_result deepCopy() {
+      return new getGroupComputeResourcePolicyList_result(this);
+    }
+
+    @Override
+    public void clear() {
+      this.success = null;
+      this.rse = null;
+    }
+
+    public int getSuccessSize() {
+      return (this.success == null) ? 0 : this.success.size();
+    }
+
+    public java.util.Iterator<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy> getSuccessIterator() {
+      return (this.success == null) ? null : this.success.iterator();
+    }
+
+    public void addToSuccess(org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy elem) {
+      if (this.success == null) {
+        this.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy>();
+      }
+      this.success.add(elem);
+    }
+
+    public java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy> getSuccess() {
+      return this.success;
+    }
+
+    public getGroupComputeResourcePolicyList_result setSuccess(java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy> 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.registry.api.exception.RegistryServiceException getRse() {
+      return this.rse;
+    }
+
+    public getGroupComputeResourcePolicyList_result setRse(org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
+      this.rse = rse;
+      return this;
+    }
+
+    public void unsetRse() {
+      this.rse = null;
+    }
+
+    /** Returns true if field rse is set (has been assigned a value) and false otherwise */
+    public boolean isSetRse() {
+      return this.rse != null;
+    }
+
+    public void setRseIsSet(boolean value) {
+      if (!value) {
+        this.rse = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, java.lang.Object value) {
+      switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy>)value);
+        }
+        break;
+
+      case RSE:
+        if (value == null) {
+          unsetRse();
+        } else {
+          setRse((org.apache.airavata.registry.api.exception.RegistryServiceException)value);
+        }
+        break;
+
+      }
+    }
+
+    public java.lang.Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SUCCESS:
+        return getSuccess();
+
+      case RSE:
+        return getRse();
+
+      }
+      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 RSE:
+        return isSetRse();
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(java.lang.Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof getGroupComputeResourcePolicyList_result)
+        return this.equals((getGroupComputeResourcePolicyList_result)that);
+      return false;
+    }
+
+    public boolean equals(getGroupComputeResourcePolicyList_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_rse = true && this.isSetRse();
+      boolean that_present_rse = true && that.isSetRse();
+      if (this_present_rse || that_present_rse) {
+        if (!(this_present_rse && that_present_rse))
+          return false;
+        if (!this.rse.equals(that.rse))
+          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 + ((isSetRse()) ? 131071 : 524287);
+      if (isSetRse())
+        hashCode = hashCode * 8191 + rse.hashCode();
+
+      return hashCode;
+    }
+
+    @Override
+    public int compareTo(getGroupComputeResourcePolicyList_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(isSetRse()).compareTo(other.isSetRse());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetRse()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.rse, other.rse);
+        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("getGroupComputeResourcePolicyList_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("rse:");
+      if (this.rse == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.rse);
+      }
+      first = false;
+      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 getGroupComputeResourcePolicyList_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getGroupComputeResourcePolicyList_resultStandardScheme getScheme() {
+        return new getGroupComputeResourcePolicyList_resultStandardScheme();
+      }
+    }
+
+    private static class getGroupComputeResourcePolicyList_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<getGroupComputeResourcePolicyList_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, getGroupComputeResourcePolicyList_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.LIST) {
+                {
+                  org.apache.thrift.protocol.TList _list490 = iprot.readListBegin();
+                  struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy>(_list490.size);
+                  org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy _elem491;
+                  for (int _i492 = 0; _i492 < _list490.size; ++_i492)
+                  {
+                    _elem491 = new org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy();
+                    _elem491.read(iprot);
+                    struct.success.add(_elem491);
+                  }
+                  iprot.readListEnd();
+                }
+                struct.setSuccessIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 1: // RSE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException();
+                struct.rse.read(iprot);
+                struct.setRseIsSet(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, getGroupComputeResourcePolicyList_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.groupresourceprofile.ComputeResourcePolicy _iter493 : struct.success)
+            {
+              _iter493.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+        if (struct.rse != null) {
+          oprot.writeFieldBegin(RSE_FIELD_DESC);
+          struct.rse.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class getGroupComputeResourcePolicyList_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getGroupComputeResourcePolicyList_resultTupleScheme getScheme() {
+        return new getGroupComputeResourcePolicyList_resultTupleScheme();
+      }
+    }
+
+    private static class getGroupComputeResourcePolicyList_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<getGroupComputeResourcePolicyList_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, getGroupComputeResourcePolicyList_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.isSetRse()) {
+          optionals.set(1);
+        }
+        oprot.writeBitSet(optionals, 2);
+        if (struct.isSetSuccess()) {
+          {
+            oprot.writeI32(struct.success.size());
+            for (org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy _iter494 : struct.success)
+            {
+              _iter494.write(oprot);
+            }
+          }
+        }
+        if (struct.isSetRse()) {
+          struct.rse.write(oprot);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, getGroupComputeResourcePolicyList_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(2);
+        if (incoming.get(0)) {
+          {
+            org.apache.thrift.protocol.TList _list495 = 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.groupresourceprofile.ComputeResourcePolicy>(_list495.size);
+            org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy _elem496;
+            for (int _i497 = 0; _i497 < _list495.size; ++_i497)
+            {
+              _elem496 = new org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy();
+              _elem496.read(iprot);
+              struct.success.add(_elem496);
+            }
+          }
+          struct.setSuccessIsSet(true);
+        }
+        if (incoming.get(1)) {
+          struct.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException();
+          struct.rse.read(iprot);
+          struct.setRseIsSet(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 createGatewayGroups_args implements org.apache.thrift.TBase<createGatewayGroups_args, createGatewayGroups_args._Fields>, java.io.Serializable, Cloneable, Comparable<createGatewayGroups_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("createGatewayGroups_args");
+
+    private static final org.apache.thrift.protocol.TField GATEWAY_GROUPS_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayGroups", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new createGatewayGroups_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new createGatewayGroups_argsTupleSchemeFactory();
+
+    public org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups gatewayGroups; // 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_GROUPS((short)1, "gatewayGroups");
+
+      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_GROUPS
+            return GATEWAY_GROUPS;
+          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_GROUPS, new org.apache.thrift.meta_data.FieldMetaData("gatewayGroups", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups.class)));
+      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(createGatewayGroups_args.class, metaDataMap);
+    }
+
+    public createGatewayGroups_args() {
+    }
+
+    public createGatewayGroups_args(
+      org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups gatewayGroups)
+    {
+      this();
+      this.gatewayGroups = gatewayGroups;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public createGatewayGroups_args(createGatewayGroups_args other) {
+      if (other.isSetGatewayGroups()) {
+        this.gatewayGroups = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups(other.gatewayGroups);
+      }
+    }
+
+    public createGatewayGroups_args deepCopy() {
+      return new createGatewayGroups_args(this);
+    }
+
+    @Override
+    public void clear() {
+      this.gatewayGroups = null;
+    }
+
+    public org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups getGatewayGroups() {
+      return this.gatewayGroups;
+    }
+
+    public createGatewayGroups_args setGatewayGroups(org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups gatewayGroups) {
+      this.gatewayGroups = gatewayGroups;
+      return this;
+    }
+
+    public void unsetGatewayGroups() {
+      this.gatewayGroups = null;
+    }
+
+    /** Returns true if field gatewayGroups is set (has been assigned a value) and false otherwise */
+    public boolean isSetGatewayGroups() {
+      return this.gatewayGroups != null;
+    }
+
+    public void setGatewayGroupsIsSet(boolean value) {
+      if (!value) {
+        this.gatewayGroups = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, java.lang.Object value) {
+      switch (field) {
+      case GATEWAY_GROUPS:
+        if (value == null) {
+          unsetGatewayGroups();
+        } else {
+          setGatewayGroups((org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups)value);
+        }
+        break;
+
+      }
+    }
+
+    public java.lang.Object getFieldValue(_Fields field) {
+      switch (field) {
+      case GATEWAY_GROUPS:
+        return getGatewayGroups();
+
+      }
+      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_GROUPS:
+        return isSetGatewayGroups();
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(java.lang.Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof createGatewayGroups_args)
+        return this.equals((createGatewayGroups_args)that);
+      return false;
+    }
+
+    public boolean equals(createGatewayGroups_args that) {
+      if (that == null)
+        return false;
+      if (this == that)
+        return true;
+
+      boolean this_present_gatewayGroups = true && this.isSetGatewayGroups();
+      boolean that_present_gatewayGroups = true && that.isSetGatewayGroups();
+      if (this_present_gatewayGroups || that_present_gatewayGroups) {
+        if (!(this_present_gatewayGroups && that_present_gatewayGroups))
+          return false;
+        if (!this.gatewayGroups.equals(that.gatewayGroups))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      int hashCode = 1;
+
+      hashCode = hashCode * 8191 + ((isSetGatewayGroups()) ? 131071 : 524287);
+      if (isSetGatewayGroups())
+        hashCode = hashCode * 8191 + gatewayGroups.hashCode();
+
+      return hashCode;
+    }
+
+    @Override
+    public int compareTo(createGatewayGroups_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = java.lang.Boolean.valueOf(isSetGatewayGroups()).compareTo(other.isSetGatewayGroups());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetGatewayGroups()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.gatewayGroups, other.gatewayGroups);
+        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("createGatewayGroups_args(");
+      boolean first = true;
+
+      sb.append("gatewayGroups:");
+      if (this.gatewayGroups == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.gatewayGroups);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      if (gatewayGroups == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'gatewayGroups' was not present! Struct: " + toString());
+      }
+      // check for sub-struct validity
+      if (gatewayGroups != null) {
+        gatewayGroups.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 createGatewayGroups_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public createGatewayGroups_argsStandardScheme getScheme() {
+        return new createGatewayGroups_argsStandardScheme();
+      }
+    }
+
+    private static class createGatewayGroups_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<createGatewayGroups_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, createGatewayGroups_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_GROUPS
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.gatewayGroups = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups();
+                struct.gatewayGroups.read(iprot);
+                struct.setGatewayGroupsIsSet(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, createGatewayGroups_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.gatewayGroups != null) {
+          oprot.writeFieldBegin(GATEWAY_GROUPS_FIELD_DESC);
+          struct.gatewayGroups.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class createGatewayGroups_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public createGatewayGroups_argsTupleScheme getScheme() {
+        return new createGatewayGroups_argsTupleScheme();
+      }
+    }
+
+    private static class createGatewayGroups_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<createGatewayGroups_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, createGatewayGroups_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        struct.gatewayGroups.write(oprot);
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, createGatewayGroups_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        struct.gatewayGroups = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups();
+        struct.gatewayGroups.read(iprot);
+        struct.setGatewayGroupsIsSet(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 createGatewayGroups_result implements org.apache.thrift.TBase<createGatewayGroups_result, createGatewayGroups_result._Fields>, java.io.Serializable, Cloneable, Comparable<createGatewayGroups_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("createGatewayGroups_result");
+
+    private static final org.apache.thrift.protocol.TField RSE_FIELD_DESC = new org.apache.thrift.protocol.TField("rse", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+    private static final org.apache.thrift.protocol.TField DEE_FIELD_DESC = new org.apache.thrift.protocol.TField("dee", org.apache.thrift.protocol.TType.STRUCT, (short)2);
+
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new createGatewayGroups_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new createGatewayGroups_resultTupleSchemeFactory();
+
+    public org.apache.airavata.registry.api.exception.RegistryServiceException rse; // required
+    public org.apache.airavata.model.error.DuplicateEntryException dee; // 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 {
+      RSE((short)1, "rse"),
+      DEE((short)2, "dee");
+
+      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: // RSE
+            return RSE;
+          case 2: // DEE
+            return DEE;
+          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.RSE, new org.apache.thrift.meta_data.FieldMetaData("rse", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.registry.api.exception.RegistryServiceException.class)));
+      tmpMap.put(_Fields.DEE, new org.apache.thrift.meta_data.FieldMetaData("dee", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.error.DuplicateEntryException.class)));
+      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(createGatewayGroups_result.class, metaDataMap);
+    }
+
+    public createGatewayGroups_result() {
+    }
+
+    public createGatewayGroups_result(
+      org.apache.airavata.registry.api.exception.RegistryServiceException rse,
+      org.apache.airavata.model.error.DuplicateEntryException dee)
+    {
+      this();
+      this.rse = rse;
+      this.dee = dee;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public createGatewayGroups_result(createGatewayGroups_result other) {
+      if (other.isSetRse()) {
+        this.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException(other.rse);
+      }
+      if (other.isSetDee()) {
+        this.dee = new org.apache.airavata.model.error.DuplicateEntryException(other.dee);
+      }
+    }
+
+    public createGatewayGroups_result deepCopy() {
+      return new createGatewayGroups_result(this);
+    }
+
+    @Override
+    public void clear() {
+      this.rse = null;
+      this.dee = null;
+    }
+
+    public org.apache.airavata.registry.api.exception.RegistryServiceException getRse() {
+      return this.rse;
+    }
+
+    public createGatewayGroups_result setRse(org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
+      this.rse = rse;
+      return this;
+    }
+
+    public void unsetRse() {
+      this.rse = null;
+    }
+
+    /** Returns true if field rse is set (has been assigned a value) and false otherwise */
+    public boolean isSetRse() {
+      return this.rse != null;
+    }
+
+    public void setRseIsSet(boolean value) {
+      if (!value) {
+        this.rse = null;
+      }
+    }
+
+    public org.apache.airavata.model.error.DuplicateEntryException getDee() {
+      return this.dee;
+    }
+
+    public createGatewayGroups_result setDee(org.apache.airavata.model.error.DuplicateEntryException dee) {
+      this.dee = dee;
+      return this;
+    }
+
+    public void unsetDee() {
+      this.dee = null;
+    }
+
+    /** Returns true if field dee is set (has been assigned a value) and false otherwise */
+    public boolean isSetDee() {
+      return this.dee != null;
+    }
+
+    public void setDeeIsSet(boolean value) {
+      if (!value) {
+        this.dee = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, java.lang.Object value) {
+      switch (field) {
+      case RSE:
+        if (value == null) {
+          unsetRse();
+        } else {
+          setRse((org.apache.airavata.registry.api.exception.RegistryServiceException)value);
+        }
+        break;
+
+      case DEE:
+        if (value == null) {
+          unsetDee();
+        } else {
+          setDee((org.apache.airavata.model.error.DuplicateEntryException)value);
+        }
+        break;
+
+      }
+    }
+
+    public java.lang.Object getFieldValue(_Fields field) {
+      switch (field) {
+      case RSE:
+        return getRse();
+
+      case DEE:
+        return getDee();
+
+      }
+      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 RSE:
+        return isSetRse();
+      case DEE:
+        return isSetDee();
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(java.lang.Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof createGatewayGroups_result)
+        return this.equals((createGatewayGroups_result)that);
+      return false;
+    }
+
+    public boolean equals(createGatewayGroups_result that) {
+      if (that == null)
+        return false;
+      if (this == that)
+        return true;
+
+      boolean this_present_rse = true && this.isSetRse();
+      boolean that_present_rse = true && that.isSetRse();
+      if (this_present_rse || that_present_rse) {
+        if (!(this_present_rse && that_present_rse))
+          return false;
+        if (!this.rse.equals(that.rse))
+          return false;
+      }
+
+      boolean this_present_dee = true && this.isSetDee();
+      boolean that_present_dee = true && that.isSetDee();
+      if (this_present_dee || that_present_dee) {
+        if (!(this_present_dee && that_present_dee))
+          return false;
+        if (!this.dee.equals(that.dee))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      int hashCode = 1;
+
+      hashCode = hashCode * 8191 + ((isSetRse()) ? 131071 : 524287);
+      if (isSetRse())
+        hashCode = hashCode * 8191 + rse.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetDee()) ? 131071 : 524287);
+      if (isSetDee())
+        hashCode = hashCode * 8191 + dee.hashCode();
+
+      return hashCode;
+    }
+
+    @Override
+    public int compareTo(createGatewayGroups_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = java.lang.Boolean.valueOf(isSetRse()).compareTo(other.isSetRse());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetRse()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.rse, other.rse);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetDee()).compareTo(other.isSetDee());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetDee()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dee, other.dee);
+        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("createGatewayGroups_result(");
+      boolean first = true;
+
+      sb.append("rse:");
+      if (this.rse == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.rse);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("dee:");
+      if (this.dee == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.dee);
+      }
+      first = false;
+      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 createGatewayGroups_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public createGatewayGroups_resultStandardScheme getScheme() {
+        return new createGatewayGroups_resultStandardScheme();
+      }
+    }
+
+    private static class createGatewayGroups_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<createGatewayGroups_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, createGatewayGroups_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 1: // RSE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException();
+                struct.rse.read(iprot);
+                struct.setRseIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // DEE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.dee = new org.apache.airavata.model.error.DuplicateEntryException();
+                struct.dee.read(iprot);
+                struct.setDeeIsSet(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, createGatewayGroups_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.rse != null) {
+          oprot.writeFieldBegin(RSE_FIELD_DESC);
+          struct.rse.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        if (struct.dee != null) {
+          oprot.writeFieldBegin(DEE_FIELD_DESC);
+          struct.dee.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class createGatewayGroups_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public createGatewayGroups_resultTupleScheme getScheme() {
+        return new createGatewayGroups_resultTupleScheme();
+      }
+    }
+
+    private static class createGatewayGroups_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<createGatewayGroups_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, createGatewayGroups_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.isSetRse()) {
+          optionals.set(0);
+        }
+        if (struct.isSetDee()) {
+          optionals.set(1);
+        }
+        oprot.writeBitSet(optionals, 2);
+        if (struct.isSetRse()) {
+          struct.rse.write(oprot);
+        }
+        if (struct.isSetDee()) {
+          struct.dee.write(oprot);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, createGatewayGroups_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(2);
+        if (incoming.get(0)) {
+          struct.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException();
+          struct.rse.read(iprot);
+          struct.setRseIsSet(true);
+        }
+        if (incoming.get(1)) {
+          struct.dee = new org.apache.airavata.model.error.DuplicateEntryException();
+          struct.dee.read(iprot);
+          struct.setDeeIsSet(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 updateGatewayGroups_args implements org.apache.thrift.TBase<updateGatewayGroups_args, updateGatewayGroups_args._Fields>, java.io.Serializable, Cloneable, Comparable<updateGatewayGroups_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("updateGatewayGroups_args");
+
+    private static final org.apache.thrift.protocol.TField GATEWAY_GROUPS_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayGroups", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new updateGatewayGroups_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new updateGatewayGroups_argsTupleSchemeFactory();
+
+    public org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups gatewayGroups; // 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_GROUPS((short)1, "gatewayGroups");
+
+      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_GROUPS
+            return GATEWAY_GROUPS;
+          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_GROUPS, new org.apache.thrift.meta_data.FieldMetaData("gatewayGroups", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups.class)));
+      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(updateGatewayGroups_args.class, metaDataMap);
+    }
+
+    public updateGatewayGroups_args() {
+    }
+
+    public updateGatewayGroups_args(
+      org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups gatewayGroups)
+    {
+      this();
+      this.gatewayGroups = gatewayGroups;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public updateGatewayGroups_args(updateGatewayGroups_args other) {
+      if (other.isSetGatewayGroups()) {
+        this.gatewayGroups = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups(other.gatewayGroups);
+      }
+    }
+
+    public updateGatewayGroups_args deepCopy() {
+      return new updateGatewayGroups_args(this);
+    }
+
+    @Override
+    public void clear() {
+      this.gatewayGroups = null;
+    }
+
+    public org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups getGatewayGroups() {
+      return this.gatewayGroups;
+    }
+
+    public updateGatewayGroups_args setGatewayGroups(org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups gatewayGroups) {
+      this.gatewayGroups = gatewayGroups;
+      return this;
+    }
+
+    public void unsetGatewayGroups() {
+      this.gatewayGroups = null;
+    }
+
+    /** Returns true if field gatewayGroups is set (has been assigned a value) and false otherwise */
+    public boolean isSetGatewayGroups() {
+      return this.gatewayGroups != null;
+    }
+
+    public void setGatewayGroupsIsSet(boolean value) {
+      if (!value) {
+        this.gatewayGroups = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, java.lang.Object value) {
+      switch (field) {
+      case GATEWAY_GROUPS:
+        if (value == null) {
+          unsetGatewayGroups();
+        } else {
+          setGatewayGroups((org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups)value);
+        }
+        break;
+
+      }
+    }
+
+    public java.lang.Object getFieldValue(_Fields field) {
+      switch (field) {
+      case GATEWAY_GROUPS:
+        return getGatewayGroups();
+
+      }
+      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_GROUPS:
+        return isSetGatewayGroups();
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(java.lang.Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof updateGatewayGroups_args)
+        return this.equals((updateGatewayGroups_args)that);
+      return false;
+    }
+
+    public boolean equals(updateGatewayGroups_args that) {
+      if (that == null)
+        return false;
+      if (this == that)
+        return true;
+
+      boolean this_present_gatewayGroups = true && this.isSetGatewayGroups();
+      boolean that_present_gatewayGroups = true && that.isSetGatewayGroups();
+      if (this_present_gatewayGroups || that_present_gatewayGroups) {
+        if (!(this_present_gatewayGroups && that_present_gatewayGroups))
+          return false;
+        if (!this.gatewayGroups.equals(that.gatewayGroups))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      int hashCode = 1;
+
+      hashCode = hashCode * 8191 + ((isSetGatewayGroups()) ? 131071 : 524287);
+      if (isSetGatewayGroups())
+        hashCode = hashCode * 8191 + gatewayGroups.hashCode();
+
+      return hashCode;
+    }
+
+    @Override
+    public int compareTo(updateGatewayGroups_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = java.lang.Boolean.valueOf(isSetGatewayGroups()).compareTo(other.isSetGatewayGroups());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetGatewayGroups()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.gatewayGroups, other.gatewayGroups);
+        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("updateGatewayGroups_args(");
+      boolean first = true;
+
+      sb.append("gatewayGroups:");
+      if (this.gatewayGroups == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.gatewayGroups);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      if (gatewayGroups == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'gatewayGroups' was not present! Struct: " + toString());
+      }
+      // check for sub-struct validity
+      if (gatewayGroups != null) {
+        gatewayGroups.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 updateGatewayGroups_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public updateGatewayGroups_argsStandardScheme getScheme() {
+        return new updateGatewayGroups_argsStandardScheme();
+      }
+    }
+
+    private static class updateGatewayGroups_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<updateGatewayGroups_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, updateGatewayGroups_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_GROUPS
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.gatewayGroups = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups();
+                struct.gatewayGroups.read(iprot);
+                struct.setGatewayGroupsIsSet(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, updateGatewayGroups_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.gatewayGroups != null) {
+          oprot.writeFieldBegin(GATEWAY_GROUPS_FIELD_DESC);
+          struct.gatewayGroups.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class updateGatewayGroups_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public updateGatewayGroups_argsTupleScheme getScheme() {
+        return new updateGatewayGroups_argsTupleScheme();
+      }
+    }
+
+    private static class updateGatewayGroups_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<updateGatewayGroups_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, updateGatewayGroups_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        struct.gatewayGroups.write(oprot);
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, updateGatewayGroups_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        struct.gatewayGroups = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups();
+        struct.gatewayGroups.read(iprot);
+        struct.setGatewayGroupsIsSet(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 updateGatewayGroups_result implements org.apache.thrift.TBase<updateGatewayGroups_result, updateGatewayGroups_result._Fields>, java.io.Serializable, Cloneable, Comparable<updateGatewayGroups_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("updateGatewayGroups_result");
+
+    private static final org.apache.thrift.protocol.TField RSE_FIELD_DESC = new org.apache.thrift.protocol.TField("rse", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new updateGatewayGroups_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new updateGatewayGroups_resultTupleSchemeFactory();
+
+    public org.apache.airavata.registry.api.exception.RegistryServiceException rse; // 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 {
+      RSE((short)1, "rse");
+
+      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: // RSE
+            return RSE;
+          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.RSE, new org.apache.thrift.meta_data.FieldMetaData("rse", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.registry.api.exception.RegistryServiceException.class)));
+      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(updateGatewayGroups_result.class, metaDataMap);
+    }
+
+    public updateGatewayGroups_result() {
+    }
+
+    public updateGatewayGroups_result(
+      org.apache.airavata.registry.api.exception.RegistryServiceException rse)
+    {
+      this();
+      this.rse = rse;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public updateGatewayGroups_result(updateGatewayGroups_result other) {
+      if (other.isSetRse()) {
+        this.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException(other.rse);
+      }
+    }
+
+    public updateGatewayGroups_result deepCopy() {
+      return new updateGatewayGroups_result(this);
+    }
+
+    @Override
+    public void clear() {
+      this.rse = null;
+    }
+
+    public org.apache.airavata.registry.api.exception.RegistryServiceException getRse() {
+      return this.rse;
+    }
+
+    public updateGatewayGroups_result setRse(org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
+      this.rse = rse;
+      return this;
+    }
+
+    public void unsetRse() {
+      this.rse = null;
+    }
+
+    /** Returns true if field rse is set (has been assigned a value) and false otherwise */
+    public boolean isSetRse() {
+      return this.rse != null;
+    }
+
+    public void setRseIsSet(boolean value) {
+      if (!value) {
+        this.rse = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, java.lang.Object value) {
+      switch (field) {
+      case RSE:
+        if (value == null) {
+          unsetRse();
+        } else {
+          setRse((org.apache.airavata.registry.api.exception.RegistryServiceException)value);
+        }
+        break;
+
+      }
+    }
+
+    public java.lang.Object getFieldValue(_Fields field) {
+      switch (field) {
+      case RSE:
+        return getRse();
+
+      }
+      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 RSE:
+        return isSetRse();
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(java.lang.Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof updateGatewayGroups_result)
+        return this.equals((updateGatewayGroups_result)that);
+      return false;
+    }
+
+    public boolean equals(updateGatewayGroups_result that) {
+      if (that == null)
+        return false;
+      if (this == that)
+        return true;
+
+      boolean this_present_rse = true && this.isSetRse();
+      boolean that_present_rse = true && that.isSetRse();
+      if (this_present_rse || that_present_rse) {
+        if (!(this_present_rse && that_present_rse))
+          return false;
+        if (!this.rse.equals(that.rse))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      int hashCode = 1;
+
+      hashCode = hashCode * 8191 + ((isSetRse()) ? 131071 : 524287);
+      if (isSetRse())
+        hashCode = hashCode * 8191 + rse.hashCode();
+
+      return hashCode;
+    }
+
+    @Override
+    public int compareTo(updateGatewayGroups_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = java.lang.Boolean.valueOf(isSetRse()).compareTo(other.isSetRse());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetRse()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.rse, other.rse);
+        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("updateGatewayGroups_result(");
+      boolean first = true;
+
+      sb.append("rse:");
+      if (this.rse == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.rse);
+      }
+      first = false;
+      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 updateGatewayGroups_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public updateGatewayGroups_resultStandardScheme getScheme() {
+        return new updateGatewayGroups_resultStandardScheme();
+      }
+    }
+
+    private static class updateGatewayGroups_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<updateGatewayGroups_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, updateGatewayGroups_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 1: // RSE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException();
+                struct.rse.read(iprot);
+                struct.setRseIsSet(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, updateGatewayGroups_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.rse != null) {
+          oprot.writeFieldBegin(RSE_FIELD_DESC);
+          struct.rse.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class updateGatewayGroups_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public updateGatewayGroups_resultTupleScheme getScheme() {
+        return new updateGatewayGroups_resultTupleScheme();
+      }
+    }
+
+    private static class updateGatewayGroups_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<updateGatewayGroups_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, updateGatewayGroups_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.isSetRse()) {
+          optionals.set(0);
+        }
+        oprot.writeBitSet(optionals, 1);
+        if (struct.isSetRse()) {
+          struct.rse.write(oprot);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, updateGatewayGroups_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.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException();
+          struct.rse.read(iprot);
+          struct.setRseIsSet(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 isGatewayGroupsExists_args implements org.apache.thrift.TBase<isGatewayGroupsExists_args, isGatewayGroupsExists_args._Fields>, java.io.Serializable, Cloneable, Comparable<isGatewayGroupsExists_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("isGatewayGroupsExists_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.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new isGatewayGroupsExists_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new isGatewayGroupsExists_argsTupleSchemeFactory();
+
+    public java.lang.String gatewayId; // 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");
+
+      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;
+          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)));
+      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(isGatewayGroupsExists_args.class, metaDataMap);
+    }
+
+    public isGatewayGroupsExists_args() {
+    }
+
+    public isGatewayGroupsExists_args(
+      java.lang.String gatewayId)
+    {
+      this();
+      this.gatewayId = gatewayId;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public isGatewayGroupsExists_args(isGatewayGroupsExists_args other) {
+      if (other.isSetGatewayId()) {
+        this.gatewayId = other.gatewayId;
+      }
+    }
+
+    public isGatewayGroupsExists_args deepCopy() {
+      return new isGatewayGroupsExists_args(this);
+    }
+
+    @Override
+    public void clear() {
+      this.gatewayId = null;
+    }
+
+    public java.lang.String getGatewayId() {
+      return this.gatewayId;
+    }
+
+    public isGatewayGroupsExists_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 void setFieldValue(_Fields field, java.lang.Object value) {
+      switch (field) {
+      case GATEWAY_ID:
+        if (value == null) {
+          unsetGatewayId();
+        } else {
+          setGatewayId((java.lang.String)value);
+        }
+        break;
+
+      }
+    }
+
+    public java.lang.Object getFieldValue(_Fields field) {
+      switch (field) {
+      case GATEWAY_ID:
+        return getGatewayId();
+
+      }
+      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();
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(java.lang.Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof isGatewayGroupsExists_args)
+        return this.equals((isGatewayGroupsExists_args)that);
+      return false;
+    }
+
+    public boolean equals(isGatewayGroupsExists_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;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      int hashCode = 1;
+
+      hashCode = hashCode * 8191 + ((isSetGatewayId()) ? 131071 : 524287);
+      if (isSetGatewayId())
+        hashCode = hashCode * 8191 + gatewayId.hashCode();
+
+      return hashCode;
+    }
+
+    @Override
+    public int compareTo(isGatewayGroupsExists_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;
+        }
+      }
+      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("isGatewayGroupsExists_args(");
       boolean first = true;
 
-      sb.append("groupResourceProfileId:");
-      if (this.groupResourceProfileId == null) {
+      sb.append("gatewayId:");
+      if (this.gatewayId == null) {
         sb.append("null");
       } else {
-        sb.append(this.groupResourceProfileId);
+        sb.append(this.gatewayId);
       }
       first = false;
       sb.append(")");
@@ -199304,8 +202190,8 @@ public class RegistryService {
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
-      if (groupResourceProfileId == null) {
-        throw new org.apache.thrift.protocol.TProtocolException("Required field 'groupResourceProfileId' 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
     }
@@ -199326,15 +202212,15 @@ public class RegistryService {
       }
     }
 
-    private static class getGroupComputeResourcePolicyList_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public getGroupComputeResourcePolicyList_argsStandardScheme getScheme() {
-        return new getGroupComputeResourcePolicyList_argsStandardScheme();
+    private static class isGatewayGroupsExists_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public isGatewayGroupsExists_argsStandardScheme getScheme() {
+        return new isGatewayGroupsExists_argsStandardScheme();
       }
     }
 
-    private static class getGroupComputeResourcePolicyList_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<getGroupComputeResourcePolicyList_args> {
+    private static class isGatewayGroupsExists_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<isGatewayGroupsExists_args> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, getGroupComputeResourcePolicyList_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, isGatewayGroupsExists_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -199344,10 +202230,10 @@ public class RegistryService {
             break;
           }
           switch (schemeField.id) {
-            case 1: // GROUP_RESOURCE_PROFILE_ID
+            case 1: // GATEWAY_ID
               if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-                struct.groupResourceProfileId = iprot.readString();
-                struct.setGroupResourceProfileIdIsSet(true);
+                struct.gatewayId = iprot.readString();
+                struct.setGatewayIdIsSet(true);
               } else { 
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
@@ -199363,13 +202249,13 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, getGroupComputeResourcePolicyList_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, isGatewayGroupsExists_args struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
-        if (struct.groupResourceProfileId != null) {
-          oprot.writeFieldBegin(GROUP_RESOURCE_PROFILE_ID_FIELD_DESC);
-          oprot.writeString(struct.groupResourceProfileId);
+        if (struct.gatewayId != null) {
+          oprot.writeFieldBegin(GATEWAY_ID_FIELD_DESC);
+          oprot.writeString(struct.gatewayId);
           oprot.writeFieldEnd();
         }
         oprot.writeFieldStop();
@@ -199378,25 +202264,25 @@ public class RegistryService {
 
     }
 
-    private static class getGroupComputeResourcePolicyList_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public getGroupComputeResourcePolicyList_argsTupleScheme getScheme() {
-        return new getGroupComputeResourcePolicyList_argsTupleScheme();
+    private static class isGatewayGroupsExists_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public isGatewayGroupsExists_argsTupleScheme getScheme() {
+        return new isGatewayGroupsExists_argsTupleScheme();
       }
     }
 
-    private static class getGroupComputeResourcePolicyList_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<getGroupComputeResourcePolicyList_args> {
+    private static class isGatewayGroupsExists_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<isGatewayGroupsExists_args> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, getGroupComputeResourcePolicyList_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, isGatewayGroupsExists_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
-        oprot.writeString(struct.groupResourceProfileId);
+        oprot.writeString(struct.gatewayId);
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, getGroupComputeResourcePolicyList_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, isGatewayGroupsExists_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
-        struct.groupResourceProfileId = iprot.readString();
-        struct.setGroupResourceProfileIdIsSet(true);
+        struct.gatewayId = iprot.readString();
+        struct.setGatewayIdIsSet(true);
       }
     }
 
@@ -199405,16 +202291,16 @@ public class RegistryService {
     }
   }
 
-  public static class getGroupComputeResourcePolicyList_result implements org.apache.thrift.TBase<getGroupComputeResourcePolicyList_result, getGroupComputeResourcePolicyList_result._Fields>, java.io.Serializable, Cloneable, Comparable<getGroupComputeResourcePolicyList_result>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getGroupComputeResourcePolicyList_result");
+  public static class isGatewayGroupsExists_result implements org.apache.thrift.TBase<isGatewayGroupsExists_result, isGatewayGroupsExists_result._Fields>, java.io.Serializable, Cloneable, Comparable<isGatewayGroupsExists_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("isGatewayGroupsExists_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.BOOL, (short)0);
     private static final org.apache.thrift.protocol.TField RSE_FIELD_DESC = new org.apache.thrift.protocol.TField("rse", org.apache.thrift.protocol.TType.STRUCT, (short)1);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getGroupComputeResourcePolicyList_resultStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getGroupComputeResourcePolicyList_resultTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new isGatewayGroupsExists_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new isGatewayGroupsExists_resultTupleSchemeFactory();
 
-    public java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy> success; // required
+    public boolean success; // required
     public org.apache.airavata.registry.api.exception.RegistryServiceException rse; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
@@ -199479,100 +202365,82 @@ public class RegistryService {
     }
 
     // isset id assignments
+    private static final int __SUCCESS_ISSET_ID = 0;
+    private byte __isset_bitfield = 0;
     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.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.groupresourceprofile.ComputeResourcePolicy.class))));
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
       tmpMap.put(_Fields.RSE, new org.apache.thrift.meta_data.FieldMetaData("rse", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.registry.api.exception.RegistryServiceException.class)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getGroupComputeResourcePolicyList_result.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(isGatewayGroupsExists_result.class, metaDataMap);
     }
 
-    public getGroupComputeResourcePolicyList_result() {
+    public isGatewayGroupsExists_result() {
     }
 
-    public getGroupComputeResourcePolicyList_result(
-      java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy> success,
+    public isGatewayGroupsExists_result(
+      boolean success,
       org.apache.airavata.registry.api.exception.RegistryServiceException rse)
     {
       this();
       this.success = success;
+      setSuccessIsSet(true);
       this.rse = rse;
     }
 
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public getGroupComputeResourcePolicyList_result(getGroupComputeResourcePolicyList_result other) {
-      if (other.isSetSuccess()) {
-        java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy> __this__success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy>(other.success.size());
-        for (org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy other_element : other.success) {
-          __this__success.add(new org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy(other_element));
-        }
-        this.success = __this__success;
-      }
+    public isGatewayGroupsExists_result(isGatewayGroupsExists_result other) {
+      __isset_bitfield = other.__isset_bitfield;
+      this.success = other.success;
       if (other.isSetRse()) {
         this.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException(other.rse);
       }
     }
 
-    public getGroupComputeResourcePolicyList_result deepCopy() {
-      return new getGroupComputeResourcePolicyList_result(this);
+    public isGatewayGroupsExists_result deepCopy() {
+      return new isGatewayGroupsExists_result(this);
     }
 
     @Override
     public void clear() {
-      this.success = null;
+      setSuccessIsSet(false);
+      this.success = false;
       this.rse = null;
     }
 
-    public int getSuccessSize() {
-      return (this.success == null) ? 0 : this.success.size();
-    }
-
-    public java.util.Iterator<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy> getSuccessIterator() {
-      return (this.success == null) ? null : this.success.iterator();
-    }
-
-    public void addToSuccess(org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy elem) {
-      if (this.success == null) {
-        this.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy>();
-      }
-      this.success.add(elem);
-    }
-
-    public java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy> getSuccess() {
+    public boolean isSuccess() {
       return this.success;
     }
 
-    public getGroupComputeResourcePolicyList_result setSuccess(java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy> success) {
+    public isGatewayGroupsExists_result setSuccess(boolean success) {
       this.success = success;
+      setSuccessIsSet(true);
       return this;
     }
 
     public void unsetSuccess() {
-      this.success = null;
+      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
     }
 
     /** Returns true if field success is set (has been assigned a value) and false otherwise */
     public boolean isSetSuccess() {
-      return this.success != null;
+      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
     }
 
     public void setSuccessIsSet(boolean value) {
-      if (!value) {
-        this.success = null;
-      }
+      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
     }
 
     public org.apache.airavata.registry.api.exception.RegistryServiceException getRse() {
       return this.rse;
     }
 
-    public getGroupComputeResourcePolicyList_result setRse(org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
+    public isGatewayGroupsExists_result setRse(org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
       this.rse = rse;
       return this;
     }
@@ -199598,7 +202466,7 @@ public class RegistryService {
         if (value == null) {
           unsetSuccess();
         } else {
-          setSuccess((java.util.List<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy>)value);
+          setSuccess((java.lang.Boolean)value);
         }
         break;
 
@@ -199616,7 +202484,7 @@ public class RegistryService {
     public java.lang.Object getFieldValue(_Fields field) {
       switch (field) {
       case SUCCESS:
-        return getSuccess();
+        return isSuccess();
 
       case RSE:
         return getRse();
@@ -199644,23 +202512,23 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof getGroupComputeResourcePolicyList_result)
-        return this.equals((getGroupComputeResourcePolicyList_result)that);
+      if (that instanceof isGatewayGroupsExists_result)
+        return this.equals((isGatewayGroupsExists_result)that);
       return false;
     }
 
-    public boolean equals(getGroupComputeResourcePolicyList_result that) {
+    public boolean equals(isGatewayGroupsExists_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();
+      boolean this_present_success = true;
+      boolean that_present_success = true;
       if (this_present_success || that_present_success) {
         if (!(this_present_success && that_present_success))
           return false;
-        if (!this.success.equals(that.success))
+        if (this.success != that.success)
           return false;
       }
 
@@ -199680,9 +202548,7 @@ public class RegistryService {
     public int hashCode() {
       int hashCode = 1;
 
-      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
-      if (isSetSuccess())
-        hashCode = hashCode * 8191 + success.hashCode();
+      hashCode = hashCode * 8191 + ((success) ? 131071 : 524287);
 
       hashCode = hashCode * 8191 + ((isSetRse()) ? 131071 : 524287);
       if (isSetRse())
@@ -199692,7 +202558,7 @@ public class RegistryService {
     }
 
     @Override
-    public int compareTo(getGroupComputeResourcePolicyList_result other) {
+    public int compareTo(isGatewayGroupsExists_result other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
@@ -199736,15 +202602,11 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("getGroupComputeResourcePolicyList_result(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("isGatewayGroupsExists_result(");
       boolean first = true;
 
       sb.append("success:");
-      if (this.success == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.success);
-      }
+      sb.append(this.success);
       first = false;
       if (!first) sb.append(", ");
       sb.append("rse:");
@@ -199773,21 +202635,23 @@ public class RegistryService {
 
     private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
       try {
+        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+        __isset_bitfield = 0;
         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 getGroupComputeResourcePolicyList_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public getGroupComputeResourcePolicyList_resultStandardScheme getScheme() {
-        return new getGroupComputeResourcePolicyList_resultStandardScheme();
+    private static class isGatewayGroupsExists_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public isGatewayGroupsExists_resultStandardScheme getScheme() {
+        return new isGatewayGroupsExists_resultStandardScheme();
       }
     }
 
-    private static class getGroupComputeResourcePolicyList_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<getGroupComputeResourcePolicyList_result> {
+    private static class isGatewayGroupsExists_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<isGatewayGroupsExists_result> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, getGroupComputeResourcePolicyList_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, isGatewayGroupsExists_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -199798,19 +202662,8 @@ public class RegistryService {
           }
           switch (schemeField.id) {
             case 0: // SUCCESS
-              if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
-                {
-                  org.apache.thrift.protocol.TList _list490 = iprot.readListBegin();
-                  struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy>(_list490.size);
-                  org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy _elem491;
-                  for (int _i492 = 0; _i492 < _list490.size; ++_i492)
-                  {
-                    _elem491 = new org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy();
-                    _elem491.read(iprot);
-                    struct.success.add(_elem491);
-                  }
-                  iprot.readListEnd();
-                }
+              if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+                struct.success = iprot.readBool();
                 struct.setSuccessIsSet(true);
               } else { 
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
@@ -199836,20 +202689,13 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, getGroupComputeResourcePolicyList_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, isGatewayGroupsExists_result struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
-        if (struct.success != null) {
+        if (struct.isSetSuccess()) {
           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.groupresourceprofile.ComputeResourcePolicy _iter493 : struct.success)
-            {
-              _iter493.write(oprot);
-            }
-            oprot.writeListEnd();
-          }
+          oprot.writeBool(struct.success);
           oprot.writeFieldEnd();
         }
         if (struct.rse != null) {
@@ -199863,16 +202709,16 @@ public class RegistryService {
 
     }
 
-    private static class getGroupComputeResourcePolicyList_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public getGroupComputeResourcePolicyList_resultTupleScheme getScheme() {
-        return new getGroupComputeResourcePolicyList_resultTupleScheme();
+    private static class isGatewayGroupsExists_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public isGatewayGroupsExists_resultTupleScheme getScheme() {
+        return new isGatewayGroupsExists_resultTupleScheme();
       }
     }
 
-    private static class getGroupComputeResourcePolicyList_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<getGroupComputeResourcePolicyList_result> {
+    private static class isGatewayGroupsExists_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<isGatewayGroupsExists_result> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, getGroupComputeResourcePolicyList_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, isGatewayGroupsExists_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()) {
@@ -199883,13 +202729,7 @@ public class RegistryService {
         }
         oprot.writeBitSet(optionals, 2);
         if (struct.isSetSuccess()) {
-          {
-            oprot.writeI32(struct.success.size());
-            for (org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy _iter494 : struct.success)
-            {
-              _iter494.write(oprot);
-            }
-          }
+          oprot.writeBool(struct.success);
         }
         if (struct.isSetRse()) {
           struct.rse.write(oprot);
@@ -199897,21 +202737,11 @@ public class RegistryService {
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, getGroupComputeResourcePolicyList_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, isGatewayGroupsExists_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(2);
         if (incoming.get(0)) {
-          {
-            org.apache.thrift.protocol.TList _list495 = 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.groupresourceprofile.ComputeResourcePolicy>(_list495.size);
-            org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy _elem496;
-            for (int _i497 = 0; _i497 < _list495.size; ++_i497)
-            {
-              _elem496 = new org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy();
-              _elem496.read(iprot);
-              struct.success.add(_elem496);
-            }
-          }
+          struct.success = iprot.readBool();
           struct.setSuccessIsSet(true);
         }
         if (incoming.get(1)) {
@@ -199927,19 +202757,19 @@ public class RegistryService {
     }
   }
 
-  public static class createGatewayGroups_args implements org.apache.thrift.TBase<createGatewayGroups_args, createGatewayGroups_args._Fields>, java.io.Serializable, Cloneable, Comparable<createGatewayGroups_args>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("createGatewayGroups_args");
+  public static class getGatewayGroups_args implements org.apache.thrift.TBase<getGatewayGroups_args, getGatewayGroups_args._Fields>, java.io.Serializable, Cloneable, Comparable<getGatewayGroups_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getGatewayGroups_args");
 
-    private static final org.apache.thrift.protocol.TField GATEWAY_GROUPS_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayGroups", 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)1);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new createGatewayGroups_argsStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new createGatewayGroups_argsTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getGatewayGroups_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getGatewayGroups_argsTupleSchemeFactory();
 
-    public org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups gatewayGroups; // required
+    public java.lang.String gatewayId; // 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_GROUPS((short)1, "gatewayGroups");
+      GATEWAY_ID((short)1, "gatewayId");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -199954,8 +202784,8 @@ public class RegistryService {
        */
       public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
-          case 1: // GATEWAY_GROUPS
-            return GATEWAY_GROUPS;
+          case 1: // GATEWAY_ID
+            return GATEWAY_ID;
           default:
             return null;
         }
@@ -199999,71 +202829,71 @@ public class RegistryService {
     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_GROUPS, new org.apache.thrift.meta_data.FieldMetaData("gatewayGroups", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups.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)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(createGatewayGroups_args.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getGatewayGroups_args.class, metaDataMap);
     }
 
-    public createGatewayGroups_args() {
+    public getGatewayGroups_args() {
     }
 
-    public createGatewayGroups_args(
-      org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups gatewayGroups)
+    public getGatewayGroups_args(
+      java.lang.String gatewayId)
     {
       this();
-      this.gatewayGroups = gatewayGroups;
+      this.gatewayId = gatewayId;
     }
 
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public createGatewayGroups_args(createGatewayGroups_args other) {
-      if (other.isSetGatewayGroups()) {
-        this.gatewayGroups = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups(other.gatewayGroups);
+    public getGatewayGroups_args(getGatewayGroups_args other) {
+      if (other.isSetGatewayId()) {
+        this.gatewayId = other.gatewayId;
       }
     }
 
-    public createGatewayGroups_args deepCopy() {
-      return new createGatewayGroups_args(this);
+    public getGatewayGroups_args deepCopy() {
+      return new getGatewayGroups_args(this);
     }
 
     @Override
     public void clear() {
-      this.gatewayGroups = null;
+      this.gatewayId = null;
     }
 
-    public org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups getGatewayGroups() {
-      return this.gatewayGroups;
+    public java.lang.String getGatewayId() {
+      return this.gatewayId;
     }
 
-    public createGatewayGroups_args setGatewayGroups(org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups gatewayGroups) {
-      this.gatewayGroups = gatewayGroups;
+    public getGatewayGroups_args setGatewayId(java.lang.String gatewayId) {
+      this.gatewayId = gatewayId;
       return this;
     }
 
-    public void unsetGatewayGroups() {
-      this.gatewayGroups = null;
+    public void unsetGatewayId() {
+      this.gatewayId = null;
     }
 
-    /** Returns true if field gatewayGroups is set (has been assigned a value) and false otherwise */
-    public boolean isSetGatewayGroups() {
-      return this.gatewayGroups != 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 setGatewayGroupsIsSet(boolean value) {
+    public void setGatewayIdIsSet(boolean value) {
       if (!value) {
-        this.gatewayGroups = null;
+        this.gatewayId = null;
       }
     }
 
     public void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
-      case GATEWAY_GROUPS:
+      case GATEWAY_ID:
         if (value == null) {
-          unsetGatewayGroups();
+          unsetGatewayId();
         } else {
-          setGatewayGroups((org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups)value);
+          setGatewayId((java.lang.String)value);
         }
         break;
 
@@ -200072,8 +202902,8 @@ public class RegistryService {
 
     public java.lang.Object getFieldValue(_Fields field) {
       switch (field) {
-      case GATEWAY_GROUPS:
-        return getGatewayGroups();
+      case GATEWAY_ID:
+        return getGatewayId();
 
       }
       throw new java.lang.IllegalStateException();
@@ -200086,8 +202916,8 @@ public class RegistryService {
       }
 
       switch (field) {
-      case GATEWAY_GROUPS:
-        return isSetGatewayGroups();
+      case GATEWAY_ID:
+        return isSetGatewayId();
       }
       throw new java.lang.IllegalStateException();
     }
@@ -200096,23 +202926,23 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof createGatewayGroups_args)
-        return this.equals((createGatewayGroups_args)that);
+      if (that instanceof getGatewayGroups_args)
+        return this.equals((getGatewayGroups_args)that);
       return false;
     }
 
-    public boolean equals(createGatewayGroups_args that) {
+    public boolean equals(getGatewayGroups_args that) {
       if (that == null)
         return false;
       if (this == that)
         return true;
 
-      boolean this_present_gatewayGroups = true && this.isSetGatewayGroups();
-      boolean that_present_gatewayGroups = true && that.isSetGatewayGroups();
-      if (this_present_gatewayGroups || that_present_gatewayGroups) {
-        if (!(this_present_gatewayGroups && that_present_gatewayGroups))
+      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.gatewayGroups.equals(that.gatewayGroups))
+        if (!this.gatewayId.equals(that.gatewayId))
           return false;
       }
 
@@ -200123,27 +202953,27 @@ public class RegistryService {
     public int hashCode() {
       int hashCode = 1;
 
-      hashCode = hashCode * 8191 + ((isSetGatewayGroups()) ? 131071 : 524287);
-      if (isSetGatewayGroups())
-        hashCode = hashCode * 8191 + gatewayGroups.hashCode();
+      hashCode = hashCode * 8191 + ((isSetGatewayId()) ? 131071 : 524287);
+      if (isSetGatewayId())
+        hashCode = hashCode * 8191 + gatewayId.hashCode();
 
       return hashCode;
     }
 
     @Override
-    public int compareTo(createGatewayGroups_args other) {
+    public int compareTo(getGatewayGroups_args other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
 
       int lastComparison = 0;
 
-      lastComparison = java.lang.Boolean.valueOf(isSetGatewayGroups()).compareTo(other.isSetGatewayGroups());
+      lastComparison = java.lang.Boolean.valueOf(isSetGatewayId()).compareTo(other.isSetGatewayId());
       if (lastComparison != 0) {
         return lastComparison;
       }
-      if (isSetGatewayGroups()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.gatewayGroups, other.gatewayGroups);
+      if (isSetGatewayId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.gatewayId, other.gatewayId);
         if (lastComparison != 0) {
           return lastComparison;
         }
@@ -200165,14 +202995,14 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("createGatewayGroups_args(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("getGatewayGroups_args(");
       boolean first = true;
 
-      sb.append("gatewayGroups:");
-      if (this.gatewayGroups == null) {
+      sb.append("gatewayId:");
+      if (this.gatewayId == null) {
         sb.append("null");
       } else {
-        sb.append(this.gatewayGroups);
+        sb.append(this.gatewayId);
       }
       first = false;
       sb.append(")");
@@ -200181,13 +203011,10 @@ public class RegistryService {
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
-      if (gatewayGroups == null) {
-        throw new org.apache.thrift.protocol.TProtocolException("Required field 'gatewayGroups' 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 (gatewayGroups != null) {
-        gatewayGroups.validate();
-      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -200206,15 +203033,15 @@ public class RegistryService {
       }
     }
 
-    private static class createGatewayGroups_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public createGatewayGroups_argsStandardScheme getScheme() {
-        return new createGatewayGroups_argsStandardScheme();
+    private static class getGatewayGroups_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getGatewayGroups_argsStandardScheme getScheme() {
+        return new getGatewayGroups_argsStandardScheme();
       }
     }
 
-    private static class createGatewayGroups_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<createGatewayGroups_args> {
+    private static class getGatewayGroups_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<getGatewayGroups_args> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, createGatewayGroups_args struct) throws org.apache.thrift.TException {
+      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)
@@ -200224,11 +203051,10 @@ public class RegistryService {
             break;
           }
           switch (schemeField.id) {
-            case 1: // GATEWAY_GROUPS
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-                struct.gatewayGroups = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups();
-                struct.gatewayGroups.read(iprot);
-                struct.setGatewayGroupsIsSet(true);
+            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);
               }
@@ -200244,13 +203070,13 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, createGatewayGroups_args struct) throws org.apache.thrift.TException {
+      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.gatewayGroups != null) {
-          oprot.writeFieldBegin(GATEWAY_GROUPS_FIELD_DESC);
-          struct.gatewayGroups.write(oprot);
+        if (struct.gatewayId != null) {
+          oprot.writeFieldBegin(GATEWAY_ID_FIELD_DESC);
+          oprot.writeString(struct.gatewayId);
           oprot.writeFieldEnd();
         }
         oprot.writeFieldStop();
@@ -200259,26 +203085,25 @@ public class RegistryService {
 
     }
 
-    private static class createGatewayGroups_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public createGatewayGroups_argsTupleScheme getScheme() {
-        return new createGatewayGroups_argsTupleScheme();
+    private static class getGatewayGroups_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getGatewayGroups_argsTupleScheme getScheme() {
+        return new getGatewayGroups_argsTupleScheme();
       }
     }
 
-    private static class createGatewayGroups_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<createGatewayGroups_args> {
+    private static class getGatewayGroups_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<getGatewayGroups_args> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, createGatewayGroups_args struct) throws org.apache.thrift.TException {
+      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.gatewayGroups.write(oprot);
+        oprot.writeString(struct.gatewayId);
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, createGatewayGroups_args struct) throws org.apache.thrift.TException {
+      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.gatewayGroups = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups();
-        struct.gatewayGroups.read(iprot);
-        struct.setGatewayGroupsIsSet(true);
+        struct.gatewayId = iprot.readString();
+        struct.setGatewayIdIsSet(true);
       }
     }
 
@@ -200287,22 +203112,22 @@ public class RegistryService {
     }
   }
 
-  public static class createGatewayGroups_result implements org.apache.thrift.TBase<createGatewayGroups_result, createGatewayGroups_result._Fields>, java.io.Serializable, Cloneable, Comparable<createGatewayGroups_result>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("createGatewayGroups_result");
+  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 RSE_FIELD_DESC = new org.apache.thrift.protocol.TField("rse", org.apache.thrift.protocol.TType.STRUCT, (short)1);
-    private static final org.apache.thrift.protocol.TField DEE_FIELD_DESC = new org.apache.thrift.protocol.TField("dee", org.apache.thrift.protocol.TType.STRUCT, (short)2);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new createGatewayGroups_resultStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new createGatewayGroups_resultTupleSchemeFactory();
+    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.registry.api.exception.RegistryServiceException rse; // required
-    public org.apache.airavata.model.error.DuplicateEntryException dee; // 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 {
-      RSE((short)1, "rse"),
-      DEE((short)2, "dee");
+      SUCCESS((short)0, "success"),
+      RSE((short)1, "rse");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -200317,10 +203142,10 @@ public class RegistryService {
        */
       public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
+          case 0: // SUCCESS
+            return SUCCESS;
           case 1: // RSE
             return RSE;
-          case 2: // DEE
-            return DEE;
           default:
             return null;
         }
@@ -200364,111 +203189,111 @@ public class RegistryService {
     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.RSE, new org.apache.thrift.meta_data.FieldMetaData("rse", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.registry.api.exception.RegistryServiceException.class)));
-      tmpMap.put(_Fields.DEE, new org.apache.thrift.meta_data.FieldMetaData("dee", org.apache.thrift.TFieldRequirementType.DEFAULT, 
-          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.error.DuplicateEntryException.class)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(createGatewayGroups_result.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getGatewayGroups_result.class, metaDataMap);
     }
 
-    public createGatewayGroups_result() {
+    public getGatewayGroups_result() {
     }
 
-    public createGatewayGroups_result(
-      org.apache.airavata.registry.api.exception.RegistryServiceException rse,
-      org.apache.airavata.model.error.DuplicateEntryException dee)
+    public getGatewayGroups_result(
+      org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups success,
+      org.apache.airavata.registry.api.exception.RegistryServiceException rse)
     {
       this();
+      this.success = success;
       this.rse = rse;
-      this.dee = dee;
     }
 
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public createGatewayGroups_result(createGatewayGroups_result other) {
+    public getGatewayGroups_result(getGatewayGroups_result other) {
+      if (other.isSetSuccess()) {
+        this.success = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups(other.success);
+      }
       if (other.isSetRse()) {
         this.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException(other.rse);
       }
-      if (other.isSetDee()) {
-        this.dee = new org.apache.airavata.model.error.DuplicateEntryException(other.dee);
-      }
     }
 
-    public createGatewayGroups_result deepCopy() {
-      return new createGatewayGroups_result(this);
+    public getGatewayGroups_result deepCopy() {
+      return new getGatewayGroups_result(this);
     }
 
     @Override
     public void clear() {
+      this.success = null;
       this.rse = null;
-      this.dee = null;
     }
 
-    public org.apache.airavata.registry.api.exception.RegistryServiceException getRse() {
-      return this.rse;
+    public org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups getSuccess() {
+      return this.success;
     }
 
-    public createGatewayGroups_result setRse(org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
-      this.rse = rse;
+    public getGatewayGroups_result setSuccess(org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups success) {
+      this.success = success;
       return this;
     }
 
-    public void unsetRse() {
-      this.rse = null;
+    public void unsetSuccess() {
+      this.success = null;
     }
 
-    /** Returns true if field rse is set (has been assigned a value) and false otherwise */
-    public boolean isSetRse() {
-      return this.rse != 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 setRseIsSet(boolean value) {
+    public void setSuccessIsSet(boolean value) {
       if (!value) {
-        this.rse = null;
+        this.success = null;
       }
     }
 
-    public org.apache.airavata.model.error.DuplicateEntryException getDee() {
-      return this.dee;
+    public org.apache.airavata.registry.api.exception.RegistryServiceException getRse() {
+      return this.rse;
     }
 
-    public createGatewayGroups_result setDee(org.apache.airavata.model.error.DuplicateEntryException dee) {
-      this.dee = dee;
+    public getGatewayGroups_result setRse(org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
+      this.rse = rse;
       return this;
     }
 
-    public void unsetDee() {
-      this.dee = null;
+    public void unsetRse() {
+      this.rse = null;
     }
 
-    /** Returns true if field dee is set (has been assigned a value) and false otherwise */
-    public boolean isSetDee() {
-      return this.dee != null;
+    /** Returns true if field rse is set (has been assigned a value) and false otherwise */
+    public boolean isSetRse() {
+      return this.rse != null;
     }
 
-    public void setDeeIsSet(boolean value) {
+    public void setRseIsSet(boolean value) {
       if (!value) {
-        this.dee = null;
+        this.rse = null;
       }
     }
 
     public void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
-      case RSE:
+      case SUCCESS:
         if (value == null) {
-          unsetRse();
+          unsetSuccess();
         } else {
-          setRse((org.apache.airavata.registry.api.exception.RegistryServiceException)value);
+          setSuccess((org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups)value);
         }
         break;
 
-      case DEE:
+      case RSE:
         if (value == null) {
-          unsetDee();
+          unsetRse();
         } else {
-          setDee((org.apache.airavata.model.error.DuplicateEntryException)value);
+          setRse((org.apache.airavata.registry.api.exception.RegistryServiceException)value);
         }
         break;
 
@@ -200477,12 +203302,12 @@ public class RegistryService {
 
     public java.lang.Object getFieldValue(_Fields field) {
       switch (field) {
+      case SUCCESS:
+        return getSuccess();
+
       case RSE:
         return getRse();
 
-      case DEE:
-        return getDee();
-
       }
       throw new java.lang.IllegalStateException();
     }
@@ -200494,10 +203319,10 @@ public class RegistryService {
       }
 
       switch (field) {
+      case SUCCESS:
+        return isSetSuccess();
       case RSE:
         return isSetRse();
-      case DEE:
-        return isSetDee();
       }
       throw new java.lang.IllegalStateException();
     }
@@ -200506,17 +203331,26 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof createGatewayGroups_result)
-        return this.equals((createGatewayGroups_result)that);
+      if (that instanceof getGatewayGroups_result)
+        return this.equals((getGatewayGroups_result)that);
       return false;
     }
 
-    public boolean equals(createGatewayGroups_result that) {
+    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_rse = true && this.isSetRse();
       boolean that_present_rse = true && that.isSetRse();
       if (this_present_rse || that_present_rse) {
@@ -200526,15 +203360,6 @@ public class RegistryService {
           return false;
       }
 
-      boolean this_present_dee = true && this.isSetDee();
-      boolean that_present_dee = true && that.isSetDee();
-      if (this_present_dee || that_present_dee) {
-        if (!(this_present_dee && that_present_dee))
-          return false;
-        if (!this.dee.equals(that.dee))
-          return false;
-      }
-
       return true;
     }
 
@@ -200542,41 +203367,41 @@ public class RegistryService {
     public int hashCode() {
       int hashCode = 1;
 
+      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
+      if (isSetSuccess())
+        hashCode = hashCode * 8191 + success.hashCode();
+
       hashCode = hashCode * 8191 + ((isSetRse()) ? 131071 : 524287);
       if (isSetRse())
         hashCode = hashCode * 8191 + rse.hashCode();
 
-      hashCode = hashCode * 8191 + ((isSetDee()) ? 131071 : 524287);
-      if (isSetDee())
-        hashCode = hashCode * 8191 + dee.hashCode();
-
       return hashCode;
     }
 
     @Override
-    public int compareTo(createGatewayGroups_result other) {
+    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(isSetRse()).compareTo(other.isSetRse());
+      lastComparison = java.lang.Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
       if (lastComparison != 0) {
         return lastComparison;
       }
-      if (isSetRse()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.rse, other.rse);
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
         if (lastComparison != 0) {
           return lastComparison;
         }
       }
-      lastComparison = java.lang.Boolean.valueOf(isSetDee()).compareTo(other.isSetDee());
+      lastComparison = java.lang.Boolean.valueOf(isSetRse()).compareTo(other.isSetRse());
       if (lastComparison != 0) {
         return lastComparison;
       }
-      if (isSetDee()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dee, other.dee);
+      if (isSetRse()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.rse, other.rse);
         if (lastComparison != 0) {
           return lastComparison;
         }
@@ -200598,22 +203423,22 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("createGatewayGroups_result(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("getGatewayGroups_result(");
       boolean first = true;
 
-      sb.append("rse:");
-      if (this.rse == null) {
+      sb.append("success:");
+      if (this.success == null) {
         sb.append("null");
       } else {
-        sb.append(this.rse);
+        sb.append(this.success);
       }
       first = false;
       if (!first) sb.append(", ");
-      sb.append("dee:");
-      if (this.dee == null) {
+      sb.append("rse:");
+      if (this.rse == null) {
         sb.append("null");
       } else {
-        sb.append(this.dee);
+        sb.append(this.rse);
       }
       first = false;
       sb.append(")");
@@ -200623,6 +203448,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 {
@@ -200641,15 +203469,15 @@ public class RegistryService {
       }
     }
 
-    private static class createGatewayGroups_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public createGatewayGroups_resultStandardScheme getScheme() {
-        return new createGatewayGroups_resultStandardScheme();
+    private static class getGatewayGroups_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getGatewayGroups_resultStandardScheme getScheme() {
+        return new getGatewayGroups_resultStandardScheme();
       }
     }
 
-    private static class createGatewayGroups_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<createGatewayGroups_result> {
+    private static class getGatewayGroups_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<getGatewayGroups_result> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, createGatewayGroups_result struct) throws org.apache.thrift.TException {
+      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)
@@ -200659,20 +203487,20 @@ public class RegistryService {
             break;
           }
           switch (schemeField.id) {
-            case 1: // RSE
+            case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-                struct.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException();
-                struct.rse.read(iprot);
-                struct.setRseIsSet(true);
+                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 2: // DEE
+            case 1: // RSE
               if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-                struct.dee = new org.apache.airavata.model.error.DuplicateEntryException();
-                struct.dee.read(iprot);
-                struct.setDeeIsSet(true);
+                struct.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException();
+                struct.rse.read(iprot);
+                struct.setRseIsSet(true);
               } else { 
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
@@ -200688,67 +203516,67 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, createGatewayGroups_result struct) throws org.apache.thrift.TException {
+      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.rse != null) {
           oprot.writeFieldBegin(RSE_FIELD_DESC);
           struct.rse.write(oprot);
           oprot.writeFieldEnd();
         }
-        if (struct.dee != null) {
-          oprot.writeFieldBegin(DEE_FIELD_DESC);
-          struct.dee.write(oprot);
-          oprot.writeFieldEnd();
-        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
 
     }
 
-    private static class createGatewayGroups_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public createGatewayGroups_resultTupleScheme getScheme() {
-        return new createGatewayGroups_resultTupleScheme();
+    private static class getGatewayGroups_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getGatewayGroups_resultTupleScheme getScheme() {
+        return new getGatewayGroups_resultTupleScheme();
       }
     }
 
-    private static class createGatewayGroups_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<createGatewayGroups_result> {
+    private static class getGatewayGroups_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<getGatewayGroups_result> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, createGatewayGroups_result struct) throws org.apache.thrift.TException {
+      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.isSetRse()) {
+        if (struct.isSetSuccess()) {
           optionals.set(0);
         }
-        if (struct.isSetDee()) {
+        if (struct.isSetRse()) {
           optionals.set(1);
         }
         oprot.writeBitSet(optionals, 2);
+        if (struct.isSetSuccess()) {
+          struct.success.write(oprot);
+        }
         if (struct.isSetRse()) {
           struct.rse.write(oprot);
         }
-        if (struct.isSetDee()) {
-          struct.dee.write(oprot);
-        }
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, createGatewayGroups_result struct) throws org.apache.thrift.TException {
+      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(2);
         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.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException();
           struct.rse.read(iprot);
           struct.setRseIsSet(true);
         }
-        if (incoming.get(1)) {
-          struct.dee = new org.apache.airavata.model.error.DuplicateEntryException();
-          struct.dee.read(iprot);
-          struct.setDeeIsSet(true);
-        }
       }
     }
 
@@ -200757,19 +203585,22 @@ public class RegistryService {
     }
   }
 
-  public static class updateGatewayGroups_args implements org.apache.thrift.TBase<updateGatewayGroups_args, updateGatewayGroups_args._Fields>, java.io.Serializable, Cloneable, Comparable<updateGatewayGroups_args>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("updateGatewayGroups_args");
+  public static class getParser_args implements org.apache.thrift.TBase<getParser_args, getParser_args._Fields>, java.io.Serializable, Cloneable, Comparable<getParser_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getParser_args");
 
-    private static final org.apache.thrift.protocol.TField GATEWAY_GROUPS_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayGroups", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+    private static final org.apache.thrift.protocol.TField PARSER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("parserId", org.apache.thrift.protocol.TType.STRING, (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.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new updateGatewayGroups_argsStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new updateGatewayGroups_argsTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getParser_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getParser_argsTupleSchemeFactory();
 
-    public org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups gatewayGroups; // required
+    public java.lang.String parserId; // required
+    public java.lang.String gatewayId; // 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_GROUPS((short)1, "gatewayGroups");
+      PARSER_ID((short)1, "parserId"),
+      GATEWAY_ID((short)2, "gatewayId");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -200784,8 +203615,10 @@ public class RegistryService {
        */
       public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
-          case 1: // GATEWAY_GROUPS
-            return GATEWAY_GROUPS;
+          case 1: // PARSER_ID
+            return PARSER_ID;
+          case 2: // GATEWAY_ID
+            return GATEWAY_ID;
           default:
             return null;
         }
@@ -200829,71 +203662,111 @@ public class RegistryService {
     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_GROUPS, new org.apache.thrift.meta_data.FieldMetaData("gatewayGroups", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups.class)));
+      tmpMap.put(_Fields.PARSER_ID, new org.apache.thrift.meta_data.FieldMetaData("parserId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      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)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(updateGatewayGroups_args.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getParser_args.class, metaDataMap);
     }
 
-    public updateGatewayGroups_args() {
+    public getParser_args() {
     }
 
-    public updateGatewayGroups_args(
-      org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups gatewayGroups)
+    public getParser_args(
+      java.lang.String parserId,
+      java.lang.String gatewayId)
     {
       this();
-      this.gatewayGroups = gatewayGroups;
+      this.parserId = parserId;
+      this.gatewayId = gatewayId;
     }
 
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public updateGatewayGroups_args(updateGatewayGroups_args other) {
-      if (other.isSetGatewayGroups()) {
-        this.gatewayGroups = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups(other.gatewayGroups);
+    public getParser_args(getParser_args other) {
+      if (other.isSetParserId()) {
+        this.parserId = other.parserId;
+      }
+      if (other.isSetGatewayId()) {
+        this.gatewayId = other.gatewayId;
       }
     }
 
-    public updateGatewayGroups_args deepCopy() {
-      return new updateGatewayGroups_args(this);
+    public getParser_args deepCopy() {
+      return new getParser_args(this);
     }
 
     @Override
     public void clear() {
-      this.gatewayGroups = null;
+      this.parserId = null;
+      this.gatewayId = null;
     }
 
-    public org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups getGatewayGroups() {
-      return this.gatewayGroups;
+    public java.lang.String getParserId() {
+      return this.parserId;
     }
 
-    public updateGatewayGroups_args setGatewayGroups(org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups gatewayGroups) {
-      this.gatewayGroups = gatewayGroups;
+    public getParser_args setParserId(java.lang.String parserId) {
+      this.parserId = parserId;
       return this;
     }
 
-    public void unsetGatewayGroups() {
-      this.gatewayGroups = null;
+    public void unsetParserId() {
+      this.parserId = null;
     }
 
-    /** Returns true if field gatewayGroups is set (has been assigned a value) and false otherwise */
-    public boolean isSetGatewayGroups() {
-      return this.gatewayGroups != null;
+    /** Returns true if field parserId is set (has been assigned a value) and false otherwise */
+    public boolean isSetParserId() {
+      return this.parserId != null;
     }
 
-    public void setGatewayGroupsIsSet(boolean value) {
+    public void setParserIdIsSet(boolean value) {
       if (!value) {
-        this.gatewayGroups = null;
+        this.parserId = null;
+      }
+    }
+
+    public java.lang.String getGatewayId() {
+      return this.gatewayId;
+    }
+
+    public getParser_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 void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
-      case GATEWAY_GROUPS:
+      case PARSER_ID:
         if (value == null) {
-          unsetGatewayGroups();
+          unsetParserId();
         } else {
-          setGatewayGroups((org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups)value);
+          setParserId((java.lang.String)value);
+        }
+        break;
+
+      case GATEWAY_ID:
+        if (value == null) {
+          unsetGatewayId();
+        } else {
+          setGatewayId((java.lang.String)value);
         }
         break;
 
@@ -200902,8 +203775,11 @@ public class RegistryService {
 
     public java.lang.Object getFieldValue(_Fields field) {
       switch (field) {
-      case GATEWAY_GROUPS:
-        return getGatewayGroups();
+      case PARSER_ID:
+        return getParserId();
+
+      case GATEWAY_ID:
+        return getGatewayId();
 
       }
       throw new java.lang.IllegalStateException();
@@ -200916,8 +203792,10 @@ public class RegistryService {
       }
 
       switch (field) {
-      case GATEWAY_GROUPS:
-        return isSetGatewayGroups();
+      case PARSER_ID:
+        return isSetParserId();
+      case GATEWAY_ID:
+        return isSetGatewayId();
       }
       throw new java.lang.IllegalStateException();
     }
@@ -200926,23 +203804,32 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof updateGatewayGroups_args)
-        return this.equals((updateGatewayGroups_args)that);
+      if (that instanceof getParser_args)
+        return this.equals((getParser_args)that);
       return false;
     }
 
-    public boolean equals(updateGatewayGroups_args that) {
+    public boolean equals(getParser_args that) {
       if (that == null)
         return false;
       if (this == that)
         return true;
 
-      boolean this_present_gatewayGroups = true && this.isSetGatewayGroups();
-      boolean that_present_gatewayGroups = true && that.isSetGatewayGroups();
-      if (this_present_gatewayGroups || that_present_gatewayGroups) {
-        if (!(this_present_gatewayGroups && that_present_gatewayGroups))
+      boolean this_present_parserId = true && this.isSetParserId();
+      boolean that_present_parserId = true && that.isSetParserId();
+      if (this_present_parserId || that_present_parserId) {
+        if (!(this_present_parserId && that_present_parserId))
           return false;
-        if (!this.gatewayGroups.equals(that.gatewayGroups))
+        if (!this.parserId.equals(that.parserId))
+          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;
       }
 
@@ -200953,27 +203840,41 @@ public class RegistryService {
     public int hashCode() {
       int hashCode = 1;
 
-      hashCode = hashCode * 8191 + ((isSetGatewayGroups()) ? 131071 : 524287);
-      if (isSetGatewayGroups())
-        hashCode = hashCode * 8191 + gatewayGroups.hashCode();
+      hashCode = hashCode * 8191 + ((isSetParserId()) ? 131071 : 524287);
+      if (isSetParserId())
+        hashCode = hashCode * 8191 + parserId.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetGatewayId()) ? 131071 : 524287);
+      if (isSetGatewayId())
+        hashCode = hashCode * 8191 + gatewayId.hashCode();
 
       return hashCode;
     }
 
     @Override
-    public int compareTo(updateGatewayGroups_args other) {
+    public int compareTo(getParser_args other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
 
       int lastComparison = 0;
 
-      lastComparison = java.lang.Boolean.valueOf(isSetGatewayGroups()).compareTo(other.isSetGatewayGroups());
+      lastComparison = java.lang.Boolean.valueOf(isSetParserId()).compareTo(other.isSetParserId());
       if (lastComparison != 0) {
         return lastComparison;
       }
-      if (isSetGatewayGroups()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.gatewayGroups, other.gatewayGroups);
+      if (isSetParserId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.parserId, other.parserId);
+        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;
         }
@@ -200995,14 +203896,22 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("updateGatewayGroups_args(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("getParser_args(");
       boolean first = true;
 
-      sb.append("gatewayGroups:");
-      if (this.gatewayGroups == null) {
+      sb.append("parserId:");
+      if (this.parserId == null) {
         sb.append("null");
       } else {
-        sb.append(this.gatewayGroups);
+        sb.append(this.parserId);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("gatewayId:");
+      if (this.gatewayId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.gatewayId);
       }
       first = false;
       sb.append(")");
@@ -201011,13 +203920,13 @@ public class RegistryService {
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
-      if (gatewayGroups == null) {
-        throw new org.apache.thrift.protocol.TProtocolException("Required field 'gatewayGroups' was not present! Struct: " + toString());
+      if (parserId == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'parserId' was not present! Struct: " + toString());
       }
-      // check for sub-struct validity
-      if (gatewayGroups != null) {
-        gatewayGroups.validate();
+      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 {
@@ -201036,15 +203945,15 @@ public class RegistryService {
       }
     }
 
-    private static class updateGatewayGroups_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public updateGatewayGroups_argsStandardScheme getScheme() {
-        return new updateGatewayGroups_argsStandardScheme();
+    private static class getParser_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getParser_argsStandardScheme getScheme() {
+        return new getParser_argsStandardScheme();
       }
     }
 
-    private static class updateGatewayGroups_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<updateGatewayGroups_args> {
+    private static class getParser_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<getParser_args> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, updateGatewayGroups_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, getParser_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -201054,11 +203963,18 @@ public class RegistryService {
             break;
           }
           switch (schemeField.id) {
-            case 1: // GATEWAY_GROUPS
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-                struct.gatewayGroups = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups();
-                struct.gatewayGroups.read(iprot);
-                struct.setGatewayGroupsIsSet(true);
+            case 1: // PARSER_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.parserId = iprot.readString();
+                struct.setParserIdIsSet(true);
+              } else { 
+                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);
               }
@@ -201074,13 +203990,18 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, updateGatewayGroups_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, getParser_args struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
-        if (struct.gatewayGroups != null) {
-          oprot.writeFieldBegin(GATEWAY_GROUPS_FIELD_DESC);
-          struct.gatewayGroups.write(oprot);
+        if (struct.parserId != null) {
+          oprot.writeFieldBegin(PARSER_ID_FIELD_DESC);
+          oprot.writeString(struct.parserId);
+          oprot.writeFieldEnd();
+        }
+        if (struct.gatewayId != null) {
+          oprot.writeFieldBegin(GATEWAY_ID_FIELD_DESC);
+          oprot.writeString(struct.gatewayId);
           oprot.writeFieldEnd();
         }
         oprot.writeFieldStop();
@@ -201089,26 +204010,28 @@ public class RegistryService {
 
     }
 
-    private static class updateGatewayGroups_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public updateGatewayGroups_argsTupleScheme getScheme() {
-        return new updateGatewayGroups_argsTupleScheme();
+    private static class getParser_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getParser_argsTupleScheme getScheme() {
+        return new getParser_argsTupleScheme();
       }
     }
 
-    private static class updateGatewayGroups_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<updateGatewayGroups_args> {
+    private static class getParser_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<getParser_args> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, updateGatewayGroups_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, getParser_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
-        struct.gatewayGroups.write(oprot);
+        oprot.writeString(struct.parserId);
+        oprot.writeString(struct.gatewayId);
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, updateGatewayGroups_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, getParser_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
-        struct.gatewayGroups = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups();
-        struct.gatewayGroups.read(iprot);
-        struct.setGatewayGroupsIsSet(true);
+        struct.parserId = iprot.readString();
+        struct.setParserIdIsSet(true);
+        struct.gatewayId = iprot.readString();
+        struct.setGatewayIdIsSet(true);
       }
     }
 
@@ -201117,18 +204040,21 @@ public class RegistryService {
     }
   }
 
-  public static class updateGatewayGroups_result implements org.apache.thrift.TBase<updateGatewayGroups_result, updateGatewayGroups_result._Fields>, java.io.Serializable, Cloneable, Comparable<updateGatewayGroups_result>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("updateGatewayGroups_result");
+  public static class getParser_result implements org.apache.thrift.TBase<getParser_result, getParser_result._Fields>, java.io.Serializable, Cloneable, Comparable<getParser_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getParser_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 RSE_FIELD_DESC = new org.apache.thrift.protocol.TField("rse", org.apache.thrift.protocol.TType.STRUCT, (short)1);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new updateGatewayGroups_resultStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new updateGatewayGroups_resultTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getParser_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getParser_resultTupleSchemeFactory();
 
+    public org.apache.airavata.model.appcatalog.parser.Parser success; // required
     public org.apache.airavata.registry.api.exception.RegistryServiceException rse; // 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"),
       RSE((short)1, "rse");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
@@ -201144,6 +204070,8 @@ public class RegistryService {
        */
       public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
+          case 0: // SUCCESS
+            return SUCCESS;
           case 1: // RSE
             return RSE;
           default:
@@ -201189,45 +204117,77 @@ public class RegistryService {
     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.parser.Parser.class)));
       tmpMap.put(_Fields.RSE, new org.apache.thrift.meta_data.FieldMetaData("rse", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.registry.api.exception.RegistryServiceException.class)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(updateGatewayGroups_result.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getParser_result.class, metaDataMap);
     }
 
-    public updateGatewayGroups_result() {
+    public getParser_result() {
     }
 
-    public updateGatewayGroups_result(
+    public getParser_result(
+      org.apache.airavata.model.appcatalog.parser.Parser success,
       org.apache.airavata.registry.api.exception.RegistryServiceException rse)
     {
       this();
+      this.success = success;
       this.rse = rse;
     }
 
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public updateGatewayGroups_result(updateGatewayGroups_result other) {
+    public getParser_result(getParser_result other) {
+      if (other.isSetSuccess()) {
+        this.success = new org.apache.airavata.model.appcatalog.parser.Parser(other.success);
+      }
       if (other.isSetRse()) {
         this.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException(other.rse);
       }
     }
 
-    public updateGatewayGroups_result deepCopy() {
-      return new updateGatewayGroups_result(this);
+    public getParser_result deepCopy() {
+      return new getParser_result(this);
     }
 
     @Override
     public void clear() {
+      this.success = null;
       this.rse = null;
     }
 
+    public org.apache.airavata.model.appcatalog.parser.Parser getSuccess() {
+      return this.success;
+    }
+
+    public getParser_result setSuccess(org.apache.airavata.model.appcatalog.parser.Parser 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.registry.api.exception.RegistryServiceException getRse() {
       return this.rse;
     }
 
-    public updateGatewayGroups_result setRse(org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
+    public getParser_result setRse(org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
       this.rse = rse;
       return this;
     }
@@ -201249,6 +204209,14 @@ public class RegistryService {
 
     public void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((org.apache.airavata.model.appcatalog.parser.Parser)value);
+        }
+        break;
+
       case RSE:
         if (value == null) {
           unsetRse();
@@ -201262,6 +204230,9 @@ public class RegistryService {
 
     public java.lang.Object getFieldValue(_Fields field) {
       switch (field) {
+      case SUCCESS:
+        return getSuccess();
+
       case RSE:
         return getRse();
 
@@ -201276,6 +204247,8 @@ public class RegistryService {
       }
 
       switch (field) {
+      case SUCCESS:
+        return isSetSuccess();
       case RSE:
         return isSetRse();
       }
@@ -201286,17 +204259,26 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof updateGatewayGroups_result)
-        return this.equals((updateGatewayGroups_result)that);
+      if (that instanceof getParser_result)
+        return this.equals((getParser_result)that);
       return false;
     }
 
-    public boolean equals(updateGatewayGroups_result that) {
+    public boolean equals(getParser_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_rse = true && this.isSetRse();
       boolean that_present_rse = true && that.isSetRse();
       if (this_present_rse || that_present_rse) {
@@ -201313,6 +204295,10 @@ public class RegistryService {
     public int hashCode() {
       int hashCode = 1;
 
+      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
+      if (isSetSuccess())
+        hashCode = hashCode * 8191 + success.hashCode();
+
       hashCode = hashCode * 8191 + ((isSetRse()) ? 131071 : 524287);
       if (isSetRse())
         hashCode = hashCode * 8191 + rse.hashCode();
@@ -201321,13 +204307,23 @@ public class RegistryService {
     }
 
     @Override
-    public int compareTo(updateGatewayGroups_result other) {
+    public int compareTo(getParser_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(isSetRse()).compareTo(other.isSetRse());
       if (lastComparison != 0) {
         return lastComparison;
@@ -201355,9 +204351,17 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("updateGatewayGroups_result(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("getParser_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("rse:");
       if (this.rse == null) {
         sb.append("null");
@@ -201372,6 +204376,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 {
@@ -201390,15 +204397,15 @@ public class RegistryService {
       }
     }
 
-    private static class updateGatewayGroups_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public updateGatewayGroups_resultStandardScheme getScheme() {
-        return new updateGatewayGroups_resultStandardScheme();
+    private static class getParser_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getParser_resultStandardScheme getScheme() {
+        return new getParser_resultStandardScheme();
       }
     }
 
-    private static class updateGatewayGroups_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<updateGatewayGroups_result> {
+    private static class getParser_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<getParser_result> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, updateGatewayGroups_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, getParser_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -201408,6 +204415,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.parser.Parser();
+                struct.success.read(iprot);
+                struct.setSuccessIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
             case 1: // RSE
               if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                 struct.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException();
@@ -201428,10 +204444,15 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, updateGatewayGroups_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, getParser_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.rse != null) {
           oprot.writeFieldBegin(RSE_FIELD_DESC);
           struct.rse.write(oprot);
@@ -201443,32 +204464,43 @@ public class RegistryService {
 
     }
 
-    private static class updateGatewayGroups_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public updateGatewayGroups_resultTupleScheme getScheme() {
-        return new updateGatewayGroups_resultTupleScheme();
+    private static class getParser_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getParser_resultTupleScheme getScheme() {
+        return new getParser_resultTupleScheme();
       }
     }
 
-    private static class updateGatewayGroups_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<updateGatewayGroups_result> {
+    private static class getParser_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<getParser_result> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, updateGatewayGroups_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, getParser_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.isSetRse()) {
+        if (struct.isSetSuccess()) {
           optionals.set(0);
         }
-        oprot.writeBitSet(optionals, 1);
+        if (struct.isSetRse()) {
+          optionals.set(1);
+        }
+        oprot.writeBitSet(optionals, 2);
+        if (struct.isSetSuccess()) {
+          struct.success.write(oprot);
+        }
         if (struct.isSetRse()) {
           struct.rse.write(oprot);
         }
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, updateGatewayGroups_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, getParser_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);
+        java.util.BitSet incoming = iprot.readBitSet(2);
         if (incoming.get(0)) {
+          struct.success = new org.apache.airavata.model.appcatalog.parser.Parser();
+          struct.success.read(iprot);
+          struct.setSuccessIsSet(true);
+        }
+        if (incoming.get(1)) {
           struct.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException();
           struct.rse.read(iprot);
           struct.setRseIsSet(true);
@@ -201481,19 +204513,19 @@ public class RegistryService {
     }
   }
 
-  public static class isGatewayGroupsExists_args implements org.apache.thrift.TBase<isGatewayGroupsExists_args, isGatewayGroupsExists_args._Fields>, java.io.Serializable, Cloneable, Comparable<isGatewayGroupsExists_args>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("isGatewayGroupsExists_args");
+  public static class saveParser_args implements org.apache.thrift.TBase<saveParser_args, saveParser_args._Fields>, java.io.Serializable, Cloneable, Comparable<saveParser_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("saveParser_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 PARSER_FIELD_DESC = new org.apache.thrift.protocol.TField("parser", org.apache.thrift.protocol.TType.STRUCT, (short)1);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new isGatewayGroupsExists_argsStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new isGatewayGroupsExists_argsTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new saveParser_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new saveParser_argsTupleSchemeFactory();
 
-    public java.lang.String gatewayId; // required
+    public org.apache.airavata.model.appcatalog.parser.Parser parser; // 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");
+      PARSER((short)1, "parser");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -201508,8 +204540,8 @@ public class RegistryService {
        */
       public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
-          case 1: // GATEWAY_ID
-            return GATEWAY_ID;
+          case 1: // PARSER
+            return PARSER;
           default:
             return null;
         }
@@ -201553,71 +204585,71 @@ public class RegistryService {
     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.PARSER, new org.apache.thrift.meta_data.FieldMetaData("parser", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.parser.Parser.class)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(isGatewayGroupsExists_args.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(saveParser_args.class, metaDataMap);
     }
 
-    public isGatewayGroupsExists_args() {
+    public saveParser_args() {
     }
 
-    public isGatewayGroupsExists_args(
-      java.lang.String gatewayId)
+    public saveParser_args(
+      org.apache.airavata.model.appcatalog.parser.Parser parser)
     {
       this();
-      this.gatewayId = gatewayId;
+      this.parser = parser;
     }
 
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public isGatewayGroupsExists_args(isGatewayGroupsExists_args other) {
-      if (other.isSetGatewayId()) {
-        this.gatewayId = other.gatewayId;
+    public saveParser_args(saveParser_args other) {
+      if (other.isSetParser()) {
+        this.parser = new org.apache.airavata.model.appcatalog.parser.Parser(other.parser);
       }
     }
 
-    public isGatewayGroupsExists_args deepCopy() {
-      return new isGatewayGroupsExists_args(this);
+    public saveParser_args deepCopy() {
+      return new saveParser_args(this);
     }
 
     @Override
     public void clear() {
-      this.gatewayId = null;
+      this.parser = null;
     }
 
-    public java.lang.String getGatewayId() {
-      return this.gatewayId;
+    public org.apache.airavata.model.appcatalog.parser.Parser getParser() {
+      return this.parser;
     }
 
-    public isGatewayGroupsExists_args setGatewayId(java.lang.String gatewayId) {
-      this.gatewayId = gatewayId;
+    public saveParser_args setParser(org.apache.airavata.model.appcatalog.parser.Parser parser) {
+      this.parser = parser;
       return this;
     }
 
-    public void unsetGatewayId() {
-      this.gatewayId = null;
+    public void unsetParser() {
+      this.parser = null;
     }
 
-    /** Returns true if field gatewayId is set (has been assigned a value) and false otherwise */
-    public boolean isSetGatewayId() {
-      return this.gatewayId != null;
+    /** Returns true if field parser is set (has been assigned a value) and false otherwise */
+    public boolean isSetParser() {
+      return this.parser != null;
     }
 
-    public void setGatewayIdIsSet(boolean value) {
+    public void setParserIsSet(boolean value) {
       if (!value) {
-        this.gatewayId = null;
+        this.parser = null;
       }
     }
 
     public void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
-      case GATEWAY_ID:
+      case PARSER:
         if (value == null) {
-          unsetGatewayId();
+          unsetParser();
         } else {
-          setGatewayId((java.lang.String)value);
+          setParser((org.apache.airavata.model.appcatalog.parser.Parser)value);
         }
         break;
 
@@ -201626,8 +204658,8 @@ public class RegistryService {
 
     public java.lang.Object getFieldValue(_Fields field) {
       switch (field) {
-      case GATEWAY_ID:
-        return getGatewayId();
+      case PARSER:
+        return getParser();
 
       }
       throw new java.lang.IllegalStateException();
@@ -201640,8 +204672,8 @@ public class RegistryService {
       }
 
       switch (field) {
-      case GATEWAY_ID:
-        return isSetGatewayId();
+      case PARSER:
+        return isSetParser();
       }
       throw new java.lang.IllegalStateException();
     }
@@ -201650,23 +204682,23 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof isGatewayGroupsExists_args)
-        return this.equals((isGatewayGroupsExists_args)that);
+      if (that instanceof saveParser_args)
+        return this.equals((saveParser_args)that);
       return false;
     }
 
-    public boolean equals(isGatewayGroupsExists_args that) {
+    public boolean equals(saveParser_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))
+      boolean this_present_parser = true && this.isSetParser();
+      boolean that_present_parser = true && that.isSetParser();
+      if (this_present_parser || that_present_parser) {
+        if (!(this_present_parser && that_present_parser))
           return false;
-        if (!this.gatewayId.equals(that.gatewayId))
+        if (!this.parser.equals(that.parser))
           return false;
       }
 
@@ -201677,27 +204709,27 @@ public class RegistryService {
     public int hashCode() {
       int hashCode = 1;
 
-      hashCode = hashCode * 8191 + ((isSetGatewayId()) ? 131071 : 524287);
-      if (isSetGatewayId())
-        hashCode = hashCode * 8191 + gatewayId.hashCode();
+      hashCode = hashCode * 8191 + ((isSetParser()) ? 131071 : 524287);
+      if (isSetParser())
+        hashCode = hashCode * 8191 + parser.hashCode();
 
       return hashCode;
     }
 
     @Override
-    public int compareTo(isGatewayGroupsExists_args other) {
+    public int compareTo(saveParser_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());
+      lastComparison = java.lang.Boolean.valueOf(isSetParser()).compareTo(other.isSetParser());
       if (lastComparison != 0) {
         return lastComparison;
       }
-      if (isSetGatewayId()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.gatewayId, other.gatewayId);
+      if (isSetParser()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.parser, other.parser);
         if (lastComparison != 0) {
           return lastComparison;
         }
@@ -201719,14 +204751,14 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("isGatewayGroupsExists_args(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("saveParser_args(");
       boolean first = true;
 
-      sb.append("gatewayId:");
-      if (this.gatewayId == null) {
+      sb.append("parser:");
+      if (this.parser == null) {
         sb.append("null");
       } else {
-        sb.append(this.gatewayId);
+        sb.append(this.parser);
       }
       first = false;
       sb.append(")");
@@ -201735,10 +204767,13 @@ public class RegistryService {
 
     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());
+      if (parser == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'parser' was not present! Struct: " + toString());
       }
       // check for sub-struct validity
+      if (parser != null) {
+        parser.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -201757,15 +204792,15 @@ public class RegistryService {
       }
     }
 
-    private static class isGatewayGroupsExists_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public isGatewayGroupsExists_argsStandardScheme getScheme() {
-        return new isGatewayGroupsExists_argsStandardScheme();
+    private static class saveParser_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public saveParser_argsStandardScheme getScheme() {
+        return new saveParser_argsStandardScheme();
       }
     }
 
-    private static class isGatewayGroupsExists_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<isGatewayGroupsExists_args> {
+    private static class saveParser_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<saveParser_args> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, isGatewayGroupsExists_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, saveParser_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -201775,10 +204810,11 @@ public class RegistryService {
             break;
           }
           switch (schemeField.id) {
-            case 1: // GATEWAY_ID
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-                struct.gatewayId = iprot.readString();
-                struct.setGatewayIdIsSet(true);
+            case 1: // PARSER
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.parser = new org.apache.airavata.model.appcatalog.parser.Parser();
+                struct.parser.read(iprot);
+                struct.setParserIsSet(true);
               } else { 
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
@@ -201794,13 +204830,13 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, isGatewayGroupsExists_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, saveParser_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);
+        if (struct.parser != null) {
+          oprot.writeFieldBegin(PARSER_FIELD_DESC);
+          struct.parser.write(oprot);
           oprot.writeFieldEnd();
         }
         oprot.writeFieldStop();
@@ -201809,25 +204845,26 @@ public class RegistryService {
 
     }
 
-    private static class isGatewayGroupsExists_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public isGatewayGroupsExists_argsTupleScheme getScheme() {
-        return new isGatewayGroupsExists_argsTupleScheme();
+    private static class saveParser_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public saveParser_argsTupleScheme getScheme() {
+        return new saveParser_argsTupleScheme();
       }
     }
 
-    private static class isGatewayGroupsExists_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<isGatewayGroupsExists_args> {
+    private static class saveParser_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<saveParser_args> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, isGatewayGroupsExists_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, saveParser_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
-        oprot.writeString(struct.gatewayId);
+        struct.parser.write(oprot);
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, isGatewayGroupsExists_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, saveParser_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);
+        struct.parser = new org.apache.airavata.model.appcatalog.parser.Parser();
+        struct.parser.read(iprot);
+        struct.setParserIsSet(true);
       }
     }
 
@@ -201836,16 +204873,16 @@ public class RegistryService {
     }
   }
 
-  public static class isGatewayGroupsExists_result implements org.apache.thrift.TBase<isGatewayGroupsExists_result, isGatewayGroupsExists_result._Fields>, java.io.Serializable, Cloneable, Comparable<isGatewayGroupsExists_result>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("isGatewayGroupsExists_result");
+  public static class saveParser_result implements org.apache.thrift.TBase<saveParser_result, saveParser_result._Fields>, java.io.Serializable, Cloneable, Comparable<saveParser_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("saveParser_result");
 
-    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.BOOL, (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.STRING, (short)0);
     private static final org.apache.thrift.protocol.TField RSE_FIELD_DESC = new org.apache.thrift.protocol.TField("rse", org.apache.thrift.protocol.TType.STRUCT, (short)1);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new isGatewayGroupsExists_resultStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new isGatewayGroupsExists_resultTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new saveParser_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new saveParser_resultTupleSchemeFactory();
 
-    public boolean success; // required
+    public java.lang.String success; // required
     public org.apache.airavata.registry.api.exception.RegistryServiceException rse; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
@@ -201910,82 +204947,80 @@ public class RegistryService {
     }
 
     // isset id assignments
-    private static final int __SUCCESS_ISSET_ID = 0;
-    private byte __isset_bitfield = 0;
     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.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       tmpMap.put(_Fields.RSE, new org.apache.thrift.meta_data.FieldMetaData("rse", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.registry.api.exception.RegistryServiceException.class)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(isGatewayGroupsExists_result.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(saveParser_result.class, metaDataMap);
     }
 
-    public isGatewayGroupsExists_result() {
+    public saveParser_result() {
     }
 
-    public isGatewayGroupsExists_result(
-      boolean success,
+    public saveParser_result(
+      java.lang.String success,
       org.apache.airavata.registry.api.exception.RegistryServiceException rse)
     {
       this();
       this.success = success;
-      setSuccessIsSet(true);
       this.rse = rse;
     }
 
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public isGatewayGroupsExists_result(isGatewayGroupsExists_result other) {
-      __isset_bitfield = other.__isset_bitfield;
-      this.success = other.success;
+    public saveParser_result(saveParser_result other) {
+      if (other.isSetSuccess()) {
+        this.success = other.success;
+      }
       if (other.isSetRse()) {
         this.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException(other.rse);
       }
     }
 
-    public isGatewayGroupsExists_result deepCopy() {
-      return new isGatewayGroupsExists_result(this);
+    public saveParser_result deepCopy() {
+      return new saveParser_result(this);
     }
 
     @Override
     public void clear() {
-      setSuccessIsSet(false);
-      this.success = false;
+      this.success = null;
       this.rse = null;
     }
 
-    public boolean isSuccess() {
+    public java.lang.String getSuccess() {
       return this.success;
     }
 
-    public isGatewayGroupsExists_result setSuccess(boolean success) {
+    public saveParser_result setSuccess(java.lang.String success) {
       this.success = success;
-      setSuccessIsSet(true);
       return this;
     }
 
     public void unsetSuccess() {
-      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
+      this.success = null;
     }
 
     /** Returns true if field success is set (has been assigned a value) and false otherwise */
     public boolean isSetSuccess() {
-      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
+      return this.success != null;
     }
 
     public void setSuccessIsSet(boolean value) {
-      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
+      if (!value) {
+        this.success = null;
+      }
     }
 
     public org.apache.airavata.registry.api.exception.RegistryServiceException getRse() {
       return this.rse;
     }
 
-    public isGatewayGroupsExists_result setRse(org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
+    public saveParser_result setRse(org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
       this.rse = rse;
       return this;
     }
@@ -202011,7 +205046,7 @@ public class RegistryService {
         if (value == null) {
           unsetSuccess();
         } else {
-          setSuccess((java.lang.Boolean)value);
+          setSuccess((java.lang.String)value);
         }
         break;
 
@@ -202029,7 +205064,7 @@ public class RegistryService {
     public java.lang.Object getFieldValue(_Fields field) {
       switch (field) {
       case SUCCESS:
-        return isSuccess();
+        return getSuccess();
 
       case RSE:
         return getRse();
@@ -202057,23 +205092,23 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof isGatewayGroupsExists_result)
-        return this.equals((isGatewayGroupsExists_result)that);
+      if (that instanceof saveParser_result)
+        return this.equals((saveParser_result)that);
       return false;
     }
 
-    public boolean equals(isGatewayGroupsExists_result that) {
+    public boolean equals(saveParser_result that) {
       if (that == null)
         return false;
       if (this == that)
         return true;
 
-      boolean this_present_success = true;
-      boolean that_present_success = 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 != that.success)
+        if (!this.success.equals(that.success))
           return false;
       }
 
@@ -202093,7 +205128,9 @@ public class RegistryService {
     public int hashCode() {
       int hashCode = 1;
 
-      hashCode = hashCode * 8191 + ((success) ? 131071 : 524287);
+      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
+      if (isSetSuccess())
+        hashCode = hashCode * 8191 + success.hashCode();
 
       hashCode = hashCode * 8191 + ((isSetRse()) ? 131071 : 524287);
       if (isSetRse())
@@ -202103,7 +205140,7 @@ public class RegistryService {
     }
 
     @Override
-    public int compareTo(isGatewayGroupsExists_result other) {
+    public int compareTo(saveParser_result other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
@@ -202147,11 +205184,15 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("isGatewayGroupsExists_result(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("saveParser_result(");
       boolean first = true;
 
       sb.append("success:");
-      sb.append(this.success);
+      if (this.success == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.success);
+      }
       first = false;
       if (!first) sb.append(", ");
       sb.append("rse:");
@@ -202180,23 +205221,21 @@ public class RegistryService {
 
     private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
       try {
-        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
-        __isset_bitfield = 0;
         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 isGatewayGroupsExists_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public isGatewayGroupsExists_resultStandardScheme getScheme() {
-        return new isGatewayGroupsExists_resultStandardScheme();
+    private static class saveParser_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public saveParser_resultStandardScheme getScheme() {
+        return new saveParser_resultStandardScheme();
       }
     }
 
-    private static class isGatewayGroupsExists_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<isGatewayGroupsExists_result> {
+    private static class saveParser_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<saveParser_result> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, isGatewayGroupsExists_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, saveParser_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -202207,8 +205246,8 @@ public class RegistryService {
           }
           switch (schemeField.id) {
             case 0: // SUCCESS
-              if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
-                struct.success = iprot.readBool();
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.success = iprot.readString();
                 struct.setSuccessIsSet(true);
               } else { 
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
@@ -202234,13 +205273,13 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, isGatewayGroupsExists_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, saveParser_result struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
-        if (struct.isSetSuccess()) {
+        if (struct.success != null) {
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
-          oprot.writeBool(struct.success);
+          oprot.writeString(struct.success);
           oprot.writeFieldEnd();
         }
         if (struct.rse != null) {
@@ -202254,16 +205293,16 @@ public class RegistryService {
 
     }
 
-    private static class isGatewayGroupsExists_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public isGatewayGroupsExists_resultTupleScheme getScheme() {
-        return new isGatewayGroupsExists_resultTupleScheme();
+    private static class saveParser_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public saveParser_resultTupleScheme getScheme() {
+        return new saveParser_resultTupleScheme();
       }
     }
 
-    private static class isGatewayGroupsExists_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<isGatewayGroupsExists_result> {
+    private static class saveParser_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<saveParser_result> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, isGatewayGroupsExists_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, saveParser_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()) {
@@ -202274,7 +205313,7 @@ public class RegistryService {
         }
         oprot.writeBitSet(optionals, 2);
         if (struct.isSetSuccess()) {
-          oprot.writeBool(struct.success);
+          oprot.writeString(struct.success);
         }
         if (struct.isSetRse()) {
           struct.rse.write(oprot);
@@ -202282,11 +205321,11 @@ public class RegistryService {
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, isGatewayGroupsExists_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, saveParser_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(2);
         if (incoming.get(0)) {
-          struct.success = iprot.readBool();
+          struct.success = iprot.readString();
           struct.setSuccessIsSet(true);
         }
         if (incoming.get(1)) {
@@ -202302,13 +205341,13 @@ public class RegistryService {
     }
   }
 
-  public static class getGatewayGroups_args implements org.apache.thrift.TBase<getGatewayGroups_args, getGatewayGroups_args._Fields>, java.io.Serializable, Cloneable, Comparable<getGatewayGroups_args>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getGatewayGroups_args");
+  public static class listAllParsers_args implements org.apache.thrift.TBase<listAllParsers_args, listAllParsers_args._Fields>, java.io.Serializable, Cloneable, Comparable<listAllParsers_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("listAllParsers_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.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getGatewayGroups_argsStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getGatewayGroups_argsTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new listAllParsers_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new listAllParsers_argsTupleSchemeFactory();
 
     public java.lang.String gatewayId; // required
 
@@ -202377,13 +205416,13 @@ public class RegistryService {
       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)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getGatewayGroups_args.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(listAllParsers_args.class, metaDataMap);
     }
 
-    public getGatewayGroups_args() {
+    public listAllParsers_args() {
     }
 
-    public getGatewayGroups_args(
+    public listAllParsers_args(
       java.lang.String gatewayId)
     {
       this();
@@ -202393,14 +205432,14 @@ public class RegistryService {
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public getGatewayGroups_args(getGatewayGroups_args other) {
+    public listAllParsers_args(listAllParsers_args other) {
       if (other.isSetGatewayId()) {
         this.gatewayId = other.gatewayId;
       }
     }
 
-    public getGatewayGroups_args deepCopy() {
-      return new getGatewayGroups_args(this);
+    public listAllParsers_args deepCopy() {
+      return new listAllParsers_args(this);
     }
 
     @Override
@@ -202412,7 +205451,7 @@ public class RegistryService {
       return this.gatewayId;
     }
 
-    public getGatewayGroups_args setGatewayId(java.lang.String gatewayId) {
+    public listAllParsers_args setGatewayId(java.lang.String gatewayId) {
       this.gatewayId = gatewayId;
       return this;
     }
@@ -202471,12 +205510,12 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof getGatewayGroups_args)
-        return this.equals((getGatewayGroups_args)that);
+      if (that instanceof listAllParsers_args)
+        return this.equals((listAllParsers_args)that);
       return false;
     }
 
-    public boolean equals(getGatewayGroups_args that) {
+    public boolean equals(listAllParsers_args that) {
       if (that == null)
         return false;
       if (this == that)
@@ -202506,7 +205545,7 @@ public class RegistryService {
     }
 
     @Override
-    public int compareTo(getGatewayGroups_args other) {
+    public int compareTo(listAllParsers_args other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
@@ -202540,7 +205579,7 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("getGatewayGroups_args(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("listAllParsers_args(");
       boolean first = true;
 
       sb.append("gatewayId:");
@@ -202578,15 +205617,15 @@ public class RegistryService {
       }
     }
 
-    private static class getGatewayGroups_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public getGatewayGroups_argsStandardScheme getScheme() {
-        return new getGatewayGroups_argsStandardScheme();
+    private static class listAllParsers_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public listAllParsers_argsStandardScheme getScheme() {
+        return new listAllParsers_argsStandardScheme();
       }
     }
 
-    private static class getGatewayGroups_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<getGatewayGroups_args> {
+    private static class listAllParsers_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<listAllParsers_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, listAllParsers_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -202615,7 +205654,7 @@ public class RegistryService {
         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, listAllParsers_args struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
@@ -202630,22 +205669,22 @@ public class RegistryService {
 
     }
 
-    private static class getGatewayGroups_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public getGatewayGroups_argsTupleScheme getScheme() {
-        return new getGatewayGroups_argsTupleScheme();
+    private static class listAllParsers_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public listAllParsers_argsTupleScheme getScheme() {
+        return new listAllParsers_argsTupleScheme();
       }
     }
 
-    private static class getGatewayGroups_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<getGatewayGroups_args> {
+    private static class listAllParsers_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<listAllParsers_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, listAllParsers_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         oprot.writeString(struct.gatewayId);
       }
 
       @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, listAllParsers_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);
@@ -202657,16 +205696,16 @@ public class RegistryService {
     }
   }
 
-  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 listAllParsers_result implements org.apache.thrift.TBase<listAllParsers_result, listAllParsers_result._Fields>, java.io.Serializable, Cloneable, Comparable<listAllParsers_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("listAllParsers_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.protocol.TField RSE_FIELD_DESC = new org.apache.thrift.protocol.TField("rse", org.apache.thrift.protocol.TType.STRUCT, (short)1);
 
-    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 listAllParsers_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new listAllParsers_resultTupleSchemeFactory();
 
-    public org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups success; // required
+    public java.util.List<org.apache.airavata.model.appcatalog.parser.Parser> success; // required
     public org.apache.airavata.registry.api.exception.RegistryServiceException rse; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
@@ -202735,18 +205774,19 @@ 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.gatewaygroups.GatewayGroups.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.parser.Parser.class))));
       tmpMap.put(_Fields.RSE, new org.apache.thrift.meta_data.FieldMetaData("rse", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.registry.api.exception.RegistryServiceException.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(listAllParsers_result.class, metaDataMap);
     }
 
-    public getGatewayGroups_result() {
+    public listAllParsers_result() {
     }
 
-    public getGatewayGroups_result(
-      org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups success,
+    public listAllParsers_result(
+      java.util.List<org.apache.airavata.model.appcatalog.parser.Parser> success,
       org.apache.airavata.registry.api.exception.RegistryServiceException rse)
     {
       this();
@@ -202757,17 +205797,21 @@ public class RegistryService {
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public getGatewayGroups_result(getGatewayGroups_result other) {
+    public listAllParsers_result(listAllParsers_result other) {
       if (other.isSetSuccess()) {
-        this.success = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups(other.success);
+        java.util.List<org.apache.airavata.model.appcatalog.parser.Parser> __this__success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.parser.Parser>(other.success.size());
+        for (org.apache.airavata.model.appcatalog.parser.Parser other_element : other.success) {
+          __this__success.add(new org.apache.airavata.model.appcatalog.parser.Parser(other_element));
+        }
+        this.success = __this__success;
       }
       if (other.isSetRse()) {
         this.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException(other.rse);
       }
     }
 
-    public getGatewayGroups_result deepCopy() {
-      return new getGatewayGroups_result(this);
+    public listAllParsers_result deepCopy() {
+      return new listAllParsers_result(this);
     }
 
     @Override
@@ -202776,11 +205820,26 @@ public class RegistryService {
       this.rse = null;
     }
 
-    public org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups getSuccess() {
+    public int getSuccessSize() {
+      return (this.success == null) ? 0 : this.success.size();
+    }
+
+    public java.util.Iterator<org.apache.airavata.model.appcatalog.parser.Parser> getSuccessIterator() {
+      return (this.success == null) ? null : this.success.iterator();
+    }
+
+    public void addToSuccess(org.apache.airavata.model.appcatalog.parser.Parser elem) {
+      if (this.success == null) {
+        this.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.parser.Parser>();
+      }
+      this.success.add(elem);
+    }
+
+    public java.util.List<org.apache.airavata.model.appcatalog.parser.Parser> getSuccess() {
       return this.success;
     }
 
-    public getGatewayGroups_result setSuccess(org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups success) {
+    public listAllParsers_result setSuccess(java.util.List<org.apache.airavata.model.appcatalog.parser.Parser> success) {
       this.success = success;
       return this;
     }
@@ -202804,7 +205863,7 @@ public class RegistryService {
       return this.rse;
     }
 
-    public getGatewayGroups_result setRse(org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
+    public listAllParsers_result setRse(org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
       this.rse = rse;
       return this;
     }
@@ -202830,7 +205889,7 @@ public class RegistryService {
         if (value == null) {
           unsetSuccess();
         } else {
-          setSuccess((org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups)value);
+          setSuccess((java.util.List<org.apache.airavata.model.appcatalog.parser.Parser>)value);
         }
         break;
 
@@ -202876,12 +205935,12 @@ public class RegistryService {
     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 listAllParsers_result)
+        return this.equals((listAllParsers_result)that);
       return false;
     }
 
-    public boolean equals(getGatewayGroups_result that) {
+    public boolean equals(listAllParsers_result that) {
       if (that == null)
         return false;
       if (this == that)
@@ -202924,7 +205983,7 @@ public class RegistryService {
     }
 
     @Override
-    public int compareTo(getGatewayGroups_result other) {
+    public int compareTo(listAllParsers_result other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
@@ -202968,7 +206027,7 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("getGatewayGroups_result(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("listAllParsers_result(");
       boolean first = true;
 
       sb.append("success:");
@@ -202993,9 +206052,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 {
@@ -203014,15 +206070,15 @@ public class RegistryService {
       }
     }
 
-    private static class getGatewayGroups_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public getGatewayGroups_resultStandardScheme getScheme() {
-        return new getGatewayGroups_resultStandardScheme();
+    private static class listAllParsers_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public listAllParsers_resultStandardScheme getScheme() {
+        return new listAllParsers_resultStandardScheme();
       }
     }
 
-    private static class getGatewayGroups_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<getGatewayGroups_result> {
+    private static class listAllParsers_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<listAllParsers_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, listAllParsers_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -203033,9 +206089,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.gatewaygroups.GatewayGroups();
-                struct.success.read(iprot);
+              if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+                {
+                  org.apache.thrift.protocol.TList _list498 = iprot.readListBegin();
+                  struct.success = new java.util.ArrayList<org.apache.airavata.model.appcatalog.parser.Parser>(_list498.size);
+                  org.apache.airavata.model.appcatalog.parser.Parser _elem499;
+                  for (int _i500 = 0; _i500 < _list498.size; ++_i500)
+                  {
+                    _elem499 = new org.apache.airavata.model.appcatalog.parser.Parser();
+                    _elem499.read(iprot);
+                    struct.success.add(_elem499);
+                  }
+                  iprot.readListEnd();
+                }
                 struct.setSuccessIsSet(true);
               } else { 
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
@@ -203061,13 +206127,20 @@ public class RegistryService {
         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, listAllParsers_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.parser.Parser _iter501 : struct.success)
+            {
+              _iter501.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
           oprot.writeFieldEnd();
         }
         if (struct.rse != null) {
@@ -203081,16 +206154,16 @@ public class RegistryService {
 
     }
 
-    private static class getGatewayGroups_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public getGatewayGroups_resultTupleScheme getScheme() {
-        return new getGatewayGroups_resultTupleScheme();
+    private static class listAllParsers_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public listAllParsers_resultTupleScheme getScheme() {
+        return new listAllParsers_resultTupleScheme();
       }
     }
 
-    private static class getGatewayGroups_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<getGatewayGroups_result> {
+    private static class listAllParsers_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<listAllParsers_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, listAllParsers_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()) {
@@ -203101,7 +206174,13 @@ public class RegistryService {
         }
         oprot.writeBitSet(optionals, 2);
         if (struct.isSetSuccess()) {
-          struct.success.write(oprot);
+          {
+            oprot.writeI32(struct.success.size());
+            for (org.apache.airavata.model.appcatalog.parser.Parser _iter502 : struct.success)
+            {
+              _iter502.write(oprot);
+            }
+          }
         }
         if (struct.isSetRse()) {
           struct.rse.write(oprot);
@@ -203109,12 +206188,21 @@ public class RegistryService {
       }
 
       @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, listAllParsers_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(2);
         if (incoming.get(0)) {
-          struct.success = new org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups();
-          struct.success.read(iprot);
+          {
+            org.apache.thrift.protocol.TList _list503 = 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.parser.Parser>(_list503.size);
+            org.apache.airavata.model.appcatalog.parser.Parser _elem504;
+            for (int _i505 = 0; _i505 < _list503.size; ++_i505)
+            {
+              _elem504 = new org.apache.airavata.model.appcatalog.parser.Parser();
+              _elem504.read(iprot);
+              struct.success.add(_elem504);
+            }
+          }
           struct.setSuccessIsSet(true);
         }
         if (incoming.get(1)) {
@@ -203130,14 +206218,14 @@ public class RegistryService {
     }
   }
 
-  public static class getParser_args implements org.apache.thrift.TBase<getParser_args, getParser_args._Fields>, java.io.Serializable, Cloneable, Comparable<getParser_args>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getParser_args");
+  public static class removeParser_args implements org.apache.thrift.TBase<removeParser_args, removeParser_args._Fields>, java.io.Serializable, Cloneable, Comparable<removeParser_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("removeParser_args");
 
     private static final org.apache.thrift.protocol.TField PARSER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("parserId", org.apache.thrift.protocol.TType.STRING, (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.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getParser_argsStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getParser_argsTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new removeParser_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new removeParser_argsTupleSchemeFactory();
 
     public java.lang.String parserId; // required
     public java.lang.String gatewayId; // required
@@ -203212,13 +206300,13 @@ public class RegistryService {
       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)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getParser_args.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(removeParser_args.class, metaDataMap);
     }
 
-    public getParser_args() {
+    public removeParser_args() {
     }
 
-    public getParser_args(
+    public removeParser_args(
       java.lang.String parserId,
       java.lang.String gatewayId)
     {
@@ -203230,7 +206318,7 @@ public class RegistryService {
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public getParser_args(getParser_args other) {
+    public removeParser_args(removeParser_args other) {
       if (other.isSetParserId()) {
         this.parserId = other.parserId;
       }
@@ -203239,8 +206327,8 @@ public class RegistryService {
       }
     }
 
-    public getParser_args deepCopy() {
-      return new getParser_args(this);
+    public removeParser_args deepCopy() {
+      return new removeParser_args(this);
     }
 
     @Override
@@ -203253,7 +206341,7 @@ public class RegistryService {
       return this.parserId;
     }
 
-    public getParser_args setParserId(java.lang.String parserId) {
+    public removeParser_args setParserId(java.lang.String parserId) {
       this.parserId = parserId;
       return this;
     }
@@ -203277,7 +206365,7 @@ public class RegistryService {
       return this.gatewayId;
     }
 
-    public getParser_args setGatewayId(java.lang.String gatewayId) {
+    public removeParser_args setGatewayId(java.lang.String gatewayId) {
       this.gatewayId = gatewayId;
       return this;
     }
@@ -203349,12 +206437,12 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof getParser_args)
-        return this.equals((getParser_args)that);
+      if (that instanceof removeParser_args)
+        return this.equals((removeParser_args)that);
       return false;
     }
 
-    public boolean equals(getParser_args that) {
+    public boolean equals(removeParser_args that) {
       if (that == null)
         return false;
       if (this == that)
@@ -203397,7 +206485,7 @@ public class RegistryService {
     }
 
     @Override
-    public int compareTo(getParser_args other) {
+    public int compareTo(removeParser_args other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
@@ -203441,7 +206529,7 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("getParser_args(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("removeParser_args(");
       boolean first = true;
 
       sb.append("parserId:");
@@ -203490,15 +206578,15 @@ public class RegistryService {
       }
     }
 
-    private static class getParser_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public getParser_argsStandardScheme getScheme() {
-        return new getParser_argsStandardScheme();
+    private static class removeParser_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public removeParser_argsStandardScheme getScheme() {
+        return new removeParser_argsStandardScheme();
       }
     }
 
-    private static class getParser_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<getParser_args> {
+    private static class removeParser_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<removeParser_args> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, getParser_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, removeParser_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -203535,7 +206623,7 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, getParser_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, removeParser_args struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
@@ -203555,23 +206643,23 @@ public class RegistryService {
 
     }
 
-    private static class getParser_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public getParser_argsTupleScheme getScheme() {
-        return new getParser_argsTupleScheme();
+    private static class removeParser_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public removeParser_argsTupleScheme getScheme() {
+        return new removeParser_argsTupleScheme();
       }
     }
 
-    private static class getParser_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<getParser_args> {
+    private static class removeParser_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<removeParser_args> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, getParser_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, removeParser_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         oprot.writeString(struct.parserId);
         oprot.writeString(struct.gatewayId);
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, getParser_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, removeParser_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         struct.parserId = iprot.readString();
         struct.setParserIdIsSet(true);
@@ -203585,21 +206673,18 @@ public class RegistryService {
     }
   }
 
-  public static class getParser_result implements org.apache.thrift.TBase<getParser_result, getParser_result._Fields>, java.io.Serializable, Cloneable, Comparable<getParser_result>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getParser_result");
+  public static class removeParser_result implements org.apache.thrift.TBase<removeParser_result, removeParser_result._Fields>, java.io.Serializable, Cloneable, Comparable<removeParser_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("removeParser_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 RSE_FIELD_DESC = new org.apache.thrift.protocol.TField("rse", org.apache.thrift.protocol.TType.STRUCT, (short)1);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getParser_resultStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getParser_resultTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new removeParser_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new removeParser_resultTupleSchemeFactory();
 
-    public org.apache.airavata.model.appcatalog.parser.Parser success; // required
     public org.apache.airavata.registry.api.exception.RegistryServiceException rse; // 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"),
       RSE((short)1, "rse");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
@@ -203615,8 +206700,6 @@ public class RegistryService {
        */
       public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
-          case 0: // SUCCESS
-            return SUCCESS;
           case 1: // RSE
             return RSE;
           default:
@@ -203662,77 +206745,45 @@ public class RegistryService {
     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.parser.Parser.class)));
       tmpMap.put(_Fields.RSE, new org.apache.thrift.meta_data.FieldMetaData("rse", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.registry.api.exception.RegistryServiceException.class)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getParser_result.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(removeParser_result.class, metaDataMap);
     }
 
-    public getParser_result() {
+    public removeParser_result() {
     }
 
-    public getParser_result(
-      org.apache.airavata.model.appcatalog.parser.Parser success,
+    public removeParser_result(
       org.apache.airavata.registry.api.exception.RegistryServiceException rse)
     {
       this();
-      this.success = success;
       this.rse = rse;
     }
 
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public getParser_result(getParser_result other) {
-      if (other.isSetSuccess()) {
-        this.success = new org.apache.airavata.model.appcatalog.parser.Parser(other.success);
-      }
+    public removeParser_result(removeParser_result other) {
       if (other.isSetRse()) {
         this.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException(other.rse);
       }
     }
 
-    public getParser_result deepCopy() {
-      return new getParser_result(this);
+    public removeParser_result deepCopy() {
+      return new removeParser_result(this);
     }
 
     @Override
     public void clear() {
-      this.success = null;
       this.rse = null;
     }
 
-    public org.apache.airavata.model.appcatalog.parser.Parser getSuccess() {
-      return this.success;
-    }
-
-    public getParser_result setSuccess(org.apache.airavata.model.appcatalog.parser.Parser 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.registry.api.exception.RegistryServiceException getRse() {
       return this.rse;
     }
 
-    public getParser_result setRse(org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
+    public removeParser_result setRse(org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
       this.rse = rse;
       return this;
     }
@@ -203754,14 +206805,6 @@ public class RegistryService {
 
     public void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
-      case SUCCESS:
-        if (value == null) {
-          unsetSuccess();
-        } else {
-          setSuccess((org.apache.airavata.model.appcatalog.parser.Parser)value);
-        }
-        break;
-
       case RSE:
         if (value == null) {
           unsetRse();
@@ -203775,9 +206818,6 @@ public class RegistryService {
 
     public java.lang.Object getFieldValue(_Fields field) {
       switch (field) {
-      case SUCCESS:
-        return getSuccess();
-
       case RSE:
         return getRse();
 
@@ -203792,8 +206832,6 @@ public class RegistryService {
       }
 
       switch (field) {
-      case SUCCESS:
-        return isSetSuccess();
       case RSE:
         return isSetRse();
       }
@@ -203804,26 +206842,17 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof getParser_result)
-        return this.equals((getParser_result)that);
+      if (that instanceof removeParser_result)
+        return this.equals((removeParser_result)that);
       return false;
     }
 
-    public boolean equals(getParser_result that) {
+    public boolean equals(removeParser_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_rse = true && this.isSetRse();
       boolean that_present_rse = true && that.isSetRse();
       if (this_present_rse || that_present_rse) {
@@ -203840,10 +206869,6 @@ public class RegistryService {
     public int hashCode() {
       int hashCode = 1;
 
-      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
-      if (isSetSuccess())
-        hashCode = hashCode * 8191 + success.hashCode();
-
       hashCode = hashCode * 8191 + ((isSetRse()) ? 131071 : 524287);
       if (isSetRse())
         hashCode = hashCode * 8191 + rse.hashCode();
@@ -203852,23 +206877,13 @@ public class RegistryService {
     }
 
     @Override
-    public int compareTo(getParser_result other) {
+    public int compareTo(removeParser_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(isSetRse()).compareTo(other.isSetRse());
       if (lastComparison != 0) {
         return lastComparison;
@@ -203896,17 +206911,9 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("getParser_result(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("removeParser_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("rse:");
       if (this.rse == null) {
         sb.append("null");
@@ -203921,9 +206928,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 {
@@ -203942,15 +206946,15 @@ public class RegistryService {
       }
     }
 
-    private static class getParser_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public getParser_resultStandardScheme getScheme() {
-        return new getParser_resultStandardScheme();
+    private static class removeParser_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public removeParser_resultStandardScheme getScheme() {
+        return new removeParser_resultStandardScheme();
       }
     }
 
-    private static class getParser_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<getParser_result> {
+    private static class removeParser_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<removeParser_result> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, getParser_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, removeParser_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -203960,15 +206964,6 @@ 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.parser.Parser();
-                struct.success.read(iprot);
-                struct.setSuccessIsSet(true);
-              } else { 
-                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-              }
-              break;
             case 1: // RSE
               if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                 struct.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException();
@@ -203989,15 +206984,10 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, getParser_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, removeParser_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.rse != null) {
           oprot.writeFieldBegin(RSE_FIELD_DESC);
           struct.rse.write(oprot);
@@ -204009,43 +206999,32 @@ public class RegistryService {
 
     }
 
-    private static class getParser_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public getParser_resultTupleScheme getScheme() {
-        return new getParser_resultTupleScheme();
+    private static class removeParser_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public removeParser_resultTupleScheme getScheme() {
+        return new removeParser_resultTupleScheme();
       }
     }
 
-    private static class getParser_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<getParser_result> {
+    private static class removeParser_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<removeParser_result> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, getParser_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, removeParser_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.isSetRse()) {
-          optionals.set(1);
-        }
-        oprot.writeBitSet(optionals, 2);
-        if (struct.isSetSuccess()) {
-          struct.success.write(oprot);
+          optionals.set(0);
         }
+        oprot.writeBitSet(optionals, 1);
         if (struct.isSetRse()) {
           struct.rse.write(oprot);
         }
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, getParser_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, removeParser_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(2);
+        java.util.BitSet incoming = iprot.readBitSet(1);
         if (incoming.get(0)) {
-          struct.success = new org.apache.airavata.model.appcatalog.parser.Parser();
-          struct.success.read(iprot);
-          struct.setSuccessIsSet(true);
-        }
-        if (incoming.get(1)) {
           struct.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException();
           struct.rse.read(iprot);
           struct.setRseIsSet(true);
@@ -204058,19 +207037,22 @@ public class RegistryService {
     }
   }
 
-  public static class saveParser_args implements org.apache.thrift.TBase<saveParser_args, saveParser_args._Fields>, java.io.Serializable, Cloneable, Comparable<saveParser_args>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("saveParser_args");
+  public static class getParserInput_args implements org.apache.thrift.TBase<getParserInput_args, getParserInput_args._Fields>, java.io.Serializable, Cloneable, Comparable<getParserInput_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getParserInput_args");
 
-    private static final org.apache.thrift.protocol.TField PARSER_FIELD_DESC = new org.apache.thrift.protocol.TField("parser", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+    private static final org.apache.thrift.protocol.TField PARSER_INPUT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("parserInputId", org.apache.thrift.protocol.TType.STRING, (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.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new saveParser_argsStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new saveParser_argsTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getParserInput_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getParserInput_argsTupleSchemeFactory();
 
-    public org.apache.airavata.model.appcatalog.parser.Parser parser; // required
+    public java.lang.String parserInputId; // required
+    public java.lang.String gatewayId; // 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 {
-      PARSER((short)1, "parser");
+      PARSER_INPUT_ID((short)1, "parserInputId"),
+      GATEWAY_ID((short)2, "gatewayId");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -204085,8 +207067,10 @@ public class RegistryService {
        */
       public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
-          case 1: // PARSER
-            return PARSER;
+          case 1: // PARSER_INPUT_ID
+            return PARSER_INPUT_ID;
+          case 2: // GATEWAY_ID
+            return GATEWAY_ID;
           default:
             return null;
         }
@@ -204130,71 +207114,111 @@ public class RegistryService {
     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.PARSER, new org.apache.thrift.meta_data.FieldMetaData("parser", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.parser.Parser.class)));
+      tmpMap.put(_Fields.PARSER_INPUT_ID, new org.apache.thrift.meta_data.FieldMetaData("parserInputId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      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)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(saveParser_args.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getParserInput_args.class, metaDataMap);
     }
 
-    public saveParser_args() {
+    public getParserInput_args() {
     }
 
-    public saveParser_args(
-      org.apache.airavata.model.appcatalog.parser.Parser parser)
+    public getParserInput_args(
+      java.lang.String parserInputId,
+      java.lang.String gatewayId)
     {
       this();
-      this.parser = parser;
+      this.parserInputId = parserInputId;
+      this.gatewayId = gatewayId;
     }
 
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public saveParser_args(saveParser_args other) {
-      if (other.isSetParser()) {
-        this.parser = new org.apache.airavata.model.appcatalog.parser.Parser(other.parser);
+    public getParserInput_args(getParserInput_args other) {
+      if (other.isSetParserInputId()) {
+        this.parserInputId = other.parserInputId;
+      }
+      if (other.isSetGatewayId()) {
+        this.gatewayId = other.gatewayId;
       }
     }
 
-    public saveParser_args deepCopy() {
-      return new saveParser_args(this);
+    public getParserInput_args deepCopy() {
+      return new getParserInput_args(this);
     }
 
     @Override
     public void clear() {
-      this.parser = null;
+      this.parserInputId = null;
+      this.gatewayId = null;
     }
 
-    public org.apache.airavata.model.appcatalog.parser.Parser getParser() {
-      return this.parser;
+    public java.lang.String getParserInputId() {
+      return this.parserInputId;
     }
 
-    public saveParser_args setParser(org.apache.airavata.model.appcatalog.parser.Parser parser) {
-      this.parser = parser;
+    public getParserInput_args setParserInputId(java.lang.String parserInputId) {
+      this.parserInputId = parserInputId;
       return this;
     }
 
-    public void unsetParser() {
-      this.parser = null;
+    public void unsetParserInputId() {
+      this.parserInputId = null;
     }
 
-    /** Returns true if field parser is set (has been assigned a value) and false otherwise */
-    public boolean isSetParser() {
-      return this.parser != null;
+    /** Returns true if field parserInputId is set (has been assigned a value) and false otherwise */
+    public boolean isSetParserInputId() {
+      return this.parserInputId != null;
     }
 
-    public void setParserIsSet(boolean value) {
+    public void setParserInputIdIsSet(boolean value) {
       if (!value) {
-        this.parser = null;
+        this.parserInputId = null;
+      }
+    }
+
+    public java.lang.String getGatewayId() {
+      return this.gatewayId;
+    }
+
+    public getParserInput_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 void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
-      case PARSER:
+      case PARSER_INPUT_ID:
         if (value == null) {
-          unsetParser();
+          unsetParserInputId();
         } else {
-          setParser((org.apache.airavata.model.appcatalog.parser.Parser)value);
+          setParserInputId((java.lang.String)value);
+        }
+        break;
+
+      case GATEWAY_ID:
+        if (value == null) {
+          unsetGatewayId();
+        } else {
+          setGatewayId((java.lang.String)value);
         }
         break;
 
@@ -204203,8 +207227,11 @@ public class RegistryService {
 
     public java.lang.Object getFieldValue(_Fields field) {
       switch (field) {
-      case PARSER:
-        return getParser();
+      case PARSER_INPUT_ID:
+        return getParserInputId();
+
+      case GATEWAY_ID:
+        return getGatewayId();
 
       }
       throw new java.lang.IllegalStateException();
@@ -204217,8 +207244,10 @@ public class RegistryService {
       }
 
       switch (field) {
-      case PARSER:
-        return isSetParser();
+      case PARSER_INPUT_ID:
+        return isSetParserInputId();
+      case GATEWAY_ID:
+        return isSetGatewayId();
       }
       throw new java.lang.IllegalStateException();
     }
@@ -204227,23 +207256,32 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof saveParser_args)
-        return this.equals((saveParser_args)that);
+      if (that instanceof getParserInput_args)
+        return this.equals((getParserInput_args)that);
       return false;
     }
 
-    public boolean equals(saveParser_args that) {
+    public boolean equals(getParserInput_args that) {
       if (that == null)
         return false;
       if (this == that)
         return true;
 
-      boolean this_present_parser = true && this.isSetParser();
-      boolean that_present_parser = true && that.isSetParser();
-      if (this_present_parser || that_present_parser) {
-        if (!(this_present_parser && that_present_parser))
+      boolean this_present_parserInputId = true && this.isSetParserInputId();
+      boolean that_present_parserInputId = true && that.isSetParserInputId();
+      if (this_present_parserInputId || that_present_parserInputId) {
+        if (!(this_present_parserInputId && that_present_parserInputId))
           return false;
-        if (!this.parser.equals(that.parser))
+        if (!this.parserInputId.equals(that.parserInputId))
+          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;
       }
 
@@ -204254,27 +207292,41 @@ public class RegistryService {
     public int hashCode() {
       int hashCode = 1;
 
-      hashCode = hashCode * 8191 + ((isSetParser()) ? 131071 : 524287);
-      if (isSetParser())
-        hashCode = hashCode * 8191 + parser.hashCode();
+      hashCode = hashCode * 8191 + ((isSetParserInputId()) ? 131071 : 524287);
+      if (isSetParserInputId())
+        hashCode = hashCode * 8191 + parserInputId.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetGatewayId()) ? 131071 : 524287);
+      if (isSetGatewayId())
+        hashCode = hashCode * 8191 + gatewayId.hashCode();
 
       return hashCode;
     }
 
     @Override
-    public int compareTo(saveParser_args other) {
+    public int compareTo(getParserInput_args other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
 
       int lastComparison = 0;
 
-      lastComparison = java.lang.Boolean.valueOf(isSetParser()).compareTo(other.isSetParser());
+      lastComparison = java.lang.Boolean.valueOf(isSetParserInputId()).compareTo(other.isSetParserInputId());
       if (lastComparison != 0) {
         return lastComparison;
       }
-      if (isSetParser()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.parser, other.parser);
+      if (isSetParserInputId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.parserInputId, other.parserInputId);
+        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;
         }
@@ -204296,14 +207348,22 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("saveParser_args(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("getParserInput_args(");
       boolean first = true;
 
-      sb.append("parser:");
-      if (this.parser == null) {
+      sb.append("parserInputId:");
+      if (this.parserInputId == null) {
         sb.append("null");
       } else {
-        sb.append(this.parser);
+        sb.append(this.parserInputId);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("gatewayId:");
+      if (this.gatewayId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.gatewayId);
       }
       first = false;
       sb.append(")");
@@ -204312,13 +207372,13 @@ public class RegistryService {
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
-      if (parser == null) {
-        throw new org.apache.thrift.protocol.TProtocolException("Required field 'parser' was not present! Struct: " + toString());
+      if (parserInputId == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'parserInputId' was not present! Struct: " + toString());
       }
-      // check for sub-struct validity
-      if (parser != null) {
-        parser.validate();
+      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 {
@@ -204337,15 +207397,15 @@ public class RegistryService {
       }
     }
 
-    private static class saveParser_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public saveParser_argsStandardScheme getScheme() {
-        return new saveParser_argsStandardScheme();
+    private static class getParserInput_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getParserInput_argsStandardScheme getScheme() {
+        return new getParserInput_argsStandardScheme();
       }
     }
 
-    private static class saveParser_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<saveParser_args> {
+    private static class getParserInput_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<getParserInput_args> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, saveParser_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, getParserInput_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -204355,11 +207415,18 @@ public class RegistryService {
             break;
           }
           switch (schemeField.id) {
-            case 1: // PARSER
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-                struct.parser = new org.apache.airavata.model.appcatalog.parser.Parser();
-                struct.parser.read(iprot);
-                struct.setParserIsSet(true);
+            case 1: // PARSER_INPUT_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.parserInputId = iprot.readString();
+                struct.setParserInputIdIsSet(true);
+              } else { 
+                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);
               }
@@ -204375,13 +207442,18 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, saveParser_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, getParserInput_args struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
-        if (struct.parser != null) {
-          oprot.writeFieldBegin(PARSER_FIELD_DESC);
-          struct.parser.write(oprot);
+        if (struct.parserInputId != null) {
+          oprot.writeFieldBegin(PARSER_INPUT_ID_FIELD_DESC);
+          oprot.writeString(struct.parserInputId);
+          oprot.writeFieldEnd();
+        }
+        if (struct.gatewayId != null) {
+          oprot.writeFieldBegin(GATEWAY_ID_FIELD_DESC);
+          oprot.writeString(struct.gatewayId);
           oprot.writeFieldEnd();
         }
         oprot.writeFieldStop();
@@ -204390,26 +207462,28 @@ public class RegistryService {
 
     }
 
-    private static class saveParser_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public saveParser_argsTupleScheme getScheme() {
-        return new saveParser_argsTupleScheme();
+    private static class getParserInput_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getParserInput_argsTupleScheme getScheme() {
+        return new getParserInput_argsTupleScheme();
       }
     }
 
-    private static class saveParser_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<saveParser_args> {
+    private static class getParserInput_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<getParserInput_args> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, saveParser_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, getParserInput_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
-        struct.parser.write(oprot);
+        oprot.writeString(struct.parserInputId);
+        oprot.writeString(struct.gatewayId);
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, saveParser_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, getParserInput_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
-        struct.parser = new org.apache.airavata.model.appcatalog.parser.Parser();
-        struct.parser.read(iprot);
-        struct.setParserIsSet(true);
+        struct.parserInputId = iprot.readString();
+        struct.setParserInputIdIsSet(true);
+        struct.gatewayId = iprot.readString();
+        struct.setGatewayIdIsSet(true);
       }
     }
 
@@ -204418,16 +207492,16 @@ public class RegistryService {
     }
   }
 
-  public static class saveParser_result implements org.apache.thrift.TBase<saveParser_result, saveParser_result._Fields>, java.io.Serializable, Cloneable, Comparable<saveParser_result>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("saveParser_result");
+  public static class getParserInput_result implements org.apache.thrift.TBase<getParserInput_result, getParserInput_result._Fields>, java.io.Serializable, Cloneable, Comparable<getParserInput_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getParserInput_result");
 
-    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRING, (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.protocol.TField RSE_FIELD_DESC = new org.apache.thrift.protocol.TField("rse", org.apache.thrift.protocol.TType.STRUCT, (short)1);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new saveParser_resultStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new saveParser_resultTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getParserInput_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getParserInput_resultTupleSchemeFactory();
 
-    public java.lang.String success; // required
+    public org.apache.airavata.model.appcatalog.parser.ParserInput success; // required
     public org.apache.airavata.registry.api.exception.RegistryServiceException rse; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
@@ -204496,18 +207570,18 @@ 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.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.parser.ParserInput.class)));
       tmpMap.put(_Fields.RSE, new org.apache.thrift.meta_data.FieldMetaData("rse", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.registry.api.exception.RegistryServiceException.class)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(saveParser_result.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getParserInput_result.class, metaDataMap);
     }
 
-    public saveParser_result() {
+    public getParserInput_result() {
     }
 
-    public saveParser_result(
-      java.lang.String success,
+    public getParserInput_result(
+      org.apache.airavata.model.appcatalog.parser.ParserInput success,
       org.apache.airavata.registry.api.exception.RegistryServiceException rse)
     {
       this();
@@ -204518,17 +207592,17 @@ public class RegistryService {
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public saveParser_result(saveParser_result other) {
+    public getParserInput_result(getParserInput_result other) {
       if (other.isSetSuccess()) {
-        this.success = other.success;
+        this.success = new org.apache.airavata.model.appcatalog.parser.ParserInput(other.success);
       }
       if (other.isSetRse()) {
         this.rse = new org.apache.airavata.registry.api.exception.RegistryServiceException(other.rse);
       }
     }
 
-    public saveParser_result deepCopy() {
-      return new saveParser_result(this);
+    public getParserInput_result deepCopy() {
+      return new getParserInput_result(this);
     }
 
     @Override
@@ -204537,11 +207611,11 @@ public class RegistryService {
       this.rse = null;
     }
 
-    public java.lang.String getSuccess() {
+    public org.apache.airavata.model.appcatalog.parser.ParserInput getSuccess() {
       return this.success;
     }
 
-    public saveParser_result setSuccess(java.lang.String success) {
+    public getParserInput_result setSuccess(org.apache.airavata.model.appcatalog.parser.ParserInput success) {
       this.success = success;
       return this;
     }
@@ -204565,7 +207639,7 @@ public class RegistryService {
       return this.rse;
     }
 
-    public saveParser_result setRse(org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
+    public getParserInput_result setRse(org.apache.airavata.registry.api.exception.RegistryServiceException rse) {
       this.rse = rse;
       return this;
     }
@@ -204591,7 +207665,7 @@ public class RegistryService {
         if (value == null) {
           unsetSuccess();
         } else {
-          setSuccess((java.lang.String)value);
+          setSuccess((org.apache.airavata.model.appcatalog.parser.ParserInput)value);
         }
         break;
 
@@ -204637,12 +207711,12 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof saveParser_result)
-        return this.equals((saveParser_result)that);
+      if (that instanceof getParserInput_result)
+        return this.equals((getParserInput_result)that);
       return false;
     }
 
-    public boolean equals(saveParser_result that) {
+    public boolean equals(getParserInput_result that) {
       if (that == null)
         return false;
       if (this == that)
@@ -204685,7 +207759,7 @@ public class RegistryService {
     }
 
     @Override
-    public int compareTo(saveParser_result other) {
+    public int compareTo(getParserInput_result other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
@@ -204729,7 +207803,7 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("saveParser_result(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("getParserInput_result(");
       boolean first = true;
 
       sb.append("success:");
@@ -204754,6 +207828,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 {
@@ -204772,15 +207849,15 @@ public class RegistryService {
       }
     }
 
-    private static class saveParser_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public saveParser_resultStandardScheme getScheme() {
-        return new saveParser_resultStandardScheme();
+    private static class getParserInput_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getParserInput_resultStandardScheme getScheme() {
+        return new getParserInput_resultStandardScheme();
       }
     }
 
-    private static class saveParser_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<saveParser_result> {
+    private static class getParserInput_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<getParserInput_result> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, saveParser_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, getParserInput_result struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -204791,8 +207868,9 @@ public class RegistryService {
           }
           switch (schemeField.id) {
             case 0: // SUCCESS
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-                struct.success = iprot.readString();
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.success = new org.apache.airavata.model.appcatalog.parser.ParserInput();
+                struct.success.read(iprot);
                 struct.setSuccessIsSet(true);
               } else { 
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
@@ -204818,13 +207896,13 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, saveParser_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, getParserInput_result struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
         if (struct.success != null) {
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
-          oprot.writeString(struct.success);
+          struct.success.write(oprot);
           oprot.writeFieldEnd();
         }
         if (struct.rse != null) {
@@ -204838,16 +207916,16 @@ public class RegistryService {
 
     }
 
-    private static class saveParser_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public saveParser_resultTupleScheme getScheme() {
-        return new saveParser_resultTupleScheme();
+    private static class getParserInput_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getParserInput_resultTupleScheme getScheme() {
+        return new getParserInput_resultTupleScheme();
       }
     }
 
-    private static class saveParser_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<saveParser_result> {
+    private static class getParserInput_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<getParserInput_result> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, saveParser_result struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, getParserInput_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()) {
@@ -204858,7 +207936,7 @@ public class RegistryService {
         }
         oprot.writeBitSet(optionals, 2);
         if (struct.isSetSuccess()) {
-          oprot.writeString(struct.success);
+          struct.success.write(oprot);
         }
         if (struct.isSetRse()) {
           struct.rse.write(oprot);
@@ -204866,11 +207944,12 @@ public class RegistryService {
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, saveParser_result struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, getParserInput_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(2);
         if (incoming.get(0)) {
-          struct.success = iprot.readString();
+          struct.success = new org.apache.airavata.model.appcatalog.parser.ParserInput();
+          struct.success.read(iprot);
           struct.setSuccessIsSet(true);
         }
         if (incoming.get(1)) {
@@ -204886,19 +207965,22 @@ public class RegistryService {
     }
   }
 
-  public static class listAllParsers_args implements org.apache.thrift.TBase<listAllParsers_args, listAllParsers_args._Fields>, java.io.Serializable, Cloneable, Comparable<listAllParsers_args>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("listAllParsers_args");
+  public static class getParserOutput_args implements org.apache.thrift.TBase<getParserOutput_args, getParserOutput_args._Fields>, java.io.Serializable, Cloneable, Comparable<getParserOutput_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getParserOutput_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 PARSER_OUTPUT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("parserOutputId", org.apache.thrift.protocol.TType.STRING, (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.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new listAllParsers_argsStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new listAllParsers_argsTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getParserOutput_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getParserOutput_argsTupleSchemeFactory();
 
+    public java.lang.String parserOutputId; // required
     public java.lang.String gatewayId; // 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");
+      PARSER_OUTPUT_ID((short)1, "parserOutputId"),
+      GATEWAY_ID((short)2, "gatewayId");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -204913,7 +207995,9 @@ public class RegistryService {
        */
       public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
-          case 1: // GATEWAY_ID
+          case 1: // PARSER_OUTPUT_ID
+            return PARSER_OUTPUT_ID;
+          case 2: // GATEWAY_ID
             return GATEWAY_ID;
           default:
             return null;
@@ -204958,45 +208042,77 @@ public class RegistryService {
     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.PARSER_OUTPUT_ID, new org.apache.thrift.meta_data.FieldMetaData("parserOutputId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       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)));
       metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(listAllParsers_args.class, metaDataMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getParserOutput_args.class, metaDataMap);
     }
 
-    public listAllParsers_args() {
+    public getParserOutput_args() {
     }
 
-    public listAllParsers_args(
+    public getParserOutput_args(
+      java.lang.String parserOutputId,
       java.lang.String gatewayId)
     {
       this();
+      this.parserOutputId = parserOutputId;
       this.gatewayId = gatewayId;
     }
 
     /**
      * Performs a deep copy on <i>other</i>.
      */
-    public listAllParsers_args(listAllParsers_args other) {
+    public getParserOutput_args(getParserOutput_args other) {
+      if (other.isSetParserOutputId()) {
+        this.parserOutputId = other.parserOutputId;
+      }
       if (other.isSetGatewayId()) {
         this.gatewayId = other.gatewayId;
       }
     }
 
-    public listAllParsers_args deepCopy() {
-      return new listAllParsers_args(this);
+    public getParserOutput_args deepCopy() {
+      return new getParserOutput_args(this);
     }
 
     @Override
     public void clear() {
+      this.parserOutputId = null;
       this.gatewayId = null;
     }
 
+    public java.lang.String getParserOutputId() {
+      return this.parserOutputId;
+    }
+
+    public getParserOutput_args setParserOutputId(java.lang.String parserOutputId) {
+      this.parserOutputId = parserOutputId;
+      return this;
+    }
+
+    public void unsetParserOutputId() {
+      this.parserOutputId = null;
+    }
+
+    /** Returns true if field parserOutputId is set (has been assigned a value) and false otherwise */
+    public boolean isSetParserOutputId() {
+      return this.parserOutputId != null;
+    }
+
+    public void setParserOutputIdIsSet(boolean value) {
+      if (!value) {
+        this.parserOutputId = null;
+      }
+    }
+
     public java.lang.String getGatewayId() {
       return this.gatewayId;
     }
 
-    public listAllParsers_args setGatewayId(java.lang.String gatewayId) {
+    public getParserOutput_args setGatewayId(java.lang.String gatewayId) {
       this.gatewayId = gatewayId;
       return this;
     }
@@ -205018,6 +208134,14 @@ public class RegistryService {
 
     public void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
+      case PARSER_OUTPUT_ID:
+        if (value == null) {
+          unsetParserOutputId();
+        } else {
+          setParserOutputId((java.lang.String)value);
+        }
+        break;
+
       case GATEWAY_ID:
         if (value == null) {
           unsetGatewayId();
@@ -205031,6 +208155,9 @@ public class RegistryService {
 
     public java.lang.Object getFieldValue(_Fields field) {
       switch (field) {
+      case PARSER_OUTPUT_ID:
+        return getParserOutputId();
+
       case GATEWAY_ID:
         return getGatewayId();
 
@@ -205045,6 +208172,8 @@ public class RegistryService {
       }
 
       switch (field) {
+      case PARSER_OUTPUT_ID:
+        return isSetParserOutputId();
       case GATEWAY_ID:
         return isSetGatewayId();
       }
@@ -205055,17 +208184,26 @@ public class RegistryService {
     public boolean equals(java.lang.Object that) {
       if (that == null)
         return false;
-      if (that instanceof listAllParsers_args)
-        return this.equals((listAllParsers_args)that);
+      if (that instanceof getParserOutput_args)
+        return this.equals((getParserOutput_args)that);
       return false;
     }
 
-    public boolean equals(listAllParsers_args that) {
+    public boolean equals(getParserOutput_args that) {
       if (that == null)
         return false;
       if (this == that)
         return true;
 
+      boolean this_present_parserOutputId = true && this.isSetParserOutputId();
+      boolean that_present_parserOutputId = true && that.isSetParserOutputId();
+      if (this_present_parserOutputId || that_present_parserOutputId) {
+        if (!(this_present_parserOutputId && that_present_parserOutputId))
+          return false;
+        if (!this.parserOutputId.equals(that.parserOutputId))
+          return false;
+      }
+
       boolean this_present_gatewayId = true && this.isSetGatewayId();
       boolean that_present_gatewayId = true && that.isSetGatewayId();
       if (this_present_gatewayId || that_present_gatewayId) {
@@ -205082,6 +208220,10 @@ public class RegistryService {
     public int hashCode() {
       int hashCode = 1;
 
+      hashCode = hashCode * 8191 + ((isSetParserOutputId()) ? 131071 : 524287);
+      if (isSetParserOutputId())
+        hashCode = hashCode * 8191 + parserOutputId.hashCode();
+
       hashCode = hashCode * 8191 + ((isSetGatewayId()) ? 131071 : 524287);
       if (isSetGatewayId())
         hashCode = hashCode * 8191 + gatewayId.hashCode();
@@ -205090,13 +208232,23 @@ public class RegistryService {
     }
 
     @Override
-    public int compareTo(listAllParsers_args other) {
+    public int compareTo(getParserOutput_args other) {
       if (!getClass().equals(other.getClass())) {
         return getClass().getName().compareTo(other.getClass().getName());
       }
 
       int lastComparison = 0;
 
+      lastComparison = java.lang.Boolean.valueOf(isSetParserOutputId()).compareTo(other.isSetParserOutputId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetParserOutputId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.parserOutputId, other.parserOutputId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       lastComparison = java.lang.Boolean.valueOf(isSetGatewayId()).compareTo(other.isSetGatewayId());
       if (lastComparison != 0) {
         return lastComparison;
@@ -205124,9 +208276,17 @@ public class RegistryService {
 
     @Override
     public java.lang.String toString() {
-      java.lang.StringBuilder sb = new java.lang.StringBuilder("listAllParsers_args(");
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("getParserOutput_args(");
       boolean first = true;
 
+      sb.append("parserOutputId:");
+      if (this.parserOutputId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.parserOutputId);
+      }
+      first = false;
+      if (!first) sb.append(", ");
       sb.append("gatewayId:");
       if (this.gatewayId == null) {
         sb.append("null");
@@ -205140,6 +208300,9 @@ public class RegistryService {
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      if (parserOutputId == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'parserOutputId' was not present! Struct: " + toString());
+      }
       if (gatewayId == null) {
         throw new org.apache.thrift.protocol.TProtocolException("Required field 'gatewayId' was not present! Struct: " + toString());
       }
@@ -205162,15 +208325,15 @@ public class RegistryService {
       }
     }
 
-    private static class listAllParsers_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public listAllParsers_argsStandardScheme getScheme() {
-        return new listAllParsers_argsStandardScheme();
+    private static class getParserOutput_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getParserOutput_argsStandardScheme getScheme() {
+        return new getParserOutput_argsStandardScheme();
       }
     }
 
-    private static class listAllParsers_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<listAllParsers_args> {
+    private static class getParserOutput_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<getParserOutput_args> {
 
-      public void read(org.apache.thrift.protocol.TProtocol iprot, listAllParsers_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol iprot, getParserOutput_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TField schemeField;
         iprot.readStructBegin();
         while (true)
@@ -205180,7 +208343,15 @@ public class RegistryService {
             break;
           }
           switch (schemeField.id) {
-            case 1: // GATEWAY_ID
+            case 1: // PARSER_OUTPUT_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.parserOutputId = iprot.readString();
+                struct.setParserOutputIdIsSet(true);
+              } else { 
+                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);
@@ -205199,10 +208370,15 @@ public class RegistryService {
         struct.validate();
       }
 
-      public void write(org.apache.thrift.protocol.TProtocol oprot, listAllParsers_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol oprot, getParserOutput_args struct) throws org.apache.thrift.TException {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.parserOutputId != null) {
+          oprot.writeFieldBegin(PARSER_OUTPUT_ID_FIELD_DESC);
+          oprot.writeString(struct.parserOutputId);
+          oprot.writeFieldEnd();
+        }
         if (struct.gatewayId != null) {
           oprot.writeFieldBegin(GATEWAY_ID_FIELD_DESC);
           oprot.writeString(struct.gatewayId);
@@ -205214,23 +208390,26 @@ public class RegistryService {
 
     }
 
-    private static class listAllParsers_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-      public listAllParsers_argsTupleScheme getScheme() {
-        return new listAllParsers_argsTupleScheme();
+    private static class getParserOutput_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public getParserOutput_argsTupleScheme getScheme() {
+        return new getParserOutput_argsTupleScheme();
       }
     }
 
-    private static class listAllParsers_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<listAllParsers_args> {
+    private static class getParserOutput_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<getParserOutput_args> {
 
       @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, listAllParsers_args struct) throws org.apache.thrift.TException {
+      public void write(org.apache.thrift.protocol.TProtocol prot, getParserOutput_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        oprot.writeString(struct.parserOutputId);
         oprot.writeString(struct.gatewayId);
       }
 
       @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, listAllParsers_args struct) throws org.apache.thrift.TException {
+      public void read(org.apache.thrift.protocol.TProtocol prot, getParserOutput_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        struct.parserOutputId = iprot.readString();
+        struct.setParserOutputIdIsSet(true);
         struct.gatewayId = iprot.readString();
         struct.setGatewayIdIsSet(true);
       }
@@ -205241,16 +208420,16 @@ public class RegistryService {
     }
   }
 
-  public static class listAllParsers_result implements org.apache.thrift.TBase<listAllParsers_result, listAllParsers_result._Fields>, java.io.Serializable, Cloneable, Comparable<listAllParsers_result>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("listAllParsers_result");
+  public static class getParserOutput_result implements org.apache.thrift.TBase<getParserOutput_result, getParserOutput_result._Fields>, java.io.Serializable, Cloneable, Comparable<getParserOutput_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getParserOutput_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.protocol.TField RSE_FIELD_DESC = new org.apache.thrift.protocol.TField("rse", org.apache.thrift.protocol.TType.STRUCT, (short)1);
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new listAllParsers_resultStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new listAllParsers_resultTupleSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getParserOutput_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getParserOutput_resultTupleSchemeFactory();
 
-    public java.util.List<org.apache.airavata.model.appcatalog.parser.Parser> success; // required
+    public org.apache.airavata.model.appcatalog.parser.ParserOutput success; // required
     public org.apache.airavata.registry.api.exception.RegistryServiceException rse; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
@@ -205319,19 +208498,18 @@ 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.parser.Parser.class))));
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.parser.ParserOutput.class)));
       tmpMap.put(_Fields.RSE, new org.apache.thrift.meta_data.FieldMetaData("rse", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.registry.api.exception.RegistryServiceException.class)));
... 5974 lines suppressed ...