You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2017/08/02 18:04:21 UTC

[1/6] airavata git commit: adding sharing php and python thrift generated code to language specific sdks

Repository: airavata
Updated Branches:
  refs/heads/develop d49f25271 -> 6d6973d87


http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/__init__.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/__init__.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/__init__.py
new file mode 100644
index 0000000..35a411c
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants', 'SharingRegistryService']

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/constants.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/constants.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/ttypes.py
new file mode 100644
index 0000000..56bdc1f
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/ttypes.py
@@ -0,0 +1,20 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.sharing.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/sharing/__init__.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/sharing/__init__.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/sharing/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/sharing/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/sharing/constants.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/sharing/constants.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/sharing/constants.py
new file mode 100644
index 0000000..68ebfe8
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/sharing/constants.py
@@ -0,0 +1,12 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+
+DO_NOT_SET_AT_CLIENTS_ID = "DO_NOT_SET_AT_CLIENTS_ID"

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/sharing/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/sharing/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/sharing/ttypes.py
new file mode 100644
index 0000000..81f5788
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/sharing/ttypes.py
@@ -0,0 +1,1722 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class GroupCardinality:
+  """
+  <p>This is an system internal enum used to define single user groups and multi users groups. Every user is also
+  considered as a group in it's own right for implementation ease</p>
+
+  """
+  SINGLE_USER = 0
+  MULTI_USER = 1
+
+  _VALUES_TO_NAMES = {
+    0: "SINGLE_USER",
+    1: "MULTI_USER",
+  }
+
+  _NAMES_TO_VALUES = {
+    "SINGLE_USER": 0,
+    "MULTI_USER": 1,
+  }
+
+class GroupType:
+  """
+  <p>Group types can be either user level or domain level groups.</p>
+
+  """
+  DOMAIN_LEVEL_GROUP = 0
+  USER_LEVEL_GROUP = 1
+
+  _VALUES_TO_NAMES = {
+    0: "DOMAIN_LEVEL_GROUP",
+    1: "USER_LEVEL_GROUP",
+  }
+
+  _NAMES_TO_VALUES = {
+    "DOMAIN_LEVEL_GROUP": 0,
+    "USER_LEVEL_GROUP": 1,
+  }
+
+class GroupChildType:
+  """
+  <p>System internal data type to match group child types</p>
+
+  """
+  USER = 0
+  GROUP = 1
+
+  _VALUES_TO_NAMES = {
+    0: "USER",
+    1: "GROUP",
+  }
+
+  _NAMES_TO_VALUES = {
+    "USER": 0,
+    "GROUP": 1,
+  }
+
+class EntitySearchField:
+  """
+  <p>This list of fields that can be used to search entities</p>
+  <li>NAME : Name of the entity</li>
+  <li>DESCRIPTION : Description of the entity</li>
+  <li>FULL_TEXT : Full text field of the entity</li>
+  <li>PARENT_ENTITY_ID : Parent entity id of the entity</li>
+  <li>OWNER_ID : Owner of the entity</li>
+  <li>CREATED_TIME : Created time of the entity</li>
+  <li>UPDATED_TIME : Updated time of the entity</li>
+  <li>SHARED_COUNT : Number of directly shared users and groups</li>
+
+  """
+  NAME = 0
+  DESCRIPTION = 1
+  FULL_TEXT = 2
+  PARRENT_ENTITY_ID = 3
+  OWNER_ID = 4
+  PERMISSION_TYPE_ID = 5
+  CREATED_TIME = 6
+  UPDATED_TIME = 7
+  ENTITY_TYPE_ID = 8
+  SHARED_COUNT = 9
+
+  _VALUES_TO_NAMES = {
+    0: "NAME",
+    1: "DESCRIPTION",
+    2: "FULL_TEXT",
+    3: "PARRENT_ENTITY_ID",
+    4: "OWNER_ID",
+    5: "PERMISSION_TYPE_ID",
+    6: "CREATED_TIME",
+    7: "UPDATED_TIME",
+    8: "ENTITY_TYPE_ID",
+    9: "SHARED_COUNT",
+  }
+
+  _NAMES_TO_VALUES = {
+    "NAME": 0,
+    "DESCRIPTION": 1,
+    "FULL_TEXT": 2,
+    "PARRENT_ENTITY_ID": 3,
+    "OWNER_ID": 4,
+    "PERMISSION_TYPE_ID": 5,
+    "CREATED_TIME": 6,
+    "UPDATED_TIME": 7,
+    "ENTITY_TYPE_ID": 8,
+    "SHARED_COUNT": 9,
+  }
+
+class SearchCondition:
+  """
+  <p>Different search operators that can be used with the entity search fields</p>
+  <li>EQUAL : Simply matches for equality. Applicable for name, and parent entity id</li>
+  <li>LIKE : Check for the condition %$FIELD% condition. Applicable for name, and description</li>
+  <li>FULL_TEXT : Does a full text search. Only applicable for the FULL_TEXT field.</li>
+  <li>GTE : Greater than or equal. Only applicable for created time, updated time and shared count.</li>
+  <li>LTE : Less than or equal. Only applicable for created time, updated time and shared count.</li>
+
+  """
+  EQUAL = 0
+  LIKE = 1
+  FULL_TEXT = 2
+  GTE = 3
+  LTE = 4
+  NOT = 5
+
+  _VALUES_TO_NAMES = {
+    0: "EQUAL",
+    1: "LIKE",
+    2: "FULL_TEXT",
+    3: "GTE",
+    4: "LTE",
+    5: "NOT",
+  }
+
+  _NAMES_TO_VALUES = {
+    "EQUAL": 0,
+    "LIKE": 1,
+    "FULL_TEXT": 2,
+    "GTE": 3,
+    "LTE": 4,
+    "NOT": 5,
+  }
+
+class SharingType:
+  """
+  <p>This is an internal enum type for managing sharings</p>
+
+  """
+  DIRECT_NON_CASCADING = 0
+  DIRECT_CASCADING = 1
+  INDIRECT_CASCADING = 2
+
+  _VALUES_TO_NAMES = {
+    0: "DIRECT_NON_CASCADING",
+    1: "DIRECT_CASCADING",
+    2: "INDIRECT_CASCADING",
+  }
+
+  _NAMES_TO_VALUES = {
+    "DIRECT_NON_CASCADING": 0,
+    "DIRECT_CASCADING": 1,
+    "INDIRECT_CASCADING": 2,
+  }
+
+
+class Domain:
+  """
+  <p>Domain is the entity that enables multi-tenency in this componenet. Every tenant will be
+  operating separately it's own silo which is identified by the domain id. In the current implementation domain id
+  will be same as the domain name</p>
+  <li>domainId : Will be generated by the server based on the domain name</li>
+  <li><b>name</b> : A single word name that identifies the domain e.g seagrid, ultrascan</li>
+  <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>
+
+
+  Attributes:
+   - domainId
+   - name
+   - description
+   - createdTime
+   - updatedTime
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'domainId', None, "DO_NOT_SET_AT_CLIENTS_ID", ), # 1
+    (2, TType.STRING, 'name', None, None, ), # 2
+    (3, TType.STRING, 'description', None, None, ), # 3
+    (4, TType.I64, 'createdTime', None, None, ), # 4
+    (5, TType.I64, 'updatedTime', None, None, ), # 5
+  )
+
+  def __init__(self, domainId=thrift_spec[1][4], name=None, description=None, createdTime=None, updatedTime=None,):
+    self.domainId = domainId
+    self.name = name
+    self.description = description
+    self.createdTime = createdTime
+    self.updatedTime = updatedTime
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.domainId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.description = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I64:
+          self.createdTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I64:
+          self.updatedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('Domain')
+    if self.domainId is not None:
+      oprot.writeFieldBegin('domainId', TType.STRING, 1)
+      oprot.writeString(self.domainId)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 2)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 3)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    if self.createdTime is not None:
+      oprot.writeFieldBegin('createdTime', TType.I64, 4)
+      oprot.writeI64(self.createdTime)
+      oprot.writeFieldEnd()
+    if self.updatedTime is not None:
+      oprot.writeFieldBegin('updatedTime', TType.I64, 5)
+      oprot.writeI64(self.updatedTime)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.domainId)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.description)
+    value = (value * 31) ^ hash(self.createdTime)
+    value = (value * 31) ^ hash(self.updatedTime)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class User:
+  """
+  <p>User is the model used to register a user in the system. Minimal user information will be required to provide
+  regarding the user.</p>
+  <li><b>userId</b> : User id provided by the client</li>
+  <li><b>domainId</b> : Domain id for that user</li>
+  <li><b>userName</b> : User name for the user</li>
+  <li><b>firstName</b> : First name of the user</li>
+  <li><b>lastName</b> : Last name of the user</li>
+  <li><b>email</b> : Email address of the user</li>
+  <li>icon : A binary field for storing the user icon</li>
+  <li>createdTime : If client provides this value then the system will use it if not the current time will be set</li>
+  <li>updatedTime : If client provides this value then the system will use it if not the current time will be set</li>
+
+
+  Attributes:
+   - userId
+   - domainId
+   - userName
+   - firstName
+   - lastName
+   - email
+   - icon
+   - createdTime
+   - updatedTime
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'userId', None, None, ), # 1
+    (2, TType.STRING, 'domainId', None, None, ), # 2
+    (3, TType.STRING, 'userName', None, None, ), # 3
+    (4, TType.STRING, 'firstName', None, None, ), # 4
+    (5, TType.STRING, 'lastName', None, None, ), # 5
+    (6, TType.STRING, 'email', None, None, ), # 6
+    (7, TType.STRING, 'icon', None, None, ), # 7
+    (8, TType.I64, 'createdTime', None, None, ), # 8
+    (9, TType.I64, 'updatedTime', None, None, ), # 9
+  )
+
+  def __init__(self, userId=None, domainId=None, userName=None, firstName=None, lastName=None, email=None, icon=None, createdTime=None, updatedTime=None,):
+    self.userId = userId
+    self.domainId = domainId
+    self.userName = userName
+    self.firstName = firstName
+    self.lastName = lastName
+    self.email = email
+    self.icon = icon
+    self.createdTime = createdTime
+    self.updatedTime = updatedTime
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.userId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.domainId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.userName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.firstName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.lastName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.email = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.icon = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I64:
+          self.createdTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.I64:
+          self.updatedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('User')
+    if self.userId is not None:
+      oprot.writeFieldBegin('userId', TType.STRING, 1)
+      oprot.writeString(self.userId)
+      oprot.writeFieldEnd()
+    if self.domainId is not None:
+      oprot.writeFieldBegin('domainId', TType.STRING, 2)
+      oprot.writeString(self.domainId)
+      oprot.writeFieldEnd()
+    if self.userName is not None:
+      oprot.writeFieldBegin('userName', TType.STRING, 3)
+      oprot.writeString(self.userName)
+      oprot.writeFieldEnd()
+    if self.firstName is not None:
+      oprot.writeFieldBegin('firstName', TType.STRING, 4)
+      oprot.writeString(self.firstName)
+      oprot.writeFieldEnd()
+    if self.lastName is not None:
+      oprot.writeFieldBegin('lastName', TType.STRING, 5)
+      oprot.writeString(self.lastName)
+      oprot.writeFieldEnd()
+    if self.email is not None:
+      oprot.writeFieldBegin('email', TType.STRING, 6)
+      oprot.writeString(self.email)
+      oprot.writeFieldEnd()
+    if self.icon is not None:
+      oprot.writeFieldBegin('icon', TType.STRING, 7)
+      oprot.writeString(self.icon)
+      oprot.writeFieldEnd()
+    if self.createdTime is not None:
+      oprot.writeFieldBegin('createdTime', TType.I64, 8)
+      oprot.writeI64(self.createdTime)
+      oprot.writeFieldEnd()
+    if self.updatedTime is not None:
+      oprot.writeFieldBegin('updatedTime', TType.I64, 9)
+      oprot.writeI64(self.updatedTime)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.userId)
+    value = (value * 31) ^ hash(self.domainId)
+    value = (value * 31) ^ hash(self.userName)
+    value = (value * 31) ^ hash(self.firstName)
+    value = (value * 31) ^ hash(self.lastName)
+    value = (value * 31) ^ hash(self.email)
+    value = (value * 31) ^ hash(self.icon)
+    value = (value * 31) ^ hash(self.createdTime)
+    value = (value * 31) ^ hash(self.updatedTime)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class UserGroup:
+  """
+  <p>User group is a collection of users.</p>
+   <li><b>groupId</b> : Group id provided by the client</li>
+   <li><b>domainId</b> : Domain id for this user group</li>
+   <li><b>name</b> : Name for the user group. should be one word</li>
+   <li>description : Short description for the group.</li>
+   <li><b>ownerId</b> : Owner id of this group.</li>
+   <li><b>groupType</b> : Group type (DOMAIN_LEVEL_GROUP, USER_LEVEL_GROUP)</li>
+   <li><b>groupCardinality</b> : Group cardinality (SINGLE_USER, MULTI_USER)</li>
+   <li>createdTime : Will be set by the system</li>
+   <li>updatedTime : Will be set by the system</li>
+   
+
+  Attributes:
+   - groupId
+   - domainId
+   - name
+   - description
+   - ownerId
+   - groupType
+   - groupCardinality
+   - createdTime
+   - updatedTime
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'groupId', None, None, ), # 1
+    (2, TType.STRING, 'domainId', None, None, ), # 2
+    (3, TType.STRING, 'name', None, None, ), # 3
+    (4, TType.STRING, 'description', None, None, ), # 4
+    (5, TType.STRING, 'ownerId', None, None, ), # 5
+    (6, TType.I32, 'groupType', None, None, ), # 6
+    (7, TType.I32, 'groupCardinality', None, None, ), # 7
+    (8, TType.I64, 'createdTime', None, None, ), # 8
+    (9, TType.I64, 'updatedTime', None, None, ), # 9
+  )
+
+  def __init__(self, groupId=None, domainId=None, name=None, description=None, ownerId=None, groupType=None, groupCardinality=None, createdTime=None, updatedTime=None,):
+    self.groupId = groupId
+    self.domainId = domainId
+    self.name = name
+    self.description = description
+    self.ownerId = ownerId
+    self.groupType = groupType
+    self.groupCardinality = groupCardinality
+    self.createdTime = createdTime
+    self.updatedTime = updatedTime
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.groupId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.domainId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.description = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.ownerId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I32:
+          self.groupType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I32:
+          self.groupCardinality = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I64:
+          self.createdTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.I64:
+          self.updatedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('UserGroup')
+    if self.groupId is not None:
+      oprot.writeFieldBegin('groupId', TType.STRING, 1)
+      oprot.writeString(self.groupId)
+      oprot.writeFieldEnd()
+    if self.domainId is not None:
+      oprot.writeFieldBegin('domainId', TType.STRING, 2)
+      oprot.writeString(self.domainId)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 3)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 4)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    if self.ownerId is not None:
+      oprot.writeFieldBegin('ownerId', TType.STRING, 5)
+      oprot.writeString(self.ownerId)
+      oprot.writeFieldEnd()
+    if self.groupType is not None:
+      oprot.writeFieldBegin('groupType', TType.I32, 6)
+      oprot.writeI32(self.groupType)
+      oprot.writeFieldEnd()
+    if self.groupCardinality is not None:
+      oprot.writeFieldBegin('groupCardinality', TType.I32, 7)
+      oprot.writeI32(self.groupCardinality)
+      oprot.writeFieldEnd()
+    if self.createdTime is not None:
+      oprot.writeFieldBegin('createdTime', TType.I64, 8)
+      oprot.writeI64(self.createdTime)
+      oprot.writeFieldEnd()
+    if self.updatedTime is not None:
+      oprot.writeFieldBegin('updatedTime', TType.I64, 9)
+      oprot.writeI64(self.updatedTime)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.groupId)
+    value = (value * 31) ^ hash(self.domainId)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.description)
+    value = (value * 31) ^ hash(self.ownerId)
+    value = (value * 31) ^ hash(self.groupType)
+    value = (value * 31) ^ hash(self.groupCardinality)
+    value = (value * 31) ^ hash(self.createdTime)
+    value = (value * 31) ^ hash(self.updatedTime)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class GroupMembership:
+  """
+  <p>System internal data type to map group memberships</p>
+
+
+  Attributes:
+   - parentId
+   - childId
+   - domainId
+   - childType
+   - createdTime
+   - updatedTime
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'parentId', None, None, ), # 1
+    (2, TType.STRING, 'childId', None, None, ), # 2
+    (3, TType.STRING, 'domainId', None, None, ), # 3
+    (4, TType.I32, 'childType', None, None, ), # 4
+    (5, TType.I64, 'createdTime', None, None, ), # 5
+    (6, TType.I64, 'updatedTime', None, None, ), # 6
+  )
+
+  def __init__(self, parentId=None, childId=None, domainId=None, childType=None, createdTime=None, updatedTime=None,):
+    self.parentId = parentId
+    self.childId = childId
+    self.domainId = domainId
+    self.childType = childType
+    self.createdTime = createdTime
+    self.updatedTime = updatedTime
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.parentId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.childId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.domainId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.childType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I64:
+          self.createdTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I64:
+          self.updatedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('GroupMembership')
+    if self.parentId is not None:
+      oprot.writeFieldBegin('parentId', TType.STRING, 1)
+      oprot.writeString(self.parentId)
+      oprot.writeFieldEnd()
+    if self.childId is not None:
+      oprot.writeFieldBegin('childId', TType.STRING, 2)
+      oprot.writeString(self.childId)
+      oprot.writeFieldEnd()
+    if self.domainId is not None:
+      oprot.writeFieldBegin('domainId', TType.STRING, 3)
+      oprot.writeString(self.domainId)
+      oprot.writeFieldEnd()
+    if self.childType is not None:
+      oprot.writeFieldBegin('childType', TType.I32, 4)
+      oprot.writeI32(self.childType)
+      oprot.writeFieldEnd()
+    if self.createdTime is not None:
+      oprot.writeFieldBegin('createdTime', TType.I64, 5)
+      oprot.writeI64(self.createdTime)
+      oprot.writeFieldEnd()
+    if self.updatedTime is not None:
+      oprot.writeFieldBegin('updatedTime', TType.I64, 6)
+      oprot.writeI64(self.updatedTime)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.parentId)
+    value = (value * 31) ^ hash(self.childId)
+    value = (value * 31) ^ hash(self.domainId)
+    value = (value * 31) ^ hash(self.childType)
+    value = (value * 31) ^ hash(self.createdTime)
+    value = (value * 31) ^ hash(self.updatedTime)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class EntityType:
+  """
+  <p>client defined entity types</p>
+  <li><b>entityTypeId</b> : Entity type id provided by the client</li>
+  <li><b>domainId</b> : Domain id of the domain.</li>
+  <li><b>name</b> : Name for the entity type. Should be a single word.</li>
+  <li>description : Short description for the entity type.</li>
+  <li>createdTime : Will be set by the system</li>
+  <li>updatedTime : Will be set by the system</li>
+
+
+  Attributes:
+   - entityTypeId
+   - domainId
+   - name
+   - description
+   - createdTime
+   - updatedTime
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'entityTypeId', None, None, ), # 1
+    (2, TType.STRING, 'domainId', None, None, ), # 2
+    (3, TType.STRING, 'name', None, None, ), # 3
+    (4, TType.STRING, 'description', None, None, ), # 4
+    (5, TType.I64, 'createdTime', None, None, ), # 5
+    (6, TType.I64, 'updatedTime', None, None, ), # 6
+  )
+
+  def __init__(self, entityTypeId=None, domainId=None, name=None, description=None, createdTime=None, updatedTime=None,):
+    self.entityTypeId = entityTypeId
+    self.domainId = domainId
+    self.name = name
+    self.description = description
+    self.createdTime = createdTime
+    self.updatedTime = updatedTime
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.entityTypeId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.domainId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.description = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I64:
+          self.createdTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I64:
+          self.updatedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('EntityType')
+    if self.entityTypeId is not None:
+      oprot.writeFieldBegin('entityTypeId', TType.STRING, 1)
+      oprot.writeString(self.entityTypeId)
+      oprot.writeFieldEnd()
+    if self.domainId is not None:
+      oprot.writeFieldBegin('domainId', TType.STRING, 2)
+      oprot.writeString(self.domainId)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 3)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 4)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    if self.createdTime is not None:
+      oprot.writeFieldBegin('createdTime', TType.I64, 5)
+      oprot.writeI64(self.createdTime)
+      oprot.writeFieldEnd()
+    if self.updatedTime is not None:
+      oprot.writeFieldBegin('updatedTime', TType.I64, 6)
+      oprot.writeI64(self.updatedTime)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.entityTypeId)
+    value = (value * 31) ^ hash(self.domainId)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.description)
+    value = (value * 31) ^ hash(self.createdTime)
+    value = (value * 31) ^ hash(self.updatedTime)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class SearchCriteria:
+  """
+  <p>Container object for search criteria</p>
+  <li><b>searchField</b> : Entity search field</li>
+  <li><b>value</b> : Search value</li>
+  <li><b>searchCondition</b> : EQUAL, LIKE etc..</li>
+
+
+  Attributes:
+   - searchField
+   - value
+   - searchCondition
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'searchField', None, None, ), # 1
+    (2, TType.STRING, 'value', None, None, ), # 2
+    (3, TType.I32, 'searchCondition', None, None, ), # 3
+  )
+
+  def __init__(self, searchField=None, value=None, searchCondition=None,):
+    self.searchField = searchField
+    self.value = value
+    self.searchCondition = searchCondition
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.searchField = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.value = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.searchCondition = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('SearchCriteria')
+    if self.searchField is not None:
+      oprot.writeFieldBegin('searchField', TType.I32, 1)
+      oprot.writeI32(self.searchField)
+      oprot.writeFieldEnd()
+    if self.value is not None:
+      oprot.writeFieldBegin('value', TType.STRING, 2)
+      oprot.writeString(self.value)
+      oprot.writeFieldEnd()
+    if self.searchCondition is not None:
+      oprot.writeFieldBegin('searchCondition', TType.I32, 3)
+      oprot.writeI32(self.searchCondition)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.searchField)
+    value = (value * 31) ^ hash(self.value)
+    value = (value * 31) ^ hash(self.searchCondition)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class Entity:
+  """
+  <p>Entity object which is used to register an entity in the system.</p>
+  <li><b>entityId</b> : Entity id provided by the client</li>
+  <li><b>domainId</b> : Domain id</li>
+  <li><b>entityTypeId</b> : Entity type id</li>
+  <li><b>ownerId</b> : Owner id</li>
+  <li>parentEntityId : Parent entity id</li>
+  <li><b>name</b> : Name</li>
+  <li>description : Short description for the entity</li>
+  <li>binaryData : Any information stored in binary format</li>
+  <li>fullText : A string which will be considered for full text search</li>
+  <li><b>originalEntityCreationTime</b> : When registering old records what is the original entity creation time. If not
+  set will be default to current time</li>
+  <li>createdTime : Will be set by the system</li>
+  <li>updatedTime : Will be set by the system</li>
+
+
+  Attributes:
+   - entityId
+   - domainId
+   - entityTypeId
+   - ownerId
+   - parentEntityId
+   - name
+   - description
+   - binaryData
+   - fullText
+   - sharedCount
+   - originalEntityCreationTime
+   - createdTime
+   - updatedTime
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'entityId', None, None, ), # 1
+    (2, TType.STRING, 'domainId', None, None, ), # 2
+    (3, TType.STRING, 'entityTypeId', None, None, ), # 3
+    (4, TType.STRING, 'ownerId', None, None, ), # 4
+    (5, TType.STRING, 'parentEntityId', None, None, ), # 5
+    (6, TType.STRING, 'name', None, None, ), # 6
+    (7, TType.STRING, 'description', None, None, ), # 7
+    (8, TType.STRING, 'binaryData', None, None, ), # 8
+    (9, TType.STRING, 'fullText', None, None, ), # 9
+    (10, TType.I64, 'sharedCount', None, 0, ), # 10
+    (11, TType.I64, 'originalEntityCreationTime', None, None, ), # 11
+    (12, TType.I64, 'createdTime', None, None, ), # 12
+    (13, TType.I64, 'updatedTime', None, None, ), # 13
+  )
+
+  def __init__(self, entityId=None, domainId=None, entityTypeId=None, ownerId=None, parentEntityId=None, name=None, description=None, binaryData=None, fullText=None, sharedCount=thrift_spec[10][4], originalEntityCreationTime=None, createdTime=None, updatedTime=None,):
+    self.entityId = entityId
+    self.domainId = domainId
+    self.entityTypeId = entityTypeId
+    self.ownerId = ownerId
+    self.parentEntityId = parentEntityId
+    self.name = name
+    self.description = description
+    self.binaryData = binaryData
+    self.fullText = fullText
+    self.sharedCount = sharedCount
+    self.originalEntityCreationTime = originalEntityCreationTime
+    self.createdTime = createdTime
+    self.updatedTime = updatedTime
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.entityId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.domainId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.entityTypeId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.ownerId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.parentEntityId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.description = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.binaryData = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.fullText = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.I64:
+          self.sharedCount = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.I64:
+          self.originalEntityCreationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.I64:
+          self.createdTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 13:
+        if ftype == TType.I64:
+          self.updatedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('Entity')
+    if self.entityId is not None:
+      oprot.writeFieldBegin('entityId', TType.STRING, 1)
+      oprot.writeString(self.entityId)
+      oprot.writeFieldEnd()
+    if self.domainId is not None:
+      oprot.writeFieldBegin('domainId', TType.STRING, 2)
+      oprot.writeString(self.domainId)
+      oprot.writeFieldEnd()
+    if self.entityTypeId is not None:
+      oprot.writeFieldBegin('entityTypeId', TType.STRING, 3)
+      oprot.writeString(self.entityTypeId)
+      oprot.writeFieldEnd()
+    if self.ownerId is not None:
+      oprot.writeFieldBegin('ownerId', TType.STRING, 4)
+      oprot.writeString(self.ownerId)
+      oprot.writeFieldEnd()
+    if self.parentEntityId is not None:
+      oprot.writeFieldBegin('parentEntityId', TType.STRING, 5)
+      oprot.writeString(self.parentEntityId)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 6)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 7)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    if self.binaryData is not None:
+      oprot.writeFieldBegin('binaryData', TType.STRING, 8)
+      oprot.writeString(self.binaryData)
+      oprot.writeFieldEnd()
+    if self.fullText is not None:
+      oprot.writeFieldBegin('fullText', TType.STRING, 9)
+      oprot.writeString(self.fullText)
+      oprot.writeFieldEnd()
+    if self.sharedCount is not None:
+      oprot.writeFieldBegin('sharedCount', TType.I64, 10)
+      oprot.writeI64(self.sharedCount)
+      oprot.writeFieldEnd()
+    if self.originalEntityCreationTime is not None:
+      oprot.writeFieldBegin('originalEntityCreationTime', TType.I64, 11)
+      oprot.writeI64(self.originalEntityCreationTime)
+      oprot.writeFieldEnd()
+    if self.createdTime is not None:
+      oprot.writeFieldBegin('createdTime', TType.I64, 12)
+      oprot.writeI64(self.createdTime)
+      oprot.writeFieldEnd()
+    if self.updatedTime is not None:
+      oprot.writeFieldBegin('updatedTime', TType.I64, 13)
+      oprot.writeI64(self.updatedTime)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.entityId)
+    value = (value * 31) ^ hash(self.domainId)
+    value = (value * 31) ^ hash(self.entityTypeId)
+    value = (value * 31) ^ hash(self.ownerId)
+    value = (value * 31) ^ hash(self.parentEntityId)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.description)
+    value = (value * 31) ^ hash(self.binaryData)
+    value = (value * 31) ^ hash(self.fullText)
+    value = (value * 31) ^ hash(self.sharedCount)
+    value = (value * 31) ^ hash(self.originalEntityCreationTime)
+    value = (value * 31) ^ hash(self.createdTime)
+    value = (value * 31) ^ hash(self.updatedTime)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class PermissionType:
+  """
+  <p>Object for creating client defined permission type</p>
+  <li><b>permissionTypeId</b> : Permission type id provided by the client</li>
+  <li><b>domainId</b> : Domain id</li>
+  <li><b>name</b> : Single word name for the permission</li>
+  <li>description : Short description for the permission type</li>
+  <li>createdTime : Will be set by the system</li>
+  <li>updatedTime : Will be set by the system</li>
+
+
+  Attributes:
+   - permissionTypeId
+   - domainId
+   - name
+   - description
+   - createdTime
+   - updatedTime
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'permissionTypeId', None, None, ), # 1
+    (2, TType.STRING, 'domainId', None, None, ), # 2
+    (3, TType.STRING, 'name', None, None, ), # 3
+    (4, TType.STRING, 'description', None, None, ), # 4
+    (5, TType.I64, 'createdTime', None, None, ), # 5
+    (6, TType.I64, 'updatedTime', None, None, ), # 6
+  )
+
+  def __init__(self, permissionTypeId=None, domainId=None, name=None, description=None, createdTime=None, updatedTime=None,):
+    self.permissionTypeId = permissionTypeId
+    self.domainId = domainId
+    self.name = name
+    self.description = description
+    self.createdTime = createdTime
+    self.updatedTime = updatedTime
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.permissionTypeId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.domainId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.description = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I64:
+          self.createdTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I64:
+          self.updatedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('PermissionType')
+    if self.permissionTypeId is not None:
+      oprot.writeFieldBegin('permissionTypeId', TType.STRING, 1)
+      oprot.writeString(self.permissionTypeId)
+      oprot.writeFieldEnd()
+    if self.domainId is not None:
+      oprot.writeFieldBegin('domainId', TType.STRING, 2)
+      oprot.writeString(self.domainId)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 3)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 4)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    if self.createdTime is not None:
+      oprot.writeFieldBegin('createdTime', TType.I64, 5)
+      oprot.writeI64(self.createdTime)
+      oprot.writeFieldEnd()
+    if self.updatedTime is not None:
+      oprot.writeFieldBegin('updatedTime', TType.I64, 6)
+      oprot.writeI64(self.updatedTime)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.permissionTypeId)
+    value = (value * 31) ^ hash(self.domainId)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.description)
+    value = (value * 31) ^ hash(self.createdTime)
+    value = (value * 31) ^ hash(self.updatedTime)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class Sharing:
+  """
+  <p>This is an internal enum type for managing sharings</p>
+
+
+  Attributes:
+   - permissionTypeId
+   - entityId
+   - groupId
+   - sharingType
+   - domainId
+   - inheritedParentId
+   - createdTime
+   - updatedTime
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'permissionTypeId', None, None, ), # 1
+    (2, TType.STRING, 'entityId', None, None, ), # 2
+    (3, TType.STRING, 'groupId', None, None, ), # 3
+    (4, TType.I32, 'sharingType', None, None, ), # 4
+    (5, TType.STRING, 'domainId', None, None, ), # 5
+    (6, TType.STRING, 'inheritedParentId', None, None, ), # 6
+    (7, TType.I64, 'createdTime', None, None, ), # 7
+    (8, TType.I64, 'updatedTime', None, None, ), # 8
+  )
+
+  def __init__(self, permissionTypeId=None, entityId=None, groupId=None, sharingType=None, domainId=None, inheritedParentId=None, createdTime=None, updatedTime=None,):
+    self.permissionTypeId = permissionTypeId
+    self.entityId = entityId
+    self.groupId = groupId
+    self.sharingType = sharingType
+    self.domainId = domainId
+    self.inheritedParentId = inheritedParentId
+    self.createdTime = createdTime
+    self.updatedTime = updatedTime
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.permissionTypeId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.entityId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.groupId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.sharingType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.domainId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.inheritedParentId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I64:
+          self.createdTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I64:
+          self.updatedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('Sharing')
+    if self.permissionTypeId is not None:
+      oprot.writeFieldBegin('permissionTypeId', TType.STRING, 1)
+      oprot.writeString(self.permissionTypeId)
+      oprot.writeFieldEnd()
+    if self.entityId is not None:
+      oprot.writeFieldBegin('entityId', TType.STRING, 2)
+      oprot.writeString(self.entityId)
+      oprot.writeFieldEnd()
+    if self.groupId is not None:
+      oprot.writeFieldBegin('groupId', TType.STRING, 3)
+      oprot.writeString(self.groupId)
+      oprot.writeFieldEnd()
+    if self.sharingType is not None:
+      oprot.writeFieldBegin('sharingType', TType.I32, 4)
+      oprot.writeI32(self.sharingType)
+      oprot.writeFieldEnd()
+    if self.domainId is not None:
+      oprot.writeFieldBegin('domainId', TType.STRING, 5)
+      oprot.writeString(self.domainId)
+      oprot.writeFieldEnd()
+    if self.inheritedParentId is not None:
+      oprot.writeFieldBegin('inheritedParentId', TType.STRING, 6)
+      oprot.writeString(self.inheritedParentId)
+      oprot.writeFieldEnd()
+    if self.createdTime is not None:
+      oprot.writeFieldBegin('createdTime', TType.I64, 7)
+      oprot.writeI64(self.createdTime)
+      oprot.writeFieldEnd()
+    if self.updatedTime is not None:
+      oprot.writeFieldBegin('updatedTime', TType.I64, 8)
+      oprot.writeI64(self.updatedTime)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.permissionTypeId)
+    value = (value * 31) ^ hash(self.entityId)
+    value = (value * 31) ^ hash(self.groupId)
+    value = (value * 31) ^ hash(self.sharingType)
+    value = (value * 31) ^ hash(self.domainId)
+    value = (value * 31) ^ hash(self.inheritedParentId)
+    value = (value * 31) ^ hash(self.createdTime)
+    value = (value * 31) ^ hash(self.updatedTime)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class SharingRegistryException(TException):
+  """
+  <p>Exception model used in the sharing registry service</p>
+
+
+  Attributes:
+   - message
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'message', None, None, ), # 1
+  )
+
+  def __init__(self, message=None,):
+    self.message = message
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.message = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('SharingRegistryException')
+    if self.message is not None:
+      oprot.writeFieldBegin('message', TType.STRING, 1)
+      oprot.writeString(self.message)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.message is None:
+      raise TProtocol.TProtocolException(message='Required field message is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.message)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class DuplicateEntryException(TException):
+  """
+  This exception is thrown when you try to save a duplicate entity that already exists
+    in the database.
+
+    message: contains the associated error message
+
+
+  Attributes:
+   - message
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'message', None, None, ), # 1
+  )
+
+  def __init__(self, message=None,):
+    self.message = message
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.message = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('DuplicateEntryException')
+    if self.message is not None:
+      oprot.writeFieldBegin('message', TType.STRING, 1)
+      oprot.writeString(self.message)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.message is None:
+      raise TProtocol.TProtocolException(message='Required field message is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.message)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/modules/sharing-registry/thrift_models/sharing_cpi.thrift
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/thrift_models/sharing_cpi.thrift b/modules/sharing-registry/thrift_models/sharing_cpi.thrift
index c408846..df543cc 100644
--- a/modules/sharing-registry/thrift_models/sharing_cpi.thrift
+++ b/modules/sharing-registry/thrift_models/sharing_cpi.thrift
@@ -19,6 +19,8 @@
  */
 
 namespace java org.apache.airavata.sharing.registry.service.cpi
+namespace php Airavata.API.Sharing
+namespace py apache.airavata.api.sharing
 
 include "./sharing_models.thrift"
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/modules/sharing-registry/thrift_models/sharing_models.thrift
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/thrift_models/sharing_models.thrift b/modules/sharing-registry/thrift_models/sharing_models.thrift
index 141f120..5189ee0 100644
--- a/modules/sharing-registry/thrift_models/sharing_models.thrift
+++ b/modules/sharing-registry/thrift_models/sharing_models.thrift
@@ -19,6 +19,8 @@
  */
 
  namespace java org.apache.airavata.sharing.registry.models
+ namespace php Airavata.Model.Sharing
+ namespace py apache.airavata.model.sharing
 
 const string DO_NOT_SET_AT_CLIENTS_ID = "DO_NOT_SET_AT_CLIENTS_ID"
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/thrift-interface-descriptions/generate-thrift-stubs.sh
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/generate-thrift-stubs.sh b/thrift-interface-descriptions/generate-thrift-stubs.sh
index ef3076c..287cf4a 100755
--- a/thrift-interface-descriptions/generate-thrift-stubs.sh
+++ b/thrift-interface-descriptions/generate-thrift-stubs.sh
@@ -23,7 +23,7 @@
 #    and Data Model java beans in java, C++, PHP and Python.
 
 show_usage() {
-	echo -e "Usage: $0 [--native-thrift] [Language to generate stubs]"
+	echo -e "Usage: $0 [docker-machine start--native-thrift] [Language to generate stubs]"
 	echo ""
 	echo "options:"
 	echo -e "\tjava Generate/Update Java Stubs"
@@ -77,7 +77,9 @@ setup() {
 
     # Thrift files
     AIRAVATA_API_THRIFT_FILE="${BASEDIR}airavata-apis/airavata_api.thrift"
+    SHARING_API_THRIFT_FILE="${BASEDIR}../modules/sharing-registry/thrift_models/sharing_cpi.thrift"
     DATAMODEL_THRIFT_FILE="${BASEDIR}data-models/airavata_data_models.thrift"
+    SHARING_DATAMODEL_THRIFT_FILE="${BASEDIR}../modules/sharing-registry/thrift_models/sharing_models.thrift"
     APP_CATALOG_THRIFT_FILE="${BASEDIR}data-models/app-catalog-models/app_catalog_models.thrift"
     RESOURCE_CATALOG_THRIFT_FILE="${BASEDIR}data-models/resource-catalog-models/resource_catalog_models.thrift"
     WORKFLOW_THRIFT_FILE="${BASEDIR}data-models/workflow-models/workflow_data_model.thrift"
@@ -228,9 +230,11 @@ generate_php_stubs() {
     # Using thrift Java generator, generate the PHP classes based on Airavata API. This
     #   The airavata_api.thrift includes rest of data models.
     $THRIFT_EXEC ${THRIFT_ARGS} --gen php:autoload ${DATAMODEL_THRIFT_FILE}  || fail unable to generate PHP thrift classes
+    $THRIFT_EXEC ${THRIFT_ARGS} --gen php:autoload ${SHARING_DATAMODEL_THRIFT_FILE}  || fail unable to generate PHP thrift classes
     $THRIFT_EXEC ${THRIFT_ARGS} --gen php:autoload ${APP_CATALOG_THRIFT_FILE}  || fail unable to generate PHP thrift classes
     $THRIFT_EXEC ${THRIFT_ARGS} --gen php:autoload ${RESOURCE_CATALOG_THRIFT_FILE}   || fail unable to generate PHP thrift classes
     $THRIFT_EXEC ${THRIFT_ARGS} --gen php:autoload ${AIRAVATA_API_THRIFT_FILE} || fail unable to generate PHP thrift classes
+    $THRIFT_EXEC ${THRIFT_ARGS} --gen php:autoload ${SHARING_API_THRIFT_FILE} || fail unable to generate PHP thrift classes
     $THRIFT_EXEC ${THRIFT_ARGS} --gen php:autoload ${PROFILE_SERVICE_THRIFT_FILE} || fail unable to generate PHP thrift classes
 
     # For the generated java classes add the ASF V2 License header
@@ -283,6 +287,8 @@ generate_python_stubs() {
     #   The airavata_api.thrift includes rest of data models.
     $THRIFT_EXEC ${THRIFT_ARGS} --gen py ${AIRAVATA_API_THRIFT_FILE}  || fail unable to generate Python thrift classes
 
+    $THRIFT_EXEC ${THRIFT_ARGS} --gen py ${SHARING_API_THRIFT_FILE}  || fail unable to generate Python thrift classes
+
     # For the generated CPP classes add the ASF V2 License header
     #add_license_header #PYTHON_GEN_DIR
 


[3/6] airavata git commit: adding sharing php and python thrift generated code to language specific sdks

Posted by sc...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Sharing/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Sharing/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Sharing/Types.php
new file mode 100644
index 0000000..56a6860
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Sharing/Types.php
@@ -0,0 +1,20 @@
+<?php
+namespace Airavata\API\Sharing;
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Sharing/Types.php
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..68acc4f
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Sharing/Types.php
@@ -0,0 +1,2360 @@
+<?php
+namespace Airavata\Model\Sharing;
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+/**
+ * <p>This is an system internal enum used to define single user groups and multi users groups. Every user is also
+ * considered as a group in it's own right for implementation ease</p>
+ * 
+ */
+final class GroupCardinality {
+  const SINGLE_USER = 0;
+  const MULTI_USER = 1;
+  static public $__names = array(
+    0 => 'SINGLE_USER',
+    1 => 'MULTI_USER',
+  );
+}
+
+/**
+ * <p>Group types can be either user level or domain level groups.</p>
+ * 
+ */
+final class GroupType {
+  const DOMAIN_LEVEL_GROUP = 0;
+  const USER_LEVEL_GROUP = 1;
+  static public $__names = array(
+    0 => 'DOMAIN_LEVEL_GROUP',
+    1 => 'USER_LEVEL_GROUP',
+  );
+}
+
+/**
+ * <p>System internal data type to match group child types</p>
+ * 
+ */
+final class GroupChildType {
+  const USER = 0;
+  const GROUP = 1;
+  static public $__names = array(
+    0 => 'USER',
+    1 => 'GROUP',
+  );
+}
+
+/**
+ * <p>This list of fields that can be used to search entities</p>
+ * <li>NAME : Name of the entity</li>
+ * <li>DESCRIPTION : Description of the entity</li>
+ * <li>FULL_TEXT : Full text field of the entity</li>
+ * <li>PARENT_ENTITY_ID : Parent entity id of the entity</li>
+ * <li>OWNER_ID : Owner of the entity</li>
+ * <li>CREATED_TIME : Created time of the entity</li>
+ * <li>UPDATED_TIME : Updated time of the entity</li>
+ * <li>SHARED_COUNT : Number of directly shared users and groups</li>
+ * 
+ */
+final class EntitySearchField {
+  const NAME = 0;
+  const DESCRIPTION = 1;
+  const FULL_TEXT = 2;
+  const PARRENT_ENTITY_ID = 3;
+  const OWNER_ID = 4;
+  const PERMISSION_TYPE_ID = 5;
+  const CREATED_TIME = 6;
+  const UPDATED_TIME = 7;
+  const ENTITY_TYPE_ID = 8;
+  const SHARED_COUNT = 9;
+  static public $__names = array(
+    0 => 'NAME',
+    1 => 'DESCRIPTION',
+    2 => 'FULL_TEXT',
+    3 => 'PARRENT_ENTITY_ID',
+    4 => 'OWNER_ID',
+    5 => 'PERMISSION_TYPE_ID',
+    6 => 'CREATED_TIME',
+    7 => 'UPDATED_TIME',
+    8 => 'ENTITY_TYPE_ID',
+    9 => 'SHARED_COUNT',
+  );
+}
+
+/**
+ * <p>Different search operators that can be used with the entity search fields</p>
+ * <li>EQUAL : Simply matches for equality. Applicable for name, and parent entity id</li>
+ * <li>LIKE : Check for the condition %$FIELD% condition. Applicable for name, and description</li>
+ * <li>FULL_TEXT : Does a full text search. Only applicable for the FULL_TEXT field.</li>
+ * <li>GTE : Greater than or equal. Only applicable for created time, updated time and shared count.</li>
+ * <li>LTE : Less than or equal. Only applicable for created time, updated time and shared count.</li>
+ * 
+ */
+final class SearchCondition {
+  const EQUAL = 0;
+  const LIKE = 1;
+  const FULL_TEXT = 2;
+  const GTE = 3;
+  const LTE = 4;
+  const NOT = 5;
+  static public $__names = array(
+    0 => 'EQUAL',
+    1 => 'LIKE',
+    2 => 'FULL_TEXT',
+    3 => 'GTE',
+    4 => 'LTE',
+    5 => 'NOT',
+  );
+}
+
+/**
+ * <p>This is an internal enum type for managing sharings</p>
+ * 
+ */
+final class SharingType {
+  const DIRECT_NON_CASCADING = 0;
+  const DIRECT_CASCADING = 1;
+  const INDIRECT_CASCADING = 2;
+  static public $__names = array(
+    0 => 'DIRECT_NON_CASCADING',
+    1 => 'DIRECT_CASCADING',
+    2 => 'INDIRECT_CASCADING',
+  );
+}
+
+/**
+ * <p>Domain is the entity that enables multi-tenency in this componenet. Every tenant will be
+ * operating separately it's own silo which is identified by the domain id. In the current implementation domain id
+ * will be same as the domain name</p>
+ * <li>domainId : Will be generated by the server based on the domain name</li>
+ * <li><b>name</b> : A single word name that identifies the domain e.g seagrid, ultrascan</li>
+ * <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>
+ * 
+ */
+class Domain {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $domainId = "DO_NOT_SET_AT_CLIENTS_ID";
+  /**
+   * @var string
+   */
+  public $name = null;
+  /**
+   * @var string
+   */
+  public $description = null;
+  /**
+   * @var int
+   */
+  public $createdTime = null;
+  /**
+   * @var int
+   */
+  public $updatedTime = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'domainId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'name',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'description',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'createdTime',
+          'type' => TType::I64,
+          ),
+        5 => array(
+          'var' => 'updatedTime',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['domainId'])) {
+        $this->domainId = $vals['domainId'];
+      }
+      if (isset($vals['name'])) {
+        $this->name = $vals['name'];
+      }
+      if (isset($vals['description'])) {
+        $this->description = $vals['description'];
+      }
+      if (isset($vals['createdTime'])) {
+        $this->createdTime = $vals['createdTime'];
+      }
+      if (isset($vals['updatedTime'])) {
+        $this->updatedTime = $vals['updatedTime'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Domain';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->domainId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->name);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->description);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->createdTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->updatedTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Domain');
+    if ($this->domainId !== null) {
+      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
+      $xfer += $output->writeString($this->domainId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->name !== null) {
+      $xfer += $output->writeFieldBegin('name', TType::STRING, 2);
+      $xfer += $output->writeString($this->name);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->description !== null) {
+      $xfer += $output->writeFieldBegin('description', TType::STRING, 3);
+      $xfer += $output->writeString($this->description);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->createdTime !== null) {
+      $xfer += $output->writeFieldBegin('createdTime', TType::I64, 4);
+      $xfer += $output->writeI64($this->createdTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->updatedTime !== null) {
+      $xfer += $output->writeFieldBegin('updatedTime', TType::I64, 5);
+      $xfer += $output->writeI64($this->updatedTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * <p>User is the model used to register a user in the system. Minimal user information will be required to provide
+ * regarding the user.</p>
+ * <li><b>userId</b> : User id provided by the client</li>
+ * <li><b>domainId</b> : Domain id for that user</li>
+ * <li><b>userName</b> : User name for the user</li>
+ * <li><b>firstName</b> : First name of the user</li>
+ * <li><b>lastName</b> : Last name of the user</li>
+ * <li><b>email</b> : Email address of the user</li>
+ * <li>icon : A binary field for storing the user icon</li>
+ * <li>createdTime : If client provides this value then the system will use it if not the current time will be set</li>
+ * <li>updatedTime : If client provides this value then the system will use it if not the current time will be set</li>
+ * 
+ */
+class User {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $userId = null;
+  /**
+   * @var string
+   */
+  public $domainId = null;
+  /**
+   * @var string
+   */
+  public $userName = null;
+  /**
+   * @var string
+   */
+  public $firstName = null;
+  /**
+   * @var string
+   */
+  public $lastName = null;
+  /**
+   * @var string
+   */
+  public $email = null;
+  /**
+   * @var string
+   */
+  public $icon = null;
+  /**
+   * @var int
+   */
+  public $createdTime = null;
+  /**
+   * @var int
+   */
+  public $updatedTime = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'userId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'domainId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'userName',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'firstName',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'lastName',
+          'type' => TType::STRING,
+          ),
+        6 => array(
+          'var' => 'email',
+          'type' => TType::STRING,
+          ),
+        7 => array(
+          'var' => 'icon',
+          'type' => TType::STRING,
+          ),
+        8 => array(
+          'var' => 'createdTime',
+          'type' => TType::I64,
+          ),
+        9 => array(
+          'var' => 'updatedTime',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['userId'])) {
+        $this->userId = $vals['userId'];
+      }
+      if (isset($vals['domainId'])) {
+        $this->domainId = $vals['domainId'];
+      }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
+      }
+      if (isset($vals['firstName'])) {
+        $this->firstName = $vals['firstName'];
+      }
+      if (isset($vals['lastName'])) {
+        $this->lastName = $vals['lastName'];
+      }
+      if (isset($vals['email'])) {
+        $this->email = $vals['email'];
+      }
+      if (isset($vals['icon'])) {
+        $this->icon = $vals['icon'];
+      }
+      if (isset($vals['createdTime'])) {
+        $this->createdTime = $vals['createdTime'];
+      }
+      if (isset($vals['updatedTime'])) {
+        $this->updatedTime = $vals['updatedTime'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'User';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->domainId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->firstName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->lastName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->email);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->icon);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->createdTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->updatedTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('User');
+    if ($this->userId !== null) {
+      $xfer += $output->writeFieldBegin('userId', TType::STRING, 1);
+      $xfer += $output->writeString($this->userId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->domainId !== null) {
+      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 2);
+      $xfer += $output->writeString($this->domainId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 3);
+      $xfer += $output->writeString($this->userName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->firstName !== null) {
+      $xfer += $output->writeFieldBegin('firstName', TType::STRING, 4);
+      $xfer += $output->writeString($this->firstName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->lastName !== null) {
+      $xfer += $output->writeFieldBegin('lastName', TType::STRING, 5);
+      $xfer += $output->writeString($this->lastName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->email !== null) {
+      $xfer += $output->writeFieldBegin('email', TType::STRING, 6);
+      $xfer += $output->writeString($this->email);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->icon !== null) {
+      $xfer += $output->writeFieldBegin('icon', TType::STRING, 7);
+      $xfer += $output->writeString($this->icon);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->createdTime !== null) {
+      $xfer += $output->writeFieldBegin('createdTime', TType::I64, 8);
+      $xfer += $output->writeI64($this->createdTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->updatedTime !== null) {
+      $xfer += $output->writeFieldBegin('updatedTime', TType::I64, 9);
+      $xfer += $output->writeI64($this->updatedTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * <p>User group is a collection of users.</p>
+ *  <li><b>groupId</b> : Group id provided by the client</li>
+ *  <li><b>domainId</b> : Domain id for this user group</li>
+ *  <li><b>name</b> : Name for the user group. should be one word</li>
+ *  <li>description : Short description for the group.</li>
+ *  <li><b>ownerId</b> : Owner id of this group.</li>
+ *  <li><b>groupType</b> : Group type (DOMAIN_LEVEL_GROUP, USER_LEVEL_GROUP)</li>
+ *  <li><b>groupCardinality</b> : Group cardinality (SINGLE_USER, MULTI_USER)</li>
+ *  <li>createdTime : Will be set by the system</li>
+ *  <li>updatedTime : Will be set by the system</li>
+ *  
+ */
+class UserGroup {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $groupId = null;
+  /**
+   * @var string
+   */
+  public $domainId = null;
+  /**
+   * @var string
+   */
+  public $name = null;
+  /**
+   * @var string
+   */
+  public $description = null;
+  /**
+   * @var string
+   */
+  public $ownerId = null;
+  /**
+   * @var int
+   */
+  public $groupType = null;
+  /**
+   * @var int
+   */
+  public $groupCardinality = null;
+  /**
+   * @var int
+   */
+  public $createdTime = null;
+  /**
+   * @var int
+   */
+  public $updatedTime = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'groupId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'domainId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'name',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'description',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'ownerId',
+          'type' => TType::STRING,
+          ),
+        6 => array(
+          'var' => 'groupType',
+          'type' => TType::I32,
+          ),
+        7 => array(
+          'var' => 'groupCardinality',
+          'type' => TType::I32,
+          ),
+        8 => array(
+          'var' => 'createdTime',
+          'type' => TType::I64,
+          ),
+        9 => array(
+          'var' => 'updatedTime',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['groupId'])) {
+        $this->groupId = $vals['groupId'];
+      }
+      if (isset($vals['domainId'])) {
+        $this->domainId = $vals['domainId'];
+      }
+      if (isset($vals['name'])) {
+        $this->name = $vals['name'];
+      }
+      if (isset($vals['description'])) {
+        $this->description = $vals['description'];
+      }
+      if (isset($vals['ownerId'])) {
+        $this->ownerId = $vals['ownerId'];
+      }
+      if (isset($vals['groupType'])) {
+        $this->groupType = $vals['groupType'];
+      }
+      if (isset($vals['groupCardinality'])) {
+        $this->groupCardinality = $vals['groupCardinality'];
+      }
+      if (isset($vals['createdTime'])) {
+        $this->createdTime = $vals['createdTime'];
+      }
+      if (isset($vals['updatedTime'])) {
+        $this->updatedTime = $vals['updatedTime'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'UserGroup';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->groupId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->domainId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->name);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->description);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->ownerId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->groupType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->groupCardinality);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->createdTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->updatedTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('UserGroup');
+    if ($this->groupId !== null) {
+      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 1);
+      $xfer += $output->writeString($this->groupId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->domainId !== null) {
+      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 2);
+      $xfer += $output->writeString($this->domainId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->name !== null) {
+      $xfer += $output->writeFieldBegin('name', TType::STRING, 3);
+      $xfer += $output->writeString($this->name);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->description !== null) {
+      $xfer += $output->writeFieldBegin('description', TType::STRING, 4);
+      $xfer += $output->writeString($this->description);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ownerId !== null) {
+      $xfer += $output->writeFieldBegin('ownerId', TType::STRING, 5);
+      $xfer += $output->writeString($this->ownerId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->groupType !== null) {
+      $xfer += $output->writeFieldBegin('groupType', TType::I32, 6);
+      $xfer += $output->writeI32($this->groupType);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->groupCardinality !== null) {
+      $xfer += $output->writeFieldBegin('groupCardinality', TType::I32, 7);
+      $xfer += $output->writeI32($this->groupCardinality);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->createdTime !== null) {
+      $xfer += $output->writeFieldBegin('createdTime', TType::I64, 8);
+      $xfer += $output->writeI64($this->createdTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->updatedTime !== null) {
+      $xfer += $output->writeFieldBegin('updatedTime', TType::I64, 9);
+      $xfer += $output->writeI64($this->updatedTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * <p>System internal data type to map group memberships</p>
+ * 
+ */
+class GroupMembership {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $parentId = null;
+  /**
+   * @var string
+   */
+  public $childId = null;
+  /**
+   * @var string
+   */
+  public $domainId = null;
+  /**
+   * @var int
+   */
+  public $childType = null;
+  /**
+   * @var int
+   */
+  public $createdTime = null;
+  /**
+   * @var int
+   */
+  public $updatedTime = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'parentId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'childId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'domainId',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'childType',
+          'type' => TType::I32,
+          ),
+        5 => array(
+          'var' => 'createdTime',
+          'type' => TType::I64,
+          ),
+        6 => array(
+          'var' => 'updatedTime',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['parentId'])) {
+        $this->parentId = $vals['parentId'];
+      }
+      if (isset($vals['childId'])) {
+        $this->childId = $vals['childId'];
+      }
+      if (isset($vals['domainId'])) {
+        $this->domainId = $vals['domainId'];
+      }
+      if (isset($vals['childType'])) {
+        $this->childType = $vals['childType'];
+      }
+      if (isset($vals['createdTime'])) {
+        $this->createdTime = $vals['createdTime'];
+      }
+      if (isset($vals['updatedTime'])) {
+        $this->updatedTime = $vals['updatedTime'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupMembership';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->parentId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->childId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->domainId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->childType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->createdTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->updatedTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupMembership');
+    if ($this->parentId !== null) {
+      $xfer += $output->writeFieldBegin('parentId', TType::STRING, 1);
+      $xfer += $output->writeString($this->parentId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->childId !== null) {
+      $xfer += $output->writeFieldBegin('childId', TType::STRING, 2);
+      $xfer += $output->writeString($this->childId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->domainId !== null) {
+      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 3);
+      $xfer += $output->writeString($this->domainId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->childType !== null) {
+      $xfer += $output->writeFieldBegin('childType', TType::I32, 4);
+      $xfer += $output->writeI32($this->childType);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->createdTime !== null) {
+      $xfer += $output->writeFieldBegin('createdTime', TType::I64, 5);
+      $xfer += $output->writeI64($this->createdTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->updatedTime !== null) {
+      $xfer += $output->writeFieldBegin('updatedTime', TType::I64, 6);
+      $xfer += $output->writeI64($this->updatedTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * <p>client defined entity types</p>
+ * <li><b>entityTypeId</b> : Entity type id provided by the client</li>
+ * <li><b>domainId</b> : Domain id of the domain.</li>
+ * <li><b>name</b> : Name for the entity type. Should be a single word.</li>
+ * <li>description : Short description for the entity type.</li>
+ * <li>createdTime : Will be set by the system</li>
+ * <li>updatedTime : Will be set by the system</li>
+ * 
+ */
+class EntityType {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $entityTypeId = null;
+  /**
+   * @var string
+   */
+  public $domainId = null;
+  /**
+   * @var string
+   */
+  public $name = null;
+  /**
+   * @var string
+   */
+  public $description = null;
+  /**
+   * @var int
+   */
+  public $createdTime = null;
+  /**
+   * @var int
+   */
+  public $updatedTime = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'entityTypeId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'domainId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'name',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'description',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'createdTime',
+          'type' => TType::I64,
+          ),
+        6 => array(
+          'var' => 'updatedTime',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['entityTypeId'])) {
+        $this->entityTypeId = $vals['entityTypeId'];
+      }
+      if (isset($vals['domainId'])) {
+        $this->domainId = $vals['domainId'];
+      }
+      if (isset($vals['name'])) {
+        $this->name = $vals['name'];
+      }
+      if (isset($vals['description'])) {
+        $this->description = $vals['description'];
+      }
+      if (isset($vals['createdTime'])) {
+        $this->createdTime = $vals['createdTime'];
+      }
+      if (isset($vals['updatedTime'])) {
+        $this->updatedTime = $vals['updatedTime'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'EntityType';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->entityTypeId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->domainId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->name);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->description);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->createdTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->updatedTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('EntityType');
+    if ($this->entityTypeId !== null) {
+      $xfer += $output->writeFieldBegin('entityTypeId', TType::STRING, 1);
+      $xfer += $output->writeString($this->entityTypeId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->domainId !== null) {
+      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 2);
+      $xfer += $output->writeString($this->domainId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->name !== null) {
+      $xfer += $output->writeFieldBegin('name', TType::STRING, 3);
+      $xfer += $output->writeString($this->name);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->description !== null) {
+      $xfer += $output->writeFieldBegin('description', TType::STRING, 4);
+      $xfer += $output->writeString($this->description);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->createdTime !== null) {
+      $xfer += $output->writeFieldBegin('createdTime', TType::I64, 5);
+      $xfer += $output->writeI64($this->createdTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->updatedTime !== null) {
+      $xfer += $output->writeFieldBegin('updatedTime', TType::I64, 6);
+      $xfer += $output->writeI64($this->updatedTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * <p>Container object for search criteria</p>
+ * <li><b>searchField</b> : Entity search field</li>
+ * <li><b>value</b> : Search value</li>
+ * <li><b>searchCondition</b> : EQUAL, LIKE etc..</li>
+ * 
+ */
+class SearchCriteria {
+  static $_TSPEC;
+
+  /**
+   * @var int
+   */
+  public $searchField = null;
+  /**
+   * @var string
+   */
+  public $value = null;
+  /**
+   * @var int
+   */
+  public $searchCondition = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'searchField',
+          'type' => TType::I32,
+          ),
+        2 => array(
+          'var' => 'value',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'searchCondition',
+          'type' => TType::I32,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['searchField'])) {
+        $this->searchField = $vals['searchField'];
+      }
+      if (isset($vals['value'])) {
+        $this->value = $vals['value'];
+      }
+      if (isset($vals['searchCondition'])) {
+        $this->searchCondition = $vals['searchCondition'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'SearchCriteria';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->searchField);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->value);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->searchCondition);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('SearchCriteria');
+    if ($this->searchField !== null) {
+      $xfer += $output->writeFieldBegin('searchField', TType::I32, 1);
+      $xfer += $output->writeI32($this->searchField);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->value !== null) {
+      $xfer += $output->writeFieldBegin('value', TType::STRING, 2);
+      $xfer += $output->writeString($this->value);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->searchCondition !== null) {
+      $xfer += $output->writeFieldBegin('searchCondition', TType::I32, 3);
+      $xfer += $output->writeI32($this->searchCondition);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * <p>Entity object which is used to register an entity in the system.</p>
+ * <li><b>entityId</b> : Entity id provided by the client</li>
+ * <li><b>domainId</b> : Domain id</li>
+ * <li><b>entityTypeId</b> : Entity type id</li>
+ * <li><b>ownerId</b> : Owner id</li>
+ * <li>parentEntityId : Parent entity id</li>
+ * <li><b>name</b> : Name</li>
+ * <li>description : Short description for the entity</li>
+ * <li>binaryData : Any information stored in binary format</li>
+ * <li>fullText : A string which will be considered for full text search</li>
+ * <li><b>originalEntityCreationTime</b> : When registering old records what is the original entity creation time. If not
+ * set will be default to current time</li>
+ * <li>createdTime : Will be set by the system</li>
+ * <li>updatedTime : Will be set by the system</li>
+ * 
+ */
+class Entity {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $entityId = null;
+  /**
+   * @var string
+   */
+  public $domainId = null;
+  /**
+   * @var string
+   */
+  public $entityTypeId = null;
+  /**
+   * @var string
+   */
+  public $ownerId = null;
+  /**
+   * @var string
+   */
+  public $parentEntityId = null;
+  /**
+   * @var string
+   */
+  public $name = null;
+  /**
+   * @var string
+   */
+  public $description = null;
+  /**
+   * @var string
+   */
+  public $binaryData = null;
+  /**
+   * @var string
+   */
+  public $fullText = null;
+  /**
+   * @var int
+   */
+  public $sharedCount = 0;
+  /**
+   * @var int
+   */
+  public $originalEntityCreationTime = null;
+  /**
+   * @var int
+   */
+  public $createdTime = null;
+  /**
+   * @var int
+   */
+  public $updatedTime = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'entityId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'domainId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'entityTypeId',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'ownerId',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'parentEntityId',
+          'type' => TType::STRING,
+          ),
+        6 => array(
+          'var' => 'name',
+          'type' => TType::STRING,
+          ),
+        7 => array(
+          'var' => 'description',
+          'type' => TType::STRING,
+          ),
+        8 => array(
+          'var' => 'binaryData',
+          'type' => TType::STRING,
+          ),
+        9 => array(
+          'var' => 'fullText',
+          'type' => TType::STRING,
+          ),
+        10 => array(
+          'var' => 'sharedCount',
+          'type' => TType::I64,
+          ),
+        11 => array(
+          'var' => 'originalEntityCreationTime',
+          'type' => TType::I64,
+          ),
+        12 => array(
+          'var' => 'createdTime',
+          'type' => TType::I64,
+          ),
+        13 => array(
+          'var' => 'updatedTime',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['entityId'])) {
+        $this->entityId = $vals['entityId'];
+      }
+      if (isset($vals['domainId'])) {
+        $this->domainId = $vals['domainId'];
+      }
+      if (isset($vals['entityTypeId'])) {
+        $this->entityTypeId = $vals['entityTypeId'];
+      }
+      if (isset($vals['ownerId'])) {
+        $this->ownerId = $vals['ownerId'];
+      }
+      if (isset($vals['parentEntityId'])) {
+        $this->parentEntityId = $vals['parentEntityId'];
+      }
+      if (isset($vals['name'])) {
+        $this->name = $vals['name'];
+      }
+      if (isset($vals['description'])) {
+        $this->description = $vals['description'];
+      }
+      if (isset($vals['binaryData'])) {
+        $this->binaryData = $vals['binaryData'];
+      }
+      if (isset($vals['fullText'])) {
+        $this->fullText = $vals['fullText'];
+      }
+      if (isset($vals['sharedCount'])) {
+        $this->sharedCount = $vals['sharedCount'];
+      }
+      if (isset($vals['originalEntityCreationTime'])) {
+        $this->originalEntityCreationTime = $vals['originalEntityCreationTime'];
+      }
+      if (isset($vals['createdTime'])) {
+        $this->createdTime = $vals['createdTime'];
+      }
+      if (isset($vals['updatedTime'])) {
+        $this->updatedTime = $vals['updatedTime'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Entity';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->entityId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->domainId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->entityTypeId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->ownerId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->parentEntityId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->name);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->description);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->binaryData);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->fullText);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 10:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->sharedCount);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 11:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->originalEntityCreationTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 12:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->createdTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 13:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->updatedTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Entity');
+    if ($this->entityId !== null) {
+      $xfer += $output->writeFieldBegin('entityId', TType::STRING, 1);
+      $xfer += $output->writeString($this->entityId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->domainId !== null) {
+      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 2);
+      $xfer += $output->writeString($this->domainId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->entityTypeId !== null) {
+      $xfer += $output->writeFieldBegin('entityTypeId', TType::STRING, 3);
+      $xfer += $output->writeString($this->entityTypeId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ownerId !== null) {
+      $xfer += $output->writeFieldBegin('ownerId', TType::STRING, 4);
+      $xfer += $output->writeString($this->ownerId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->parentEntityId !== null) {
+      $xfer += $output->writeFieldBegin('parentEntityId', TType::STRING, 5);
+      $xfer += $output->writeString($this->parentEntityId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->name !== null) {
+      $xfer += $output->writeFieldBegin('name', TType::STRING, 6);
+      $xfer += $output->writeString($this->name);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->description !== null) {
+      $xfer += $output->writeFieldBegin('description', TType::STRING, 7);
+      $xfer += $output->writeString($this->description);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->binaryData !== null) {
+      $xfer += $output->writeFieldBegin('binaryData', TType::STRING, 8);
+      $xfer += $output->writeString($this->binaryData);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->fullText !== null) {
+      $xfer += $output->writeFieldBegin('fullText', TType::STRING, 9);
+      $xfer += $output->writeString($this->fullText);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->sharedCount !== null) {
+      $xfer += $output->writeFieldBegin('sharedCount', TType::I64, 10);
+      $xfer += $output->writeI64($this->sharedCount);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->originalEntityCreationTime !== null) {
+      $xfer += $output->writeFieldBegin('originalEntityCreationTime', TType::I64, 11);
+      $xfer += $output->writeI64($this->originalEntityCreationTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->createdTime !== null) {
+      $xfer += $output->writeFieldBegin('createdTime', TType::I64, 12);
+      $xfer += $output->writeI64($this->createdTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->updatedTime !== null) {
+      $xfer += $output->writeFieldBegin('updatedTime', TType::I64, 13);
+      $xfer += $output->writeI64($this->updatedTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * <p>Object for creating client defined permission type</p>
+ * <li><b>permissionTypeId</b> : Permission type id provided by the client</li>
+ * <li><b>domainId</b> : Domain id</li>
+ * <li><b>name</b> : Single word name for the permission</li>
+ * <li>description : Short description for the permission type</li>
+ * <li>createdTime : Will be set by the system</li>
+ * <li>updatedTime : Will be set by the system</li>
+ * 
+ */
+class PermissionType {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $permissionTypeId = null;
+  /**
+   * @var string
+   */
+  public $domainId = null;
+  /**
+   * @var string
+   */
+  public $name = null;
+  /**
+   * @var string
+   */
+  public $description = null;
+  /**
+   * @var int
+   */
+  public $createdTime = null;
+  /**
+   * @var int
+   */
+  public $updatedTime = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'permissionTypeId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'domainId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'name',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'description',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'createdTime',
+          'type' => TType::I64,
+          ),
+        6 => array(
+          'var' => 'updatedTime',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['permissionTypeId'])) {
+        $this->permissionTypeId = $vals['permissionTypeId'];
+      }
+      if (isset($vals['domainId'])) {
+        $this->domainId = $vals['domainId'];
+      }
+      if (isset($vals['name'])) {
+        $this->name = $vals['name'];
+      }
+      if (isset($vals['description'])) {
+        $this->description = $vals['description'];
+      }
+      if (isset($vals['createdTime'])) {
+        $this->createdTime = $vals['createdTime'];
+      }
+      if (isset($vals['updatedTime'])) {
+        $this->updatedTime = $vals['updatedTime'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'PermissionType';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->permissionTypeId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->domainId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->name);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->description);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->createdTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->updatedTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('PermissionType');
+    if ($this->permissionTypeId !== null) {
+      $xfer += $output->writeFieldBegin('permissionTypeId', TType::STRING, 1);
+      $xfer += $output->writeString($this->permissionTypeId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->domainId !== null) {
+      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 2);
+      $xfer += $output->writeString($this->domainId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->name !== null) {
+      $xfer += $output->writeFieldBegin('name', TType::STRING, 3);
+      $xfer += $output->writeString($this->name);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->description !== null) {
+      $xfer += $output->writeFieldBegin('description', TType::STRING, 4);
+      $xfer += $output->writeString($this->description);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->createdTime !== null) {
+      $xfer += $output->writeFieldBegin('createdTime', TType::I64, 5);
+      $xfer += $output->writeI64($this->createdTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->updatedTime !== null) {
+      $xfer += $output->writeFieldBegin('updatedTime', TType::I64, 6);
+      $xfer += $output->writeI64($this->updatedTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * <p>This is an internal enum type for managing sharings</p>
+ * 
+ */
+class Sharing {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $permissionTypeId = null;
+  /**
+   * @var string
+   */
+  public $entityId = null;
+  /**
+   * @var string
+   */
+  public $groupId = null;
+  /**
+   * @var int
+   */
+  public $sharingType = null;
+  /**
+   * @var string
+   */
+  public $domainId = null;
+  /**
+   * @var string
+   */
+  public $inheritedParentId = null;
+  /**
+   * @var int
+   */
+  public $createdTime = null;
+  /**
+   * @var int
+   */
+  public $updatedTime = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'permissionTypeId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'entityId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'groupId',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'sharingType',
+          'type' => TType::I32,
+          ),
+        5 => array(
+          'var' => 'domainId',
+          'type' => TType::STRING,
+          ),
+        6 => array(
+          'var' => 'inheritedParentId',
+          'type' => TType::STRING,
+          ),
+        7 => array(
+          'var' => 'createdTime',
+          'type' => TType::I64,
+          ),
+        8 => array(
+          'var' => 'updatedTime',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['permissionTypeId'])) {
+        $this->permissionTypeId = $vals['permissionTypeId'];
+      }
+      if (isset($vals['entityId'])) {
+        $this->entityId = $vals['entityId'];
+      }
+      if (isset($vals['groupId'])) {
+        $this->groupId = $vals['groupId'];
+      }
+      if (isset($vals['sharingType'])) {
+        $this->sharingType = $vals['sharingType'];
+      }
+      if (isset($vals['domainId'])) {
+        $this->domainId = $vals['domainId'];
+      }
+      if (isset($vals['inheritedParentId'])) {
+        $this->inheritedParentId = $vals['inheritedParentId'];
+      }
+      if (isset($vals['createdTime'])) {
+        $this->createdTime = $vals['createdTime'];
+      }
+      if (isset($vals['updatedTime'])) {
+        $this->updatedTime = $vals['updatedTime'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Sharing';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->permissionTypeId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->entityId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->groupId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->sharingType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->domainId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->inheritedParentId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->createdTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->updatedTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Sharing');
+    if ($this->permissionTypeId !== null) {
+      $xfer += $output->writeFieldBegin('permissionTypeId', TType::STRING, 1);
+      $xfer += $output->writeString($this->permissionTypeId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->entityId !== null) {
+      $xfer += $output->writeFieldBegin('entityId', TType::STRING, 2);
+      $xfer += $output->writeString($this->entityId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->groupId !== null) {
+      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 3);
+      $xfer += $output->writeString($this->groupId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->sharingType !== null) {
+      $xfer += $output->writeFieldBegin('sharingType', TType::I32, 4);
+      $xfer += $output->writeI32($this->sharingType);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->domainId !== null) {
+      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 5);
+      $xfer += $output->writeString($this->domainId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->inheritedParentId !== null) {
+      $xfer += $output->writeFieldBegin('inheritedParentId', TType::STRING, 6);
+      $xfer += $output->writeString($this->inheritedParentId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->createdTime !== null) {
+      $xfer += $output->writeFieldBegin('createdTime', TType::I64, 7);
+      $xfer += $output->writeI64($this->createdTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->updatedTime !== null) {
+      $xfer += $output->writeFieldBegin('updatedTime', TType::I64, 8);
+      $xfer += $output->writeI64($this->updatedTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * <p>Exception model used in the sharing registry service</p>
+ * 
+ */
+class SharingRegistryException extends TException {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $message = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'message',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['message'])) {
+        $this->message = $vals['message'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'SharingRegistryException';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->message);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('SharingRegistryException');
+    if ($this->message !== null) {
+      $xfer += $output->writeFieldBegin('message', TType::STRING, 1);
+      $xfer += $output->writeString($this->message);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * This exception is thrown when you try to save a duplicate entity that already exists
+ *   in the database.
+ * 
+ *   message: contains the associated error message
+ * 
+ */
+class DuplicateEntryException extends TException {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $message = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'message',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['message'])) {
+        $this->message = $vals['message'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'DuplicateEntryException';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->message);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('DuplicateEntryException');
+    if ($this->message !== null) {
+      $xfer += $output->writeFieldBegin('message', TType::STRING, 1);
+      $xfer += $output->writeString($this->message);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+final class Constant extends \Thrift\Type\TConstant {
+  static protected $DO_NOT_SET_AT_CLIENTS_ID;
+
+  static protected function init_DO_NOT_SET_AT_CLIENTS_ID() {
+    return "DO_NOT_SET_AT_CLIENTS_ID";
+  }
+}
+
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/SharingRegistryService-remote
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/SharingRegistryService-remote b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/SharingRegistryService-remote
new file mode 100755
index 0000000..9ec9a1c
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/SharingRegistryService-remote
@@ -0,0 +1,437 @@
+#!/usr/bin/env python
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+import sys
+import pprint
+from urlparse import urlparse
+from thrift.transport import TTransport
+from thrift.transport import TSocket
+from thrift.transport import TSSLSocket
+from thrift.transport import THttpClient
+from thrift.protocol import TBinaryProtocol
+
+from apache.airavata.api.sharing import SharingRegistryService
+from apache.airavata.api.sharing.ttypes import *
+
+if len(sys.argv) <= 1 or sys.argv[1] == '--help':
+  print('')
+  print('Usage: ' + sys.argv[0] + ' [-h host[:port]] [-u url] [-f[ramed]] [-s[sl]] function [arg1 [arg2...]]')
+  print('')
+  print('Functions:')
+  print('  string createDomain(Domain domain)')
+  print('  bool updateDomain(Domain domain)')
+  print('  bool isDomainExists(string domainId)')
+  print('  bool deleteDomain(string domainId)')
+  print('  Domain getDomain(string domainId)')
+  print('   getDomains(i32 offset, i32 limit)')
+  print('  string createUser(User user)')
+  print('  bool updatedUser(User user)')
+  print('  bool isUserExists(string domainId, string userId)')
+  print('  bool deleteUser(string domainId, string userId)')
+  print('  User getUser(string domainId, string userId)')
+  print('   getUsers(string domainId, i32 offset, i32 limit)')
+  print('  string createGroup(UserGroup group)')
+  print('  bool updateGroup(UserGroup group)')
+  print('  bool isGroupExists(string domainId, string groupId)')
+  print('  bool deleteGroup(string domainId, string groupId)')
+  print('  UserGroup getGroup(string domainId, string groupId)')
+  print('   getGroups(string domainId, i32 offset, i32 limit)')
+  print('  bool addUsersToGroup(string domainId,  userIds, string groupId)')
+  print('  bool removeUsersFromGroup(string domainId,  userIds, string groupId)')
+  print('   getGroupMembersOfTypeUser(string domainId, string groupId, i32 offset, i32 limit)')
+  print('   getGroupMembersOfTypeGroup(string domainId, string groupId, i32 offset, i32 limit)')
+  print('  bool addChildGroupsToParentGroup(string domainId,  childIds, string groupId)')
+  print('  bool removeChildGroupFromParentGroup(string domainId, string childId, string groupId)')
+  print('   getAllMemberGroupsForUser(string domainId, string userId)')
+  print('  string createEntityType(EntityType entityType)')
+  print('  bool updateEntityType(EntityType entityType)')
+  print('  bool isEntityTypeExists(string domainId, string entityTypeId)')
+  print('  bool deleteEntityType(string domainId, string entityTypeId)')
+  print('  EntityType getEntityType(string domainId, string entityTypeId)')
+  print('   getEntityTypes(string domainId, i32 offset, i32 limit)')
+  print('  string createEntity(Entity entity)')
+  print('  bool updateEntity(Entity entity)')
+  print('  bool isEntityExists(string domainId, string entityId)')
+  print('  bool deleteEntity(string domainId, string entityId)')
+  print('  Entity getEntity(string domainId, string entityId)')
+  print('   searchEntities(string domainId, string userId,  filters, i32 offset, i32 limit)')
+  print('   getListOfSharedUsers(string domainId, string entityId, string permissionTypeId)')
+  print('   getListOfSharedGroups(string domainId, string entityId, string permissionTypeId)')
+  print('  string createPermissionType(PermissionType permissionType)')
+  print('  bool updatePermissionType(PermissionType permissionType)')
+  print('  bool isPermissionExists(string dimainId, string permissionId)')
+  print('  bool deletePermissionType(string domainId, string permissionTypeId)')
+  print('  PermissionType getPermissionType(string domainId, string permissionTypeId)')
+  print('   getPermissionTypes(string domainId, i32 offset, i32 limit)')
+  print('  bool shareEntityWithUsers(string domainId, string entityId,  userList, string perssionTypeId, bool cascadePermission)')
+  print('  bool revokeEntitySharingFromUsers(string domainId, string entityId,  userList, string perssionTypeId)')
+  print('  bool shareEntityWithGroups(string domainId, string entityId,  groupList, string perssionTypeId, bool cascadePermission)')
+  print('  bool revokeEntitySharingFromGroups(string domainId, string entityId,  groupList, string perssionTypeId)')
+  print('  bool userHasAccess(string domainId, string userId, string entityId, string permissionTypeId)')
+  print('')
+  sys.exit(0)
+
+pp = pprint.PrettyPrinter(indent = 2)
+host = 'localhost'
+port = 9090
+uri = ''
+framed = False
+ssl = False
+http = False
+argi = 1
+
+if sys.argv[argi] == '-h':
+  parts = sys.argv[argi+1].split(':')
+  host = parts[0]
+  if len(parts) > 1:
+    port = int(parts[1])
+  argi += 2
+
+if sys.argv[argi] == '-u':
+  url = urlparse(sys.argv[argi+1])
+  parts = url[1].split(':')
+  host = parts[0]
+  if len(parts) > 1:
+    port = int(parts[1])
+  else:
+    port = 80
+  uri = url[2]
+  if url[4]:
+    uri += '?%s' % url[4]
+  http = True
+  argi += 2
+
+if sys.argv[argi] == '-f' or sys.argv[argi] == '-framed':
+  framed = True
+  argi += 1
+
+if sys.argv[argi] == '-s' or sys.argv[argi] == '-ssl':
+  ssl = True
+  argi += 1
+
+cmd = sys.argv[argi]
+args = sys.argv[argi+1:]
+
+if http:
+  transport = THttpClient.THttpClient(host, port, uri)
+else:
+  socket = TSSLSocket.TSSLSocket(host, port, validate=False) if ssl else TSocket.TSocket(host, port)
+  if framed:
+    transport = TTransport.TFramedTransport(socket)
+  else:
+    transport = TTransport.TBufferedTransport(socket)
+protocol = TBinaryProtocol.TBinaryProtocol(transport)
+client = SharingRegistryService.Client(protocol)
+transport.open()
+
+if cmd == 'createDomain':
+  if len(args) != 1:
+    print('createDomain requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.createDomain(eval(args[0]),))
+
+elif cmd == 'updateDomain':
+  if len(args) != 1:
+    print('updateDomain requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.updateDomain(eval(args[0]),))
+
+elif cmd == 'isDomainExists':
+  if len(args) != 1:
+    print('isDomainExists requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.isDomainExists(args[0],))
+
+elif cmd == 'deleteDomain':
+  if len(args) != 1:
+    print('deleteDomain requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.deleteDomain(args[0],))
+
+elif cmd == 'getDomain':
+  if len(args) != 1:
+    print('getDomain requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.getDomain(args[0],))
+
+elif cmd == 'getDomains':
+  if len(args) != 2:
+    print('getDomains requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getDomains(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'createUser':
+  if len(args) != 1:
+    print('createUser requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.createUser(eval(args[0]),))
+
+elif cmd == 'updatedUser':
+  if len(args) != 1:
+    print('updatedUser requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.updatedUser(eval(args[0]),))
+
+elif cmd == 'isUserExists':
+  if len(args) != 2:
+    print('isUserExists requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.isUserExists(args[0],args[1],))
+
+elif cmd == 'deleteUser':
+  if len(args) != 2:
+    print('deleteUser requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteUser(args[0],args[1],))
+
+elif cmd == 'getUser':
+  if len(args) != 2:
+    print('getUser requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getUser(args[0],args[1],))
+
+elif cmd == 'getUsers':
+  if len(args) != 3:
+    print('getUsers requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.getUsers(args[0],eval(args[1]),eval(args[2]),))
+
+elif cmd == 'createGroup':
+  if len(args) != 1:
+    print('createGroup requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.createGroup(eval(args[0]),))
+
+elif cmd == 'updateGroup':
+  if len(args) != 1:
+    print('updateGroup requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.updateGroup(eval(args[0]),))
+
+elif cmd == 'isGroupExists':
+  if len(args) != 2:
+    print('isGroupExists requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.isGroupExists(args[0],args[1],))
+
+elif cmd == 'deleteGroup':
+  if len(args) != 2:
+    print('deleteGroup requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteGroup(args[0],args[1],))
+
+elif cmd == 'getGroup':
+  if len(args) != 2:
+    print('getGroup requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getGroup(args[0],args[1],))
+
+elif cmd == 'getGroups':
+  if len(args) != 3:
+    print('getGroups requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.getGroups(args[0],eval(args[1]),eval(args[2]),))
+
+elif cmd == 'addUsersToGroup':
+  if len(args) != 3:
+    print('addUsersToGroup requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.addUsersToGroup(args[0],eval(args[1]),args[2],))
+
+elif cmd == 'removeUsersFromGroup':
+  if len(args) != 3:
+    print('removeUsersFromGroup requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.removeUsersFromGroup(args[0],eval(args[1]),args[2],))
+
+elif cmd == 'getGroupMembersOfTypeUser':
+  if len(args) != 4:
+    print('getGroupMembersOfTypeUser requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.getGroupMembersOfTypeUser(args[0],args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'getGroupMembersOfTypeGroup':
+  if len(args) != 4:
+    print('getGroupMembersOfTypeGroup requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.getGroupMembersOfTypeGroup(args[0],args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'addChildGroupsToParentGroup':
+  if len(args) != 3:
+    print('addChildGroupsToParentGroup requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.addChildGroupsToParentGroup(args[0],eval(args[1]),args[2],))
+
+elif cmd == 'removeChildGroupFromParentGroup':
+  if len(args) != 3:
+    print('removeChildGroupFromParentGroup requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.removeChildGroupFromParentGroup(args[0],args[1],args[2],))
+
+elif cmd == 'getAllMemberGroupsForUser':
+  if len(args) != 2:
+    print('getAllMemberGroupsForUser requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllMemberGroupsForUser(args[0],args[1],))
+
+elif cmd == 'createEntityType':
+  if len(args) != 1:
+    print('createEntityType requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.createEntityType(eval(args[0]),))
+
+elif cmd == 'updateEntityType':
+  if len(args) != 1:
+    print('updateEntityType requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.updateEntityType(eval(args[0]),))
+
+elif cmd == 'isEntityTypeExists':
+  if len(args) != 2:
+    print('isEntityTypeExists requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.isEntityTypeExists(args[0],args[1],))
+
+elif cmd == 'deleteEntityType':
+  if len(args) != 2:
+    print('deleteEntityType requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteEntityType(args[0],args[1],))
+
+elif cmd == 'getEntityType':
+  if len(args) != 2:
+    print('getEntityType requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getEntityType(args[0],args[1],))
+
+elif cmd == 'getEntityTypes':
+  if len(args) != 3:
+    print('getEntityTypes requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.getEntityTypes(args[0],eval(args[1]),eval(args[2]),))
+
+elif cmd == 'createEntity':
+  if len(args) != 1:
+    print('createEntity requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.createEntity(eval(args[0]),))
+
+elif cmd == 'updateEntity':
+  if len(args) != 1:
+    print('updateEntity requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.updateEntity(eval(args[0]),))
+
+elif cmd == 'isEntityExists':
+  if len(args) != 2:
+    print('isEntityExists requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.isEntityExists(args[0],args[1],))
+
+elif cmd == 'deleteEntity':
+  if len(args) != 2:
+    print('deleteEntity requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteEntity(args[0],args[1],))
+
+elif cmd == 'getEntity':
+  if len(args) != 2:
+    print('getEntity requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getEntity(args[0],args[1],))
+
+elif cmd == 'searchEntities':
+  if len(args) != 5:
+    print('searchEntities requires 5 args')
+    sys.exit(1)
+  pp.pprint(client.searchEntities(args[0],args[1],eval(args[2]),eval(args[3]),eval(args[4]),))
+
+elif cmd == 'getListOfSharedUsers':
+  if len(args) != 3:
+    print('getListOfSharedUsers requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.getListOfSharedUsers(args[0],args[1],args[2],))
+
+elif cmd == 'getListOfSharedGroups':
+  if len(args) != 3:
+    print('getListOfSharedGroups requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.getListOfSharedGroups(args[0],args[1],args[2],))
+
+elif cmd == 'createPermissionType':
+  if len(args) != 1:
+    print('createPermissionType requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.createPermissionType(eval(args[0]),))
+
+elif cmd == 'updatePermissionType':
+  if len(args) != 1:
+    print('updatePermissionType requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.updatePermissionType(eval(args[0]),))
+
+elif cmd == 'isPermissionExists':
+  if len(args) != 2:
+    print('isPermissionExists requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.isPermissionExists(args[0],args[1],))
+
+elif cmd == 'deletePermissionType':
+  if len(args) != 2:
+    print('deletePermissionType requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deletePermissionType(args[0],args[1],))
+
+elif cmd == 'getPermissionType':
+  if len(args) != 2:
+    print('getPermissionType requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getPermissionType(args[0],args[1],))
+
+elif cmd == 'getPermissionTypes':
+  if len(args) != 3:
+    print('getPermissionTypes requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.getPermissionTypes(args[0],eval(args[1]),eval(args[2]),))
+
+elif cmd == 'shareEntityWithUsers':
+  if len(args) != 5:
+    print('shareEntityWithUsers requires 5 args')
+    sys.exit(1)
+  pp.pprint(client.shareEntityWithUsers(args[0],args[1],eval(args[2]),args[3],eval(args[4]),))
+
+elif cmd == 'revokeEntitySharingFromUsers':
+  if len(args) != 4:
+    print('revokeEntitySharingFromUsers requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.revokeEntitySharingFromUsers(args[0],args[1],eval(args[2]),args[3],))
+
+elif cmd == 'shareEntityWithGroups':
+  if len(args) != 5:
+    print('shareEntityWithGroups requires 5 args')
+    sys.exit(1)
+  pp.pprint(client.shareEntityWithGroups(args[0],args[1],eval(args[2]),args[3],eval(args[4]),))
+
+elif cmd == 'revokeEntitySharingFromGroups':
+  if len(args) != 4:
+    print('revokeEntitySharingFromGroups requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.revokeEntitySharingFromGroups(args[0],args[1],eval(args[2]),args[3],))
+
+elif cmd == 'userHasAccess':
+  if len(args) != 4:
+    print('userHasAccess requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.userHasAccess(args[0],args[1],args[2],args[3],))
+
+else:
+  print('Unrecognized method %s' % cmd)
+  sys.exit(1)
+
+transport.close()


[4/6] airavata git commit: adding sharing php and python thrift generated code to language specific sdks

Posted by sc...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Sharing/SharingRegistryService.php
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..ec3afd2
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Sharing/SharingRegistryService.php
@@ -0,0 +1,14246 @@
+<?php
+namespace Airavata\API\Sharing;
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+interface SharingRegistryServiceIf {
+  /**
+   * <p>API method to create a new domain</p>
+   * 
+   * @param \Airavata\Model\Sharing\Domain $domain
+   * @return string
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   * @throws \Airavata\Model\Sharing\DuplicateEntryException
+   */
+  public function createDomain(\Airavata\Model\Sharing\Domain $domain);
+  /**
+   * <p>API method to update a domain</p>
+   * 
+   * @param \Airavata\Model\Sharing\Domain $domain
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function updateDomain(\Airavata\Model\Sharing\Domain $domain);
+  /**
+   * <p>API method to check Domain Exists</p>
+   * 
+   * @param string $domainId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function isDomainExists($domainId);
+  /**
+   * <p>API method to delete domain</p>
+   * 
+   * @param string $domainId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function deleteDomain($domainId);
+  /**
+   * <p>API method to retrieve a domain</p>
+   * 
+   * @param string $domainId
+   * @return \Airavata\Model\Sharing\Domain <p>Domain is the entity that enables multi-tenency in this componenet. Every tenant will be
+   * operating separately it's own silo which is identified by the domain id. In the current implementation domain id
+   * will be same as the domain name</p>
+   * <li>domainId : Will be generated by the server based on the domain name</li>
+   * <li><b>name</b> : A single word name that identifies the domain e.g seagrid, ultrascan</li>
+   * <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>
+   * 
+   * 
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function getDomain($domainId);
+  /**
+   * <p>API method to get all domain.</p>
+   * 
+   * @param int $offset
+   * @param int $limit
+   * @return \Airavata\Model\Sharing\Domain[]
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function getDomains($offset, $limit);
+  /**
+   * <p>API method to register a user in the system</p>
+   * 
+   * @param \Airavata\Model\Sharing\User $user
+   * @return string
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   * @throws \Airavata\Model\Sharing\DuplicateEntryException
+   */
+  public function createUser(\Airavata\Model\Sharing\User $user);
+  /**
+   * <p>API method to update existing user</p>
+   * 
+   * @param \Airavata\Model\Sharing\User $user
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function updatedUser(\Airavata\Model\Sharing\User $user);
+  /**
+   * <p>API method to check User Exists</p>
+   * 
+   * @param string $domainId
+   * @param string $userId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function isUserExists($domainId, $userId);
+  /**
+   * <p>API method to delete user</p>
+   * 
+   * @param string $domainId
+   * @param string $userId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function deleteUser($domainId, $userId);
+  /**
+   * <p>API method to get a user</p>
+   * 
+   * @param string $domainId
+   * @param string $userId
+   * @return \Airavata\Model\Sharing\User <p>User is the model used to register a user in the system. Minimal user information will be required to provide
+   * regarding the user.</p>
+   * <li><b>userId</b> : User id provided by the client</li>
+   * <li><b>domainId</b> : Domain id for that user</li>
+   * <li><b>userName</b> : User name for the user</li>
+   * <li><b>firstName</b> : First name of the user</li>
+   * <li><b>lastName</b> : Last name of the user</li>
+   * <li><b>email</b> : Email address of the user</li>
+   * <li>icon : A binary field for storing the user icon</li>
+   * <li>createdTime : If client provides this value then the system will use it if not the current time will be set</li>
+   * <li>updatedTime : If client provides this value then the system will use it if not the current time will be set</li>
+   * 
+   * 
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function getUser($domainId, $userId);
+  /**
+   * <p>API method to get a list of users in a specific domain.</p>
+   * <li>domainId : Domain id</li>
+   * <li>offset : Starting result number</li>
+   * <li>limit : Number of max results to be sent</li>
+   * 
+   * @param string $domainId
+   * @param int $offset
+   * @param int $limit
+   * @return \Airavata\Model\Sharing\User[]
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function getUsers($domainId, $offset, $limit);
+  /**
+   * <p>API method to create a new group</p>
+   * 
+   * @param \Airavata\Model\Sharing\UserGroup $group
+   * @return string
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function createGroup(\Airavata\Model\Sharing\UserGroup $group);
+  /**
+   * <p>API method to update a group</p>
+   * 
+   * @param \Airavata\Model\Sharing\UserGroup $group
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function updateGroup(\Airavata\Model\Sharing\UserGroup $group);
+  /**
+   * <p>API method to check Group Exists</p>
+   * 
+   * @param string $domainId
+   * @param string $groupId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function isGroupExists($domainId, $groupId);
+  /**
+   * <p>API method to delete a group</p>
+   * 
+   * @param string $domainId
+   * @param string $groupId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function deleteGroup($domainId, $groupId);
+  /**
+   * <p>API method to get a group</p>
+   * 
+   * @param string $domainId
+   * @param string $groupId
+   * @return \Airavata\Model\Sharing\UserGroup <p>User group is a collection of users.</p>
+   *  <li><b>groupId</b> : Group id provided by the client</li>
+   *  <li><b>domainId</b> : Domain id for this user group</li>
+   *  <li><b>name</b> : Name for the user group. should be one word</li>
+   *  <li>description : Short description for the group.</li>
+   *  <li><b>ownerId</b> : Owner id of this group.</li>
+   *  <li><b>groupType</b> : Group type (DOMAIN_LEVEL_GROUP, USER_LEVEL_GROUP)</li>
+   *  <li><b>groupCardinality</b> : Group cardinality (SINGLE_USER, MULTI_USER)</li>
+   *  <li>createdTime : Will be set by the system</li>
+   *  <li>updatedTime : Will be set by the system</li>
+   *  
+   * 
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function getGroup($domainId, $groupId);
+  /**
+   * <p>API method to get groups in a domainId.</p>
+   * 
+   * @param string $domainId
+   * @param int $offset
+   * @param int $limit
+   * @return \Airavata\Model\Sharing\UserGroup[]
+   */
+  public function getGroups($domainId, $offset, $limit);
+  /**
+   * <p>API method to add list of users to a group</p>
+   * 
+   * @param string $domainId
+   * @param string[] $userIds
+   * @param string $groupId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function addUsersToGroup($domainId, array $userIds, $groupId);
+  /**
+   * <p>API method to remove users from a group</p>
+   * 
+   * @param string $domainId
+   * @param string[] $userIds
+   * @param string $groupId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function removeUsersFromGroup($domainId, array $userIds, $groupId);
+  /**
+   * <p>API method to get list of child users in a group. Only the direct members will be returned.</p>
+   * 
+   * @param string $domainId
+   * @param string $groupId
+   * @param int $offset
+   * @param int $limit
+   * @return \Airavata\Model\Sharing\User[]
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function getGroupMembersOfTypeUser($domainId, $groupId, $offset, $limit);
+  /**
+   * <p>API method to get list of child groups in a group. Only the direct members will be returned.</p>
+   * 
+   * @param string $domainId
+   * @param string $groupId
+   * @param int $offset
+   * @param int $limit
+   * @return \Airavata\Model\Sharing\UserGroup[]
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function getGroupMembersOfTypeGroup($domainId, $groupId, $offset, $limit);
+  /**
+   * <p>API method to add a child group to a parent group.</p>
+   * 
+   * @param string $domainId
+   * @param string[] $childIds
+   * @param string $groupId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function addChildGroupsToParentGroup($domainId, array $childIds, $groupId);
+  /**
+   * <p>API method to remove a child group from parent group.</p>
+   * 
+   * @param string $domainId
+   * @param string $childId
+   * @param string $groupId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function removeChildGroupFromParentGroup($domainId, $childId, $groupId);
+  /**
+   * @param string $domainId
+   * @param string $userId
+   * @return \Airavata\Model\Sharing\UserGroup[]
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function getAllMemberGroupsForUser($domainId, $userId);
+  /**
+   * <p>API method to create a new entity type</p>
+   * 
+   * @param \Airavata\Model\Sharing\EntityType $entityType
+   * @return string
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   * @throws \Airavata\Model\Sharing\DuplicateEntryException
+   */
+  public function createEntityType(\Airavata\Model\Sharing\EntityType $entityType);
+  /**
+   * <p>API method to update entity type</p>
+   * 
+   * @param \Airavata\Model\Sharing\EntityType $entityType
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function updateEntityType(\Airavata\Model\Sharing\EntityType $entityType);
+  /**
+   * <p>API method to check EntityType Exists</p>
+   * 
+   * @param string $domainId
+   * @param string $entityTypeId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function isEntityTypeExists($domainId, $entityTypeId);
+  /**
+   * <p>API method to delete entity type</p>
+   * 
+   * @param string $domainId
+   * @param string $entityTypeId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function deleteEntityType($domainId, $entityTypeId);
+  /**
+   * <p>API method to get an entity type</p>
+   * 
+   * @param string $domainId
+   * @param string $entityTypeId
+   * @return \Airavata\Model\Sharing\EntityType <p>client defined entity types</p>
+   * <li><b>entityTypeId</b> : Entity type id provided by the client</li>
+   * <li><b>domainId</b> : Domain id of the domain.</li>
+   * <li><b>name</b> : Name for the entity type. Should be a single word.</li>
+   * <li>description : Short description for the entity type.</li>
+   * <li>createdTime : Will be set by the system</li>
+   * <li>updatedTime : Will be set by the system</li>
+   * 
+   * 
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function getEntityType($domainId, $entityTypeId);
+  /**
+   * <p>API method to get entity types in a domainId.</p>
+   * 
+   * @param string $domainId
+   * @param int $offset
+   * @param int $limit
+   * @return \Airavata\Model\Sharing\EntityType[]
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function getEntityTypes($domainId, $offset, $limit);
+  /**
+   * <p>API method to register new entity</p>
+   * 
+   * @param \Airavata\Model\Sharing\Entity $entity
+   * @return string
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function createEntity(\Airavata\Model\Sharing\Entity $entity);
+  /**
+   * <p>API method to update entity</p>
+   * 
+   * @param \Airavata\Model\Sharing\Entity $entity
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function updateEntity(\Airavata\Model\Sharing\Entity $entity);
+  /**
+   * <p>API method to check Entity Exists</p>
+   * 
+   * @param string $domainId
+   * @param string $entityId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function isEntityExists($domainId, $entityId);
+  /**
+   * <p>API method to delete entity</p>
+   * 
+   * @param string $domainId
+   * @param string $entityId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function deleteEntity($domainId, $entityId);
+  /**
+   * <p>API method to get entity</p>
+   * 
+   * @param string $domainId
+   * @param string $entityId
+   * @return \Airavata\Model\Sharing\Entity <p>Entity object which is used to register an entity in the system.</p>
+   * <li><b>entityId</b> : Entity id provided by the client</li>
+   * <li><b>domainId</b> : Domain id</li>
+   * <li><b>entityTypeId</b> : Entity type id</li>
+   * <li><b>ownerId</b> : Owner id</li>
+   * <li>parentEntityId : Parent entity id</li>
+   * <li><b>name</b> : Name</li>
+   * <li>description : Short description for the entity</li>
+   * <li>binaryData : Any information stored in binary format</li>
+   * <li>fullText : A string which will be considered for full text search</li>
+   * <li><b>originalEntityCreationTime</b> : When registering old records what is the original entity creation time. If not
+   * set will be default to current time</li>
+   * <li>createdTime : Will be set by the system</li>
+   * <li>updatedTime : Will be set by the system</li>
+   * 
+   * 
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function getEntity($domainId, $entityId);
+  /**
+   * <p>API method to search entities</p>
+   * 
+   * @param string $domainId
+   * @param string $userId
+   * @param \Airavata\Model\Sharing\SearchCriteria[] $filters
+   * @param int $offset
+   * @param int $limit
+   * @return \Airavata\Model\Sharing\Entity[]
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function searchEntities($domainId, $userId, array $filters, $offset, $limit);
+  /**
+   * <p>API method to get a list of shared users given the entity id</p>
+   * 
+   * @param string $domainId
+   * @param string $entityId
+   * @param string $permissionTypeId
+   * @return \Airavata\Model\Sharing\User[]
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function getListOfSharedUsers($domainId, $entityId, $permissionTypeId);
+  /**
+   * <p>API method to get a list of shared groups given the entity id</p>
+   * 
+   * @param string $domainId
+   * @param string $entityId
+   * @param string $permissionTypeId
+   * @return \Airavata\Model\Sharing\UserGroup[]
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function getListOfSharedGroups($domainId, $entityId, $permissionTypeId);
+  /**
+   * <p>API method to create permission type</p>
+   * 
+   * @param \Airavata\Model\Sharing\PermissionType $permissionType
+   * @return string
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   * @throws \Airavata\Model\Sharing\DuplicateEntryException
+   */
+  public function createPermissionType(\Airavata\Model\Sharing\PermissionType $permissionType);
+  /**
+   * <p>API method to update permission type</p>
+   * 
+   * @param \Airavata\Model\Sharing\PermissionType $permissionType
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function updatePermissionType(\Airavata\Model\Sharing\PermissionType $permissionType);
+  /**
+   * <p>API method to check Permission Exists</p>
+   * 
+   * @param string $dimainId
+   * @param string $permissionId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function isPermissionExists($dimainId, $permissionId);
+  /**
+   * <p>API method to delete permission type</p>
+   * 
+   * @param string $domainId
+   * @param string $permissionTypeId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function deletePermissionType($domainId, $permissionTypeId);
+  /**
+   * <p>API method to get permission type</p>
+   * 
+   * @param string $domainId
+   * @param string $permissionTypeId
+   * @return \Airavata\Model\Sharing\PermissionType <p>Object for creating client defined permission type</p>
+   * <li><b>permissionTypeId</b> : Permission type id provided by the client</li>
+   * <li><b>domainId</b> : Domain id</li>
+   * <li><b>name</b> : Single word name for the permission</li>
+   * <li>description : Short description for the permission type</li>
+   * <li>createdTime : Will be set by the system</li>
+   * <li>updatedTime : Will be set by the system</li>
+   * 
+   * 
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function getPermissionType($domainId, $permissionTypeId);
+  /**
+   * <p>API method to get list of permission types in a given domainId.</p>
+   * 
+   * @param string $domainId
+   * @param int $offset
+   * @param int $limit
+   * @return \Airavata\Model\Sharing\PermissionType[]
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function getPermissionTypes($domainId, $offset, $limit);
+  /**
+   * <p>API method to share an entity with users</p>
+   * 
+   * @param string $domainId
+   * @param string $entityId
+   * @param string[] $userList
+   * @param string $perssionTypeId
+   * @param bool $cascadePermission
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function shareEntityWithUsers($domainId, $entityId, array $userList, $perssionTypeId, $cascadePermission);
+  /**
+   * <p>API method to revoke sharing from a list of users</p>
+   * 
+   * @param string $domainId
+   * @param string $entityId
+   * @param string[] $userList
+   * @param string $perssionTypeId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function revokeEntitySharingFromUsers($domainId, $entityId, array $userList, $perssionTypeId);
+  /**
+   * <p>API method to share an entity with list of groups</p>
+   * 
+   * @param string $domainId
+   * @param string $entityId
+   * @param string[] $groupList
+   * @param string $perssionTypeId
+   * @param bool $cascadePermission
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function shareEntityWithGroups($domainId, $entityId, array $groupList, $perssionTypeId, $cascadePermission);
+  /**
+   * <p>API method to revoke sharing from list of users</p>
+   * 
+   * @param string $domainId
+   * @param string $entityId
+   * @param string[] $groupList
+   * @param string $perssionTypeId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function revokeEntitySharingFromGroups($domainId, $entityId, array $groupList, $perssionTypeId);
+  /**
+   * <p>API method to check whether a user has access to a specific entity</p>
+   * 
+   * @param string $domainId
+   * @param string $userId
+   * @param string $entityId
+   * @param string $permissionTypeId
+   * @return bool
+   * @throws \Airavata\Model\Sharing\SharingRegistryException
+   */
+  public function userHasAccess($domainId, $userId, $entityId, $permissionTypeId);
+}
+
+class SharingRegistryServiceClient implements \Airavata\API\Sharing\SharingRegistryServiceIf {
+  protected $input_ = null;
+  protected $output_ = null;
+
+  protected $seqid_ = 0;
+
+  public function __construct($input, $output=null) {
+    $this->input_ = $input;
+    $this->output_ = $output ? $output : $input;
+  }
+
+  public function createDomain(\Airavata\Model\Sharing\Domain $domain)
+  {
+    $this->send_createDomain($domain);
+    return $this->recv_createDomain();
+  }
+
+  public function send_createDomain(\Airavata\Model\Sharing\Domain $domain)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_createDomain_args();
+    $args->domain = $domain;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'createDomain', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('createDomain', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_createDomain()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_createDomain_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_createDomain_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    if ($result->dee !== null) {
+      throw $result->dee;
+    }
+    throw new \Exception("createDomain failed: unknown result");
+  }
+
+  public function updateDomain(\Airavata\Model\Sharing\Domain $domain)
+  {
+    $this->send_updateDomain($domain);
+    return $this->recv_updateDomain();
+  }
+
+  public function send_updateDomain(\Airavata\Model\Sharing\Domain $domain)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_updateDomain_args();
+    $args->domain = $domain;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'updateDomain', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('updateDomain', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_updateDomain()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_updateDomain_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_updateDomain_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("updateDomain failed: unknown result");
+  }
+
+  public function isDomainExists($domainId)
+  {
+    $this->send_isDomainExists($domainId);
+    return $this->recv_isDomainExists();
+  }
+
+  public function send_isDomainExists($domainId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_isDomainExists_args();
+    $args->domainId = $domainId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'isDomainExists', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('isDomainExists', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_isDomainExists()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_isDomainExists_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_isDomainExists_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("isDomainExists failed: unknown result");
+  }
+
+  public function deleteDomain($domainId)
+  {
+    $this->send_deleteDomain($domainId);
+    return $this->recv_deleteDomain();
+  }
+
+  public function send_deleteDomain($domainId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_deleteDomain_args();
+    $args->domainId = $domainId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'deleteDomain', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('deleteDomain', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_deleteDomain()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_deleteDomain_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_deleteDomain_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("deleteDomain failed: unknown result");
+  }
+
+  public function getDomain($domainId)
+  {
+    $this->send_getDomain($domainId);
+    return $this->recv_getDomain();
+  }
+
+  public function send_getDomain($domainId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_getDomain_args();
+    $args->domainId = $domainId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getDomain', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getDomain', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getDomain()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getDomain_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_getDomain_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("getDomain failed: unknown result");
+  }
+
+  public function getDomains($offset, $limit)
+  {
+    $this->send_getDomains($offset, $limit);
+    return $this->recv_getDomains();
+  }
+
+  public function send_getDomains($offset, $limit)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_getDomains_args();
+    $args->offset = $offset;
+    $args->limit = $limit;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getDomains', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getDomains', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getDomains()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getDomains_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_getDomains_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("getDomains failed: unknown result");
+  }
+
+  public function createUser(\Airavata\Model\Sharing\User $user)
+  {
+    $this->send_createUser($user);
+    return $this->recv_createUser();
+  }
+
+  public function send_createUser(\Airavata\Model\Sharing\User $user)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_createUser_args();
+    $args->user = $user;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'createUser', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('createUser', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_createUser()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_createUser_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_createUser_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    if ($result->dee !== null) {
+      throw $result->dee;
+    }
+    throw new \Exception("createUser failed: unknown result");
+  }
+
+  public function updatedUser(\Airavata\Model\Sharing\User $user)
+  {
+    $this->send_updatedUser($user);
+    return $this->recv_updatedUser();
+  }
+
+  public function send_updatedUser(\Airavata\Model\Sharing\User $user)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_updatedUser_args();
+    $args->user = $user;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'updatedUser', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('updatedUser', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_updatedUser()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_updatedUser_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_updatedUser_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("updatedUser failed: unknown result");
+  }
+
+  public function isUserExists($domainId, $userId)
+  {
+    $this->send_isUserExists($domainId, $userId);
+    return $this->recv_isUserExists();
+  }
+
+  public function send_isUserExists($domainId, $userId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_isUserExists_args();
+    $args->domainId = $domainId;
+    $args->userId = $userId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'isUserExists', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('isUserExists', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_isUserExists()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_isUserExists_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_isUserExists_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("isUserExists failed: unknown result");
+  }
+
+  public function deleteUser($domainId, $userId)
+  {
+    $this->send_deleteUser($domainId, $userId);
+    return $this->recv_deleteUser();
+  }
+
+  public function send_deleteUser($domainId, $userId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_deleteUser_args();
+    $args->domainId = $domainId;
+    $args->userId = $userId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'deleteUser', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('deleteUser', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_deleteUser()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_deleteUser_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_deleteUser_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("deleteUser failed: unknown result");
+  }
+
+  public function getUser($domainId, $userId)
+  {
+    $this->send_getUser($domainId, $userId);
+    return $this->recv_getUser();
+  }
+
+  public function send_getUser($domainId, $userId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_getUser_args();
+    $args->domainId = $domainId;
+    $args->userId = $userId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getUser', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getUser', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getUser()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getUser_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_getUser_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("getUser failed: unknown result");
+  }
+
+  public function getUsers($domainId, $offset, $limit)
+  {
+    $this->send_getUsers($domainId, $offset, $limit);
+    return $this->recv_getUsers();
+  }
+
+  public function send_getUsers($domainId, $offset, $limit)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_getUsers_args();
+    $args->domainId = $domainId;
+    $args->offset = $offset;
+    $args->limit = $limit;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getUsers', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getUsers', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getUsers()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getUsers_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_getUsers_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("getUsers failed: unknown result");
+  }
+
+  public function createGroup(\Airavata\Model\Sharing\UserGroup $group)
+  {
+    $this->send_createGroup($group);
+    return $this->recv_createGroup();
+  }
+
+  public function send_createGroup(\Airavata\Model\Sharing\UserGroup $group)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_createGroup_args();
+    $args->group = $group;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'createGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('createGroup', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_createGroup()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_createGroup_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_createGroup_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("createGroup failed: unknown result");
+  }
+
+  public function updateGroup(\Airavata\Model\Sharing\UserGroup $group)
+  {
+    $this->send_updateGroup($group);
+    return $this->recv_updateGroup();
+  }
+
+  public function send_updateGroup(\Airavata\Model\Sharing\UserGroup $group)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_updateGroup_args();
+    $args->group = $group;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'updateGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('updateGroup', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_updateGroup()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_updateGroup_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_updateGroup_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("updateGroup failed: unknown result");
+  }
+
+  public function isGroupExists($domainId, $groupId)
+  {
+    $this->send_isGroupExists($domainId, $groupId);
+    return $this->recv_isGroupExists();
+  }
+
+  public function send_isGroupExists($domainId, $groupId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_isGroupExists_args();
+    $args->domainId = $domainId;
+    $args->groupId = $groupId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'isGroupExists', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('isGroupExists', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_isGroupExists()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_isGroupExists_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_isGroupExists_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("isGroupExists failed: unknown result");
+  }
+
+  public function deleteGroup($domainId, $groupId)
+  {
+    $this->send_deleteGroup($domainId, $groupId);
+    return $this->recv_deleteGroup();
+  }
+
+  public function send_deleteGroup($domainId, $groupId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_deleteGroup_args();
+    $args->domainId = $domainId;
+    $args->groupId = $groupId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'deleteGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('deleteGroup', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_deleteGroup()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_deleteGroup_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_deleteGroup_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("deleteGroup failed: unknown result");
+  }
+
+  public function getGroup($domainId, $groupId)
+  {
+    $this->send_getGroup($domainId, $groupId);
+    return $this->recv_getGroup();
+  }
+
+  public function send_getGroup($domainId, $groupId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_getGroup_args();
+    $args->domainId = $domainId;
+    $args->groupId = $groupId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getGroup', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getGroup()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getGroup_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_getGroup_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("getGroup failed: unknown result");
+  }
+
+  public function getGroups($domainId, $offset, $limit)
+  {
+    $this->send_getGroups($domainId, $offset, $limit);
+    return $this->recv_getGroups();
+  }
+
+  public function send_getGroups($domainId, $offset, $limit)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_getGroups_args();
+    $args->domainId = $domainId;
+    $args->offset = $offset;
+    $args->limit = $limit;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getGroups', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getGroups', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getGroups()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getGroups_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_getGroups_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    throw new \Exception("getGroups failed: unknown result");
+  }
+
+  public function addUsersToGroup($domainId, array $userIds, $groupId)
+  {
+    $this->send_addUsersToGroup($domainId, $userIds, $groupId);
+    return $this->recv_addUsersToGroup();
+  }
+
+  public function send_addUsersToGroup($domainId, array $userIds, $groupId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_addUsersToGroup_args();
+    $args->domainId = $domainId;
+    $args->userIds = $userIds;
+    $args->groupId = $groupId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'addUsersToGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('addUsersToGroup', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_addUsersToGroup()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_addUsersToGroup_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_addUsersToGroup_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("addUsersToGroup failed: unknown result");
+  }
+
+  public function removeUsersFromGroup($domainId, array $userIds, $groupId)
+  {
+    $this->send_removeUsersFromGroup($domainId, $userIds, $groupId);
+    return $this->recv_removeUsersFromGroup();
+  }
+
+  public function send_removeUsersFromGroup($domainId, array $userIds, $groupId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_removeUsersFromGroup_args();
+    $args->domainId = $domainId;
+    $args->userIds = $userIds;
+    $args->groupId = $groupId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'removeUsersFromGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('removeUsersFromGroup', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_removeUsersFromGroup()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_removeUsersFromGroup_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_removeUsersFromGroup_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("removeUsersFromGroup failed: unknown result");
+  }
+
+  public function getGroupMembersOfTypeUser($domainId, $groupId, $offset, $limit)
+  {
+    $this->send_getGroupMembersOfTypeUser($domainId, $groupId, $offset, $limit);
+    return $this->recv_getGroupMembersOfTypeUser();
+  }
+
+  public function send_getGroupMembersOfTypeUser($domainId, $groupId, $offset, $limit)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_getGroupMembersOfTypeUser_args();
+    $args->domainId = $domainId;
+    $args->groupId = $groupId;
+    $args->offset = $offset;
+    $args->limit = $limit;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getGroupMembersOfTypeUser', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getGroupMembersOfTypeUser', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getGroupMembersOfTypeUser()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getGroupMembersOfTypeUser_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_getGroupMembersOfTypeUser_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("getGroupMembersOfTypeUser failed: unknown result");
+  }
+
+  public function getGroupMembersOfTypeGroup($domainId, $groupId, $offset, $limit)
+  {
+    $this->send_getGroupMembersOfTypeGroup($domainId, $groupId, $offset, $limit);
+    return $this->recv_getGroupMembersOfTypeGroup();
+  }
+
+  public function send_getGroupMembersOfTypeGroup($domainId, $groupId, $offset, $limit)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_getGroupMembersOfTypeGroup_args();
+    $args->domainId = $domainId;
+    $args->groupId = $groupId;
+    $args->offset = $offset;
+    $args->limit = $limit;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getGroupMembersOfTypeGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getGroupMembersOfTypeGroup', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getGroupMembersOfTypeGroup()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getGroupMembersOfTypeGroup_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_getGroupMembersOfTypeGroup_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("getGroupMembersOfTypeGroup failed: unknown result");
+  }
+
+  public function addChildGroupsToParentGroup($domainId, array $childIds, $groupId)
+  {
+    $this->send_addChildGroupsToParentGroup($domainId, $childIds, $groupId);
+    return $this->recv_addChildGroupsToParentGroup();
+  }
+
+  public function send_addChildGroupsToParentGroup($domainId, array $childIds, $groupId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_addChildGroupsToParentGroup_args();
+    $args->domainId = $domainId;
+    $args->childIds = $childIds;
+    $args->groupId = $groupId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'addChildGroupsToParentGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('addChildGroupsToParentGroup', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_addChildGroupsToParentGroup()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_addChildGroupsToParentGroup_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_addChildGroupsToParentGroup_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("addChildGroupsToParentGroup failed: unknown result");
+  }
+
+  public function removeChildGroupFromParentGroup($domainId, $childId, $groupId)
+  {
+    $this->send_removeChildGroupFromParentGroup($domainId, $childId, $groupId);
+    return $this->recv_removeChildGroupFromParentGroup();
+  }
+
+  public function send_removeChildGroupFromParentGroup($domainId, $childId, $groupId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_removeChildGroupFromParentGroup_args();
+    $args->domainId = $domainId;
+    $args->childId = $childId;
+    $args->groupId = $groupId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'removeChildGroupFromParentGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('removeChildGroupFromParentGroup', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_removeChildGroupFromParentGroup()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_removeChildGroupFromParentGroup_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_removeChildGroupFromParentGroup_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("removeChildGroupFromParentGroup failed: unknown result");
+  }
+
+  public function getAllMemberGroupsForUser($domainId, $userId)
+  {
+    $this->send_getAllMemberGroupsForUser($domainId, $userId);
+    return $this->recv_getAllMemberGroupsForUser();
+  }
+
+  public function send_getAllMemberGroupsForUser($domainId, $userId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_getAllMemberGroupsForUser_args();
+    $args->domainId = $domainId;
+    $args->userId = $userId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getAllMemberGroupsForUser', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getAllMemberGroupsForUser', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getAllMemberGroupsForUser()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getAllMemberGroupsForUser_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_getAllMemberGroupsForUser_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("getAllMemberGroupsForUser failed: unknown result");
+  }
+
+  public function createEntityType(\Airavata\Model\Sharing\EntityType $entityType)
+  {
+    $this->send_createEntityType($entityType);
+    return $this->recv_createEntityType();
+  }
+
+  public function send_createEntityType(\Airavata\Model\Sharing\EntityType $entityType)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_createEntityType_args();
+    $args->entityType = $entityType;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'createEntityType', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('createEntityType', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_createEntityType()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_createEntityType_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_createEntityType_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    if ($result->dee !== null) {
+      throw $result->dee;
+    }
+    throw new \Exception("createEntityType failed: unknown result");
+  }
+
+  public function updateEntityType(\Airavata\Model\Sharing\EntityType $entityType)
+  {
+    $this->send_updateEntityType($entityType);
+    return $this->recv_updateEntityType();
+  }
+
+  public function send_updateEntityType(\Airavata\Model\Sharing\EntityType $entityType)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_updateEntityType_args();
+    $args->entityType = $entityType;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'updateEntityType', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('updateEntityType', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_updateEntityType()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_updateEntityType_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_updateEntityType_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("updateEntityType failed: unknown result");
+  }
+
+  public function isEntityTypeExists($domainId, $entityTypeId)
+  {
+    $this->send_isEntityTypeExists($domainId, $entityTypeId);
+    return $this->recv_isEntityTypeExists();
+  }
+
+  public function send_isEntityTypeExists($domainId, $entityTypeId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_isEntityTypeExists_args();
+    $args->domainId = $domainId;
+    $args->entityTypeId = $entityTypeId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'isEntityTypeExists', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('isEntityTypeExists', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_isEntityTypeExists()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_isEntityTypeExists_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_isEntityTypeExists_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("isEntityTypeExists failed: unknown result");
+  }
+
+  public function deleteEntityType($domainId, $entityTypeId)
+  {
+    $this->send_deleteEntityType($domainId, $entityTypeId);
+    return $this->recv_deleteEntityType();
+  }
+
+  public function send_deleteEntityType($domainId, $entityTypeId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_deleteEntityType_args();
+    $args->domainId = $domainId;
+    $args->entityTypeId = $entityTypeId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'deleteEntityType', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('deleteEntityType', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_deleteEntityType()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_deleteEntityType_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_deleteEntityType_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("deleteEntityType failed: unknown result");
+  }
+
+  public function getEntityType($domainId, $entityTypeId)
+  {
+    $this->send_getEntityType($domainId, $entityTypeId);
+    return $this->recv_getEntityType();
+  }
+
+  public function send_getEntityType($domainId, $entityTypeId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_getEntityType_args();
+    $args->domainId = $domainId;
+    $args->entityTypeId = $entityTypeId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getEntityType', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getEntityType', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getEntityType()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getEntityType_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_getEntityType_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("getEntityType failed: unknown result");
+  }
+
+  public function getEntityTypes($domainId, $offset, $limit)
+  {
+    $this->send_getEntityTypes($domainId, $offset, $limit);
+    return $this->recv_getEntityTypes();
+  }
+
+  public function send_getEntityTypes($domainId, $offset, $limit)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_getEntityTypes_args();
+    $args->domainId = $domainId;
+    $args->offset = $offset;
+    $args->limit = $limit;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getEntityTypes', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getEntityTypes', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getEntityTypes()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getEntityTypes_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_getEntityTypes_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("getEntityTypes failed: unknown result");
+  }
+
+  public function createEntity(\Airavata\Model\Sharing\Entity $entity)
+  {
+    $this->send_createEntity($entity);
+    return $this->recv_createEntity();
+  }
+
+  public function send_createEntity(\Airavata\Model\Sharing\Entity $entity)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_createEntity_args();
+    $args->entity = $entity;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'createEntity', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('createEntity', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_createEntity()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_createEntity_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_createEntity_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("createEntity failed: unknown result");
+  }
+
+  public function updateEntity(\Airavata\Model\Sharing\Entity $entity)
+  {
+    $this->send_updateEntity($entity);
+    return $this->recv_updateEntity();
+  }
+
+  public function send_updateEntity(\Airavata\Model\Sharing\Entity $entity)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_updateEntity_args();
+    $args->entity = $entity;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'updateEntity', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('updateEntity', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_updateEntity()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_updateEntity_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Sharing\SharingRegistryService_updateEntity_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->sre !== null) {
+      throw $result->sre;
+    }
+    throw new \Exception("updateEntity failed: unknown result");
+  }
+
+  public function isEntityExists($domainId, $entityId)
+  {
+    $this->send_isEntityExists($domainId, $entityId);
+    return $this->recv_isEntityExists();
+  }
+
+  public function send_isEntityExists($domainId, $entityId)
+  {
+    $args = new \Airavata\API\Sharing\SharingRegistryService_isEntityExists_args();
+    $args->domainId = $domainId;
+    $args->entityId = $entityId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'isEntityExists', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('isEntityExists', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+

<TRUNCATED>

[6/6] airavata git commit: adding sharing php and python thrift generated code to language specific sdks

Posted by sc...@apache.org.
adding sharing php and python thrift generated code to language specific sdks


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/6d6973d8
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/6d6973d8
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/6d6973d8

Branch: refs/heads/develop
Commit: 6d6973d87a8442015e63ca6bc5d2b641a1eec010
Parents: d49f252
Author: scnakandala <su...@gmail.com>
Authored: Wed Aug 2 14:04:14 2017 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Aug 2 14:04:14 2017 -0400

----------------------------------------------------------------------
 .../lib/airavata/sharing_models_constants.cpp   |    36 +
 .../lib/airavata/sharing_models_constants.h     |    42 +
 .../lib/airavata/sharing_models_types.cpp       |  2252 +++
 .../lib/airavata/sharing_models_types.h         |  1050 ++
 .../API/Sharing/SharingRegistryService.php      | 14246 +++++++++++++++++
 .../lib/Airavata/API/Sharing/Types.php          |    20 +
 .../lib/Airavata/Model/Sharing/Types.php        |  2360 +++
 .../api/sharing/SharingRegistryService-remote   |   437 +
 .../api/sharing/SharingRegistryService.py       | 12043 ++++++++++++++
 .../lib/apache/airavata/api/sharing/__init__.py |     1 +
 .../apache/airavata/api/sharing/constants.py    |    11 +
 .../lib/apache/airavata/api/sharing/ttypes.py   |    20 +
 .../apache/airavata/model/sharing/__init__.py   |     1 +
 .../apache/airavata/model/sharing/constants.py  |    12 +
 .../lib/apache/airavata/model/sharing/ttypes.py |  1722 ++
 .../thrift_models/sharing_cpi.thrift            |     2 +
 .../thrift_models/sharing_models.thrift         |     2 +
 .../generate-thrift-stubs.sh                    |     8 +-
 18 files changed, 34264 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/sharing_models_constants.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/sharing_models_constants.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/sharing_models_constants.cpp
new file mode 100644
index 0000000..4a75c1b
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/sharing_models_constants.cpp
@@ -0,0 +1,36 @@
+/**
+ * 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.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+#include "sharing_models_constants.h"
+
+
+
+const sharing_modelsConstants g_sharing_models_constants;
+
+sharing_modelsConstants::sharing_modelsConstants() {
+  DO_NOT_SET_AT_CLIENTS_ID = "DO_NOT_SET_AT_CLIENTS_ID";
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/sharing_models_constants.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/sharing_models_constants.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/sharing_models_constants.h
new file mode 100644
index 0000000..706726d
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/sharing_models_constants.h
@@ -0,0 +1,42 @@
+/**
+ * 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.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+#ifndef sharing_models_CONSTANTS_H
+#define sharing_models_CONSTANTS_H
+
+#include "sharing_models_types.h"
+
+
+
+class sharing_modelsConstants {
+ public:
+  sharing_modelsConstants();
+
+  std::string DO_NOT_SET_AT_CLIENTS_ID;
+};
+
+extern const sharing_modelsConstants g_sharing_models_constants;
+
+
+
+#endif

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/sharing_models_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/sharing_models_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/sharing_models_types.cpp
new file mode 100644
index 0000000..3772df3
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/sharing_models_types.cpp
@@ -0,0 +1,2252 @@
+/**
+ * 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.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+#include "sharing_models_types.h"
+
+#include <algorithm>
+#include <ostream>
+
+#include <thrift/TToString.h>
+
+
+
+int _kGroupCardinalityValues[] = {
+  GroupCardinality::SINGLE_USER,
+  GroupCardinality::MULTI_USER
+};
+const char* _kGroupCardinalityNames[] = {
+  "SINGLE_USER",
+  "MULTI_USER"
+};
+const std::map<int, const char*> _GroupCardinality_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(2, _kGroupCardinalityValues, _kGroupCardinalityNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+
+int _kGroupTypeValues[] = {
+  GroupType::DOMAIN_LEVEL_GROUP,
+  GroupType::USER_LEVEL_GROUP
+};
+const char* _kGroupTypeNames[] = {
+  "DOMAIN_LEVEL_GROUP",
+  "USER_LEVEL_GROUP"
+};
+const std::map<int, const char*> _GroupType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(2, _kGroupTypeValues, _kGroupTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+
+int _kGroupChildTypeValues[] = {
+  GroupChildType::USER,
+  GroupChildType::GROUP
+};
+const char* _kGroupChildTypeNames[] = {
+  "USER",
+  "GROUP"
+};
+const std::map<int, const char*> _GroupChildType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(2, _kGroupChildTypeValues, _kGroupChildTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+
+int _kEntitySearchFieldValues[] = {
+  EntitySearchField::NAME,
+  EntitySearchField::DESCRIPTION,
+  EntitySearchField::FULL_TEXT,
+  EntitySearchField::PARRENT_ENTITY_ID,
+  EntitySearchField::OWNER_ID,
+  EntitySearchField::PERMISSION_TYPE_ID,
+  EntitySearchField::CREATED_TIME,
+  EntitySearchField::UPDATED_TIME,
+  EntitySearchField::ENTITY_TYPE_ID,
+  EntitySearchField::SHARED_COUNT
+};
+const char* _kEntitySearchFieldNames[] = {
+  "NAME",
+  "DESCRIPTION",
+  "FULL_TEXT",
+  "PARRENT_ENTITY_ID",
+  "OWNER_ID",
+  "PERMISSION_TYPE_ID",
+  "CREATED_TIME",
+  "UPDATED_TIME",
+  "ENTITY_TYPE_ID",
+  "SHARED_COUNT"
+};
+const std::map<int, const char*> _EntitySearchField_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(10, _kEntitySearchFieldValues, _kEntitySearchFieldNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+
+int _kSearchConditionValues[] = {
+  SearchCondition::EQUAL,
+  SearchCondition::LIKE,
+  SearchCondition::FULL_TEXT,
+  SearchCondition::GTE,
+  SearchCondition::LTE,
+  SearchCondition::NOT
+};
+const char* _kSearchConditionNames[] = {
+  "EQUAL",
+  "LIKE",
+  "FULL_TEXT",
+  "GTE",
+  "LTE",
+  "NOT"
+};
+const std::map<int, const char*> _SearchCondition_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(6, _kSearchConditionValues, _kSearchConditionNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+
+int _kSharingTypeValues[] = {
+  SharingType::DIRECT_NON_CASCADING,
+  SharingType::DIRECT_CASCADING,
+  SharingType::INDIRECT_CASCADING
+};
+const char* _kSharingTypeNames[] = {
+  "DIRECT_NON_CASCADING",
+  "DIRECT_CASCADING",
+  "INDIRECT_CASCADING"
+};
+const std::map<int, const char*> _SharingType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(3, _kSharingTypeValues, _kSharingTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+
+
+Domain::~Domain() throw() {
+}
+
+
+void Domain::__set_domainId(const std::string& val) {
+  this->domainId = val;
+__isset.domainId = true;
+}
+
+void Domain::__set_name(const std::string& val) {
+  this->name = val;
+__isset.name = true;
+}
+
+void Domain::__set_description(const std::string& val) {
+  this->description = val;
+__isset.description = true;
+}
+
+void Domain::__set_createdTime(const int64_t val) {
+  this->createdTime = val;
+__isset.createdTime = true;
+}
+
+void Domain::__set_updatedTime(const int64_t val) {
+  this->updatedTime = val;
+__isset.updatedTime = true;
+}
+
+uint32_t Domain::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->domainId);
+          this->__isset.domainId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->name);
+          this->__isset.name = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->description);
+          this->__isset.description = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->createdTime);
+          this->__isset.createdTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->updatedTime);
+          this->__isset.updatedTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t Domain::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Domain");
+
+  if (this->__isset.domainId) {
+    xfer += oprot->writeFieldBegin("domainId", ::apache::thrift::protocol::T_STRING, 1);
+    xfer += oprot->writeString(this->domainId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.name) {
+    xfer += oprot->writeFieldBegin("name", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->name);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.description) {
+    xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
+    xfer += oprot->writeString(this->description);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.createdTime) {
+    xfer += oprot->writeFieldBegin("createdTime", ::apache::thrift::protocol::T_I64, 4);
+    xfer += oprot->writeI64(this->createdTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.updatedTime) {
+    xfer += oprot->writeFieldBegin("updatedTime", ::apache::thrift::protocol::T_I64, 5);
+    xfer += oprot->writeI64(this->updatedTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(Domain &a, Domain &b) {
+  using ::std::swap;
+  swap(a.domainId, b.domainId);
+  swap(a.name, b.name);
+  swap(a.description, b.description);
+  swap(a.createdTime, b.createdTime);
+  swap(a.updatedTime, b.updatedTime);
+  swap(a.__isset, b.__isset);
+}
+
+Domain::Domain(const Domain& other0) {
+  domainId = other0.domainId;
+  name = other0.name;
+  description = other0.description;
+  createdTime = other0.createdTime;
+  updatedTime = other0.updatedTime;
+  __isset = other0.__isset;
+}
+Domain& Domain::operator=(const Domain& other1) {
+  domainId = other1.domainId;
+  name = other1.name;
+  description = other1.description;
+  createdTime = other1.createdTime;
+  updatedTime = other1.updatedTime;
+  __isset = other1.__isset;
+  return *this;
+}
+void Domain::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "Domain(";
+  out << "domainId="; (__isset.domainId ? (out << to_string(domainId)) : (out << "<null>"));
+  out << ", " << "name="; (__isset.name ? (out << to_string(name)) : (out << "<null>"));
+  out << ", " << "description="; (__isset.description ? (out << to_string(description)) : (out << "<null>"));
+  out << ", " << "createdTime="; (__isset.createdTime ? (out << to_string(createdTime)) : (out << "<null>"));
+  out << ", " << "updatedTime="; (__isset.updatedTime ? (out << to_string(updatedTime)) : (out << "<null>"));
+  out << ")";
+}
+
+
+User::~User() throw() {
+}
+
+
+void User::__set_userId(const std::string& val) {
+  this->userId = val;
+__isset.userId = true;
+}
+
+void User::__set_domainId(const std::string& val) {
+  this->domainId = val;
+__isset.domainId = true;
+}
+
+void User::__set_userName(const std::string& val) {
+  this->userName = val;
+__isset.userName = true;
+}
+
+void User::__set_firstName(const std::string& val) {
+  this->firstName = val;
+__isset.firstName = true;
+}
+
+void User::__set_lastName(const std::string& val) {
+  this->lastName = val;
+__isset.lastName = true;
+}
+
+void User::__set_email(const std::string& val) {
+  this->email = val;
+__isset.email = true;
+}
+
+void User::__set_icon(const std::string& val) {
+  this->icon = val;
+__isset.icon = true;
+}
+
+void User::__set_createdTime(const int64_t val) {
+  this->createdTime = val;
+__isset.createdTime = true;
+}
+
+void User::__set_updatedTime(const int64_t val) {
+  this->updatedTime = val;
+__isset.updatedTime = true;
+}
+
+uint32_t User::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->userId);
+          this->__isset.userId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->domainId);
+          this->__isset.domainId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->userName);
+          this->__isset.userName = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->firstName);
+          this->__isset.firstName = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->lastName);
+          this->__isset.lastName = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 6:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->email);
+          this->__isset.email = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 7:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readBinary(this->icon);
+          this->__isset.icon = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 8:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->createdTime);
+          this->__isset.createdTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 9:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->updatedTime);
+          this->__isset.updatedTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t User::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("User");
+
+  if (this->__isset.userId) {
+    xfer += oprot->writeFieldBegin("userId", ::apache::thrift::protocol::T_STRING, 1);
+    xfer += oprot->writeString(this->userId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.domainId) {
+    xfer += oprot->writeFieldBegin("domainId", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->domainId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.userName) {
+    xfer += oprot->writeFieldBegin("userName", ::apache::thrift::protocol::T_STRING, 3);
+    xfer += oprot->writeString(this->userName);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.firstName) {
+    xfer += oprot->writeFieldBegin("firstName", ::apache::thrift::protocol::T_STRING, 4);
+    xfer += oprot->writeString(this->firstName);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.lastName) {
+    xfer += oprot->writeFieldBegin("lastName", ::apache::thrift::protocol::T_STRING, 5);
+    xfer += oprot->writeString(this->lastName);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.email) {
+    xfer += oprot->writeFieldBegin("email", ::apache::thrift::protocol::T_STRING, 6);
+    xfer += oprot->writeString(this->email);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.icon) {
+    xfer += oprot->writeFieldBegin("icon", ::apache::thrift::protocol::T_STRING, 7);
+    xfer += oprot->writeBinary(this->icon);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.createdTime) {
+    xfer += oprot->writeFieldBegin("createdTime", ::apache::thrift::protocol::T_I64, 8);
+    xfer += oprot->writeI64(this->createdTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.updatedTime) {
+    xfer += oprot->writeFieldBegin("updatedTime", ::apache::thrift::protocol::T_I64, 9);
+    xfer += oprot->writeI64(this->updatedTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(User &a, User &b) {
+  using ::std::swap;
+  swap(a.userId, b.userId);
+  swap(a.domainId, b.domainId);
+  swap(a.userName, b.userName);
+  swap(a.firstName, b.firstName);
+  swap(a.lastName, b.lastName);
+  swap(a.email, b.email);
+  swap(a.icon, b.icon);
+  swap(a.createdTime, b.createdTime);
+  swap(a.updatedTime, b.updatedTime);
+  swap(a.__isset, b.__isset);
+}
+
+User::User(const User& other2) {
+  userId = other2.userId;
+  domainId = other2.domainId;
+  userName = other2.userName;
+  firstName = other2.firstName;
+  lastName = other2.lastName;
+  email = other2.email;
+  icon = other2.icon;
+  createdTime = other2.createdTime;
+  updatedTime = other2.updatedTime;
+  __isset = other2.__isset;
+}
+User& User::operator=(const User& other3) {
+  userId = other3.userId;
+  domainId = other3.domainId;
+  userName = other3.userName;
+  firstName = other3.firstName;
+  lastName = other3.lastName;
+  email = other3.email;
+  icon = other3.icon;
+  createdTime = other3.createdTime;
+  updatedTime = other3.updatedTime;
+  __isset = other3.__isset;
+  return *this;
+}
+void User::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "User(";
+  out << "userId="; (__isset.userId ? (out << to_string(userId)) : (out << "<null>"));
+  out << ", " << "domainId="; (__isset.domainId ? (out << to_string(domainId)) : (out << "<null>"));
+  out << ", " << "userName="; (__isset.userName ? (out << to_string(userName)) : (out << "<null>"));
+  out << ", " << "firstName="; (__isset.firstName ? (out << to_string(firstName)) : (out << "<null>"));
+  out << ", " << "lastName="; (__isset.lastName ? (out << to_string(lastName)) : (out << "<null>"));
+  out << ", " << "email="; (__isset.email ? (out << to_string(email)) : (out << "<null>"));
+  out << ", " << "icon="; (__isset.icon ? (out << to_string(icon)) : (out << "<null>"));
+  out << ", " << "createdTime="; (__isset.createdTime ? (out << to_string(createdTime)) : (out << "<null>"));
+  out << ", " << "updatedTime="; (__isset.updatedTime ? (out << to_string(updatedTime)) : (out << "<null>"));
+  out << ")";
+}
+
+
+UserGroup::~UserGroup() throw() {
+}
+
+
+void UserGroup::__set_groupId(const std::string& val) {
+  this->groupId = val;
+__isset.groupId = true;
+}
+
+void UserGroup::__set_domainId(const std::string& val) {
+  this->domainId = val;
+__isset.domainId = true;
+}
+
+void UserGroup::__set_name(const std::string& val) {
+  this->name = val;
+__isset.name = true;
+}
+
+void UserGroup::__set_description(const std::string& val) {
+  this->description = val;
+__isset.description = true;
+}
+
+void UserGroup::__set_ownerId(const std::string& val) {
+  this->ownerId = val;
+__isset.ownerId = true;
+}
+
+void UserGroup::__set_groupType(const GroupType::type val) {
+  this->groupType = val;
+__isset.groupType = true;
+}
+
+void UserGroup::__set_groupCardinality(const GroupCardinality::type val) {
+  this->groupCardinality = val;
+__isset.groupCardinality = true;
+}
+
+void UserGroup::__set_createdTime(const int64_t val) {
+  this->createdTime = val;
+__isset.createdTime = true;
+}
+
+void UserGroup::__set_updatedTime(const int64_t val) {
+  this->updatedTime = val;
+__isset.updatedTime = true;
+}
+
+uint32_t UserGroup::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->groupId);
+          this->__isset.groupId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->domainId);
+          this->__isset.domainId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->name);
+          this->__isset.name = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->description);
+          this->__isset.description = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->ownerId);
+          this->__isset.ownerId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 6:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          int32_t ecast4;
+          xfer += iprot->readI32(ecast4);
+          this->groupType = (GroupType::type)ecast4;
+          this->__isset.groupType = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 7:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          int32_t ecast5;
+          xfer += iprot->readI32(ecast5);
+          this->groupCardinality = (GroupCardinality::type)ecast5;
+          this->__isset.groupCardinality = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 8:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->createdTime);
+          this->__isset.createdTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 9:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->updatedTime);
+          this->__isset.updatedTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t UserGroup::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("UserGroup");
+
+  if (this->__isset.groupId) {
+    xfer += oprot->writeFieldBegin("groupId", ::apache::thrift::protocol::T_STRING, 1);
+    xfer += oprot->writeString(this->groupId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.domainId) {
+    xfer += oprot->writeFieldBegin("domainId", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->domainId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.name) {
+    xfer += oprot->writeFieldBegin("name", ::apache::thrift::protocol::T_STRING, 3);
+    xfer += oprot->writeString(this->name);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.description) {
+    xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 4);
+    xfer += oprot->writeString(this->description);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.ownerId) {
+    xfer += oprot->writeFieldBegin("ownerId", ::apache::thrift::protocol::T_STRING, 5);
+    xfer += oprot->writeString(this->ownerId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.groupType) {
+    xfer += oprot->writeFieldBegin("groupType", ::apache::thrift::protocol::T_I32, 6);
+    xfer += oprot->writeI32((int32_t)this->groupType);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.groupCardinality) {
+    xfer += oprot->writeFieldBegin("groupCardinality", ::apache::thrift::protocol::T_I32, 7);
+    xfer += oprot->writeI32((int32_t)this->groupCardinality);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.createdTime) {
+    xfer += oprot->writeFieldBegin("createdTime", ::apache::thrift::protocol::T_I64, 8);
+    xfer += oprot->writeI64(this->createdTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.updatedTime) {
+    xfer += oprot->writeFieldBegin("updatedTime", ::apache::thrift::protocol::T_I64, 9);
+    xfer += oprot->writeI64(this->updatedTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(UserGroup &a, UserGroup &b) {
+  using ::std::swap;
+  swap(a.groupId, b.groupId);
+  swap(a.domainId, b.domainId);
+  swap(a.name, b.name);
+  swap(a.description, b.description);
+  swap(a.ownerId, b.ownerId);
+  swap(a.groupType, b.groupType);
+  swap(a.groupCardinality, b.groupCardinality);
+  swap(a.createdTime, b.createdTime);
+  swap(a.updatedTime, b.updatedTime);
+  swap(a.__isset, b.__isset);
+}
+
+UserGroup::UserGroup(const UserGroup& other6) {
+  groupId = other6.groupId;
+  domainId = other6.domainId;
+  name = other6.name;
+  description = other6.description;
+  ownerId = other6.ownerId;
+  groupType = other6.groupType;
+  groupCardinality = other6.groupCardinality;
+  createdTime = other6.createdTime;
+  updatedTime = other6.updatedTime;
+  __isset = other6.__isset;
+}
+UserGroup& UserGroup::operator=(const UserGroup& other7) {
+  groupId = other7.groupId;
+  domainId = other7.domainId;
+  name = other7.name;
+  description = other7.description;
+  ownerId = other7.ownerId;
+  groupType = other7.groupType;
+  groupCardinality = other7.groupCardinality;
+  createdTime = other7.createdTime;
+  updatedTime = other7.updatedTime;
+  __isset = other7.__isset;
+  return *this;
+}
+void UserGroup::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "UserGroup(";
+  out << "groupId="; (__isset.groupId ? (out << to_string(groupId)) : (out << "<null>"));
+  out << ", " << "domainId="; (__isset.domainId ? (out << to_string(domainId)) : (out << "<null>"));
+  out << ", " << "name="; (__isset.name ? (out << to_string(name)) : (out << "<null>"));
+  out << ", " << "description="; (__isset.description ? (out << to_string(description)) : (out << "<null>"));
+  out << ", " << "ownerId="; (__isset.ownerId ? (out << to_string(ownerId)) : (out << "<null>"));
+  out << ", " << "groupType="; (__isset.groupType ? (out << to_string(groupType)) : (out << "<null>"));
+  out << ", " << "groupCardinality="; (__isset.groupCardinality ? (out << to_string(groupCardinality)) : (out << "<null>"));
+  out << ", " << "createdTime="; (__isset.createdTime ? (out << to_string(createdTime)) : (out << "<null>"));
+  out << ", " << "updatedTime="; (__isset.updatedTime ? (out << to_string(updatedTime)) : (out << "<null>"));
+  out << ")";
+}
+
+
+GroupMembership::~GroupMembership() throw() {
+}
+
+
+void GroupMembership::__set_parentId(const std::string& val) {
+  this->parentId = val;
+__isset.parentId = true;
+}
+
+void GroupMembership::__set_childId(const std::string& val) {
+  this->childId = val;
+__isset.childId = true;
+}
+
+void GroupMembership::__set_domainId(const std::string& val) {
+  this->domainId = val;
+__isset.domainId = true;
+}
+
+void GroupMembership::__set_childType(const GroupChildType::type val) {
+  this->childType = val;
+__isset.childType = true;
+}
+
+void GroupMembership::__set_createdTime(const int64_t val) {
+  this->createdTime = val;
+__isset.createdTime = true;
+}
+
+void GroupMembership::__set_updatedTime(const int64_t val) {
+  this->updatedTime = val;
+__isset.updatedTime = true;
+}
+
+uint32_t GroupMembership::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->parentId);
+          this->__isset.parentId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->childId);
+          this->__isset.childId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->domainId);
+          this->__isset.domainId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          int32_t ecast8;
+          xfer += iprot->readI32(ecast8);
+          this->childType = (GroupChildType::type)ecast8;
+          this->__isset.childType = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->createdTime);
+          this->__isset.createdTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 6:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->updatedTime);
+          this->__isset.updatedTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t GroupMembership::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("GroupMembership");
+
+  if (this->__isset.parentId) {
+    xfer += oprot->writeFieldBegin("parentId", ::apache::thrift::protocol::T_STRING, 1);
+    xfer += oprot->writeString(this->parentId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.childId) {
+    xfer += oprot->writeFieldBegin("childId", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->childId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.domainId) {
+    xfer += oprot->writeFieldBegin("domainId", ::apache::thrift::protocol::T_STRING, 3);
+    xfer += oprot->writeString(this->domainId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.childType) {
+    xfer += oprot->writeFieldBegin("childType", ::apache::thrift::protocol::T_I32, 4);
+    xfer += oprot->writeI32((int32_t)this->childType);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.createdTime) {
+    xfer += oprot->writeFieldBegin("createdTime", ::apache::thrift::protocol::T_I64, 5);
+    xfer += oprot->writeI64(this->createdTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.updatedTime) {
+    xfer += oprot->writeFieldBegin("updatedTime", ::apache::thrift::protocol::T_I64, 6);
+    xfer += oprot->writeI64(this->updatedTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(GroupMembership &a, GroupMembership &b) {
+  using ::std::swap;
+  swap(a.parentId, b.parentId);
+  swap(a.childId, b.childId);
+  swap(a.domainId, b.domainId);
+  swap(a.childType, b.childType);
+  swap(a.createdTime, b.createdTime);
+  swap(a.updatedTime, b.updatedTime);
+  swap(a.__isset, b.__isset);
+}
+
+GroupMembership::GroupMembership(const GroupMembership& other9) {
+  parentId = other9.parentId;
+  childId = other9.childId;
+  domainId = other9.domainId;
+  childType = other9.childType;
+  createdTime = other9.createdTime;
+  updatedTime = other9.updatedTime;
+  __isset = other9.__isset;
+}
+GroupMembership& GroupMembership::operator=(const GroupMembership& other10) {
+  parentId = other10.parentId;
+  childId = other10.childId;
+  domainId = other10.domainId;
+  childType = other10.childType;
+  createdTime = other10.createdTime;
+  updatedTime = other10.updatedTime;
+  __isset = other10.__isset;
+  return *this;
+}
+void GroupMembership::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "GroupMembership(";
+  out << "parentId="; (__isset.parentId ? (out << to_string(parentId)) : (out << "<null>"));
+  out << ", " << "childId="; (__isset.childId ? (out << to_string(childId)) : (out << "<null>"));
+  out << ", " << "domainId="; (__isset.domainId ? (out << to_string(domainId)) : (out << "<null>"));
+  out << ", " << "childType="; (__isset.childType ? (out << to_string(childType)) : (out << "<null>"));
+  out << ", " << "createdTime="; (__isset.createdTime ? (out << to_string(createdTime)) : (out << "<null>"));
+  out << ", " << "updatedTime="; (__isset.updatedTime ? (out << to_string(updatedTime)) : (out << "<null>"));
+  out << ")";
+}
+
+
+EntityType::~EntityType() throw() {
+}
+
+
+void EntityType::__set_entityTypeId(const std::string& val) {
+  this->entityTypeId = val;
+__isset.entityTypeId = true;
+}
+
+void EntityType::__set_domainId(const std::string& val) {
+  this->domainId = val;
+__isset.domainId = true;
+}
+
+void EntityType::__set_name(const std::string& val) {
+  this->name = val;
+__isset.name = true;
+}
+
+void EntityType::__set_description(const std::string& val) {
+  this->description = val;
+__isset.description = true;
+}
+
+void EntityType::__set_createdTime(const int64_t val) {
+  this->createdTime = val;
+__isset.createdTime = true;
+}
+
+void EntityType::__set_updatedTime(const int64_t val) {
+  this->updatedTime = val;
+__isset.updatedTime = true;
+}
+
+uint32_t EntityType::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->entityTypeId);
+          this->__isset.entityTypeId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->domainId);
+          this->__isset.domainId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->name);
+          this->__isset.name = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->description);
+          this->__isset.description = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->createdTime);
+          this->__isset.createdTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 6:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->updatedTime);
+          this->__isset.updatedTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t EntityType::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("EntityType");
+
+  if (this->__isset.entityTypeId) {
+    xfer += oprot->writeFieldBegin("entityTypeId", ::apache::thrift::protocol::T_STRING, 1);
+    xfer += oprot->writeString(this->entityTypeId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.domainId) {
+    xfer += oprot->writeFieldBegin("domainId", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->domainId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.name) {
+    xfer += oprot->writeFieldBegin("name", ::apache::thrift::protocol::T_STRING, 3);
+    xfer += oprot->writeString(this->name);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.description) {
+    xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 4);
+    xfer += oprot->writeString(this->description);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.createdTime) {
+    xfer += oprot->writeFieldBegin("createdTime", ::apache::thrift::protocol::T_I64, 5);
+    xfer += oprot->writeI64(this->createdTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.updatedTime) {
+    xfer += oprot->writeFieldBegin("updatedTime", ::apache::thrift::protocol::T_I64, 6);
+    xfer += oprot->writeI64(this->updatedTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(EntityType &a, EntityType &b) {
+  using ::std::swap;
+  swap(a.entityTypeId, b.entityTypeId);
+  swap(a.domainId, b.domainId);
+  swap(a.name, b.name);
+  swap(a.description, b.description);
+  swap(a.createdTime, b.createdTime);
+  swap(a.updatedTime, b.updatedTime);
+  swap(a.__isset, b.__isset);
+}
+
+EntityType::EntityType(const EntityType& other11) {
+  entityTypeId = other11.entityTypeId;
+  domainId = other11.domainId;
+  name = other11.name;
+  description = other11.description;
+  createdTime = other11.createdTime;
+  updatedTime = other11.updatedTime;
+  __isset = other11.__isset;
+}
+EntityType& EntityType::operator=(const EntityType& other12) {
+  entityTypeId = other12.entityTypeId;
+  domainId = other12.domainId;
+  name = other12.name;
+  description = other12.description;
+  createdTime = other12.createdTime;
+  updatedTime = other12.updatedTime;
+  __isset = other12.__isset;
+  return *this;
+}
+void EntityType::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "EntityType(";
+  out << "entityTypeId="; (__isset.entityTypeId ? (out << to_string(entityTypeId)) : (out << "<null>"));
+  out << ", " << "domainId="; (__isset.domainId ? (out << to_string(domainId)) : (out << "<null>"));
+  out << ", " << "name="; (__isset.name ? (out << to_string(name)) : (out << "<null>"));
+  out << ", " << "description="; (__isset.description ? (out << to_string(description)) : (out << "<null>"));
+  out << ", " << "createdTime="; (__isset.createdTime ? (out << to_string(createdTime)) : (out << "<null>"));
+  out << ", " << "updatedTime="; (__isset.updatedTime ? (out << to_string(updatedTime)) : (out << "<null>"));
+  out << ")";
+}
+
+
+SearchCriteria::~SearchCriteria() throw() {
+}
+
+
+void SearchCriteria::__set_searchField(const EntitySearchField::type val) {
+  this->searchField = val;
+__isset.searchField = true;
+}
+
+void SearchCriteria::__set_value(const std::string& val) {
+  this->value = val;
+__isset.value = true;
+}
+
+void SearchCriteria::__set_searchCondition(const SearchCondition::type val) {
+  this->searchCondition = val;
+__isset.searchCondition = true;
+}
+
+uint32_t SearchCriteria::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          int32_t ecast13;
+          xfer += iprot->readI32(ecast13);
+          this->searchField = (EntitySearchField::type)ecast13;
+          this->__isset.searchField = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->value);
+          this->__isset.value = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          int32_t ecast14;
+          xfer += iprot->readI32(ecast14);
+          this->searchCondition = (SearchCondition::type)ecast14;
+          this->__isset.searchCondition = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t SearchCriteria::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("SearchCriteria");
+
+  if (this->__isset.searchField) {
+    xfer += oprot->writeFieldBegin("searchField", ::apache::thrift::protocol::T_I32, 1);
+    xfer += oprot->writeI32((int32_t)this->searchField);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.value) {
+    xfer += oprot->writeFieldBegin("value", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->value);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.searchCondition) {
+    xfer += oprot->writeFieldBegin("searchCondition", ::apache::thrift::protocol::T_I32, 3);
+    xfer += oprot->writeI32((int32_t)this->searchCondition);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(SearchCriteria &a, SearchCriteria &b) {
+  using ::std::swap;
+  swap(a.searchField, b.searchField);
+  swap(a.value, b.value);
+  swap(a.searchCondition, b.searchCondition);
+  swap(a.__isset, b.__isset);
+}
+
+SearchCriteria::SearchCriteria(const SearchCriteria& other15) {
+  searchField = other15.searchField;
+  value = other15.value;
+  searchCondition = other15.searchCondition;
+  __isset = other15.__isset;
+}
+SearchCriteria& SearchCriteria::operator=(const SearchCriteria& other16) {
+  searchField = other16.searchField;
+  value = other16.value;
+  searchCondition = other16.searchCondition;
+  __isset = other16.__isset;
+  return *this;
+}
+void SearchCriteria::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "SearchCriteria(";
+  out << "searchField="; (__isset.searchField ? (out << to_string(searchField)) : (out << "<null>"));
+  out << ", " << "value="; (__isset.value ? (out << to_string(value)) : (out << "<null>"));
+  out << ", " << "searchCondition="; (__isset.searchCondition ? (out << to_string(searchCondition)) : (out << "<null>"));
+  out << ")";
+}
+
+
+Entity::~Entity() throw() {
+}
+
+
+void Entity::__set_entityId(const std::string& val) {
+  this->entityId = val;
+__isset.entityId = true;
+}
+
+void Entity::__set_domainId(const std::string& val) {
+  this->domainId = val;
+__isset.domainId = true;
+}
+
+void Entity::__set_entityTypeId(const std::string& val) {
+  this->entityTypeId = val;
+__isset.entityTypeId = true;
+}
+
+void Entity::__set_ownerId(const std::string& val) {
+  this->ownerId = val;
+__isset.ownerId = true;
+}
+
+void Entity::__set_parentEntityId(const std::string& val) {
+  this->parentEntityId = val;
+__isset.parentEntityId = true;
+}
+
+void Entity::__set_name(const std::string& val) {
+  this->name = val;
+__isset.name = true;
+}
+
+void Entity::__set_description(const std::string& val) {
+  this->description = val;
+__isset.description = true;
+}
+
+void Entity::__set_binaryData(const std::string& val) {
+  this->binaryData = val;
+__isset.binaryData = true;
+}
+
+void Entity::__set_fullText(const std::string& val) {
+  this->fullText = val;
+__isset.fullText = true;
+}
+
+void Entity::__set_sharedCount(const int64_t val) {
+  this->sharedCount = val;
+__isset.sharedCount = true;
+}
+
+void Entity::__set_originalEntityCreationTime(const int64_t val) {
+  this->originalEntityCreationTime = val;
+__isset.originalEntityCreationTime = true;
+}
+
+void Entity::__set_createdTime(const int64_t val) {
+  this->createdTime = val;
+__isset.createdTime = true;
+}
+
+void Entity::__set_updatedTime(const int64_t val) {
+  this->updatedTime = val;
+__isset.updatedTime = true;
+}
+
+uint32_t Entity::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->entityId);
+          this->__isset.entityId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->domainId);
+          this->__isset.domainId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->entityTypeId);
+          this->__isset.entityTypeId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->ownerId);
+          this->__isset.ownerId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->parentEntityId);
+          this->__isset.parentEntityId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 6:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->name);
+          this->__isset.name = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 7:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->description);
+          this->__isset.description = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 8:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readBinary(this->binaryData);
+          this->__isset.binaryData = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 9:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->fullText);
+          this->__isset.fullText = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 10:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->sharedCount);
+          this->__isset.sharedCount = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 11:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->originalEntityCreationTime);
+          this->__isset.originalEntityCreationTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 12:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->createdTime);
+          this->__isset.createdTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 13:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->updatedTime);
+          this->__isset.updatedTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t Entity::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Entity");
+
+  if (this->__isset.entityId) {
+    xfer += oprot->writeFieldBegin("entityId", ::apache::thrift::protocol::T_STRING, 1);
+    xfer += oprot->writeString(this->entityId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.domainId) {
+    xfer += oprot->writeFieldBegin("domainId", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->domainId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.entityTypeId) {
+    xfer += oprot->writeFieldBegin("entityTypeId", ::apache::thrift::protocol::T_STRING, 3);
+    xfer += oprot->writeString(this->entityTypeId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.ownerId) {
+    xfer += oprot->writeFieldBegin("ownerId", ::apache::thrift::protocol::T_STRING, 4);
+    xfer += oprot->writeString(this->ownerId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.parentEntityId) {
+    xfer += oprot->writeFieldBegin("parentEntityId", ::apache::thrift::protocol::T_STRING, 5);
+    xfer += oprot->writeString(this->parentEntityId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.name) {
+    xfer += oprot->writeFieldBegin("name", ::apache::thrift::protocol::T_STRING, 6);
+    xfer += oprot->writeString(this->name);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.description) {
+    xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 7);
+    xfer += oprot->writeString(this->description);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.binaryData) {
+    xfer += oprot->writeFieldBegin("binaryData", ::apache::thrift::protocol::T_STRING, 8);
+    xfer += oprot->writeBinary(this->binaryData);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.fullText) {
+    xfer += oprot->writeFieldBegin("fullText", ::apache::thrift::protocol::T_STRING, 9);
+    xfer += oprot->writeString(this->fullText);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.sharedCount) {
+    xfer += oprot->writeFieldBegin("sharedCount", ::apache::thrift::protocol::T_I64, 10);
+    xfer += oprot->writeI64(this->sharedCount);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.originalEntityCreationTime) {
+    xfer += oprot->writeFieldBegin("originalEntityCreationTime", ::apache::thrift::protocol::T_I64, 11);
+    xfer += oprot->writeI64(this->originalEntityCreationTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.createdTime) {
+    xfer += oprot->writeFieldBegin("createdTime", ::apache::thrift::protocol::T_I64, 12);
+    xfer += oprot->writeI64(this->createdTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.updatedTime) {
+    xfer += oprot->writeFieldBegin("updatedTime", ::apache::thrift::protocol::T_I64, 13);
+    xfer += oprot->writeI64(this->updatedTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(Entity &a, Entity &b) {
+  using ::std::swap;
+  swap(a.entityId, b.entityId);
+  swap(a.domainId, b.domainId);
+  swap(a.entityTypeId, b.entityTypeId);
+  swap(a.ownerId, b.ownerId);
+  swap(a.parentEntityId, b.parentEntityId);
+  swap(a.name, b.name);
+  swap(a.description, b.description);
+  swap(a.binaryData, b.binaryData);
+  swap(a.fullText, b.fullText);
+  swap(a.sharedCount, b.sharedCount);
+  swap(a.originalEntityCreationTime, b.originalEntityCreationTime);
+  swap(a.createdTime, b.createdTime);
+  swap(a.updatedTime, b.updatedTime);
+  swap(a.__isset, b.__isset);
+}
+
+Entity::Entity(const Entity& other17) {
+  entityId = other17.entityId;
+  domainId = other17.domainId;
+  entityTypeId = other17.entityTypeId;
+  ownerId = other17.ownerId;
+  parentEntityId = other17.parentEntityId;
+  name = other17.name;
+  description = other17.description;
+  binaryData = other17.binaryData;
+  fullText = other17.fullText;
+  sharedCount = other17.sharedCount;
+  originalEntityCreationTime = other17.originalEntityCreationTime;
+  createdTime = other17.createdTime;
+  updatedTime = other17.updatedTime;
+  __isset = other17.__isset;
+}
+Entity& Entity::operator=(const Entity& other18) {
+  entityId = other18.entityId;
+  domainId = other18.domainId;
+  entityTypeId = other18.entityTypeId;
+  ownerId = other18.ownerId;
+  parentEntityId = other18.parentEntityId;
+  name = other18.name;
+  description = other18.description;
+  binaryData = other18.binaryData;
+  fullText = other18.fullText;
+  sharedCount = other18.sharedCount;
+  originalEntityCreationTime = other18.originalEntityCreationTime;
+  createdTime = other18.createdTime;
+  updatedTime = other18.updatedTime;
+  __isset = other18.__isset;
+  return *this;
+}
+void Entity::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "Entity(";
+  out << "entityId="; (__isset.entityId ? (out << to_string(entityId)) : (out << "<null>"));
+  out << ", " << "domainId="; (__isset.domainId ? (out << to_string(domainId)) : (out << "<null>"));
+  out << ", " << "entityTypeId="; (__isset.entityTypeId ? (out << to_string(entityTypeId)) : (out << "<null>"));
+  out << ", " << "ownerId="; (__isset.ownerId ? (out << to_string(ownerId)) : (out << "<null>"));
+  out << ", " << "parentEntityId="; (__isset.parentEntityId ? (out << to_string(parentEntityId)) : (out << "<null>"));
+  out << ", " << "name="; (__isset.name ? (out << to_string(name)) : (out << "<null>"));
+  out << ", " << "description="; (__isset.description ? (out << to_string(description)) : (out << "<null>"));
+  out << ", " << "binaryData="; (__isset.binaryData ? (out << to_string(binaryData)) : (out << "<null>"));
+  out << ", " << "fullText="; (__isset.fullText ? (out << to_string(fullText)) : (out << "<null>"));
+  out << ", " << "sharedCount="; (__isset.sharedCount ? (out << to_string(sharedCount)) : (out << "<null>"));
+  out << ", " << "originalEntityCreationTime="; (__isset.originalEntityCreationTime ? (out << to_string(originalEntityCreationTime)) : (out << "<null>"));
+  out << ", " << "createdTime="; (__isset.createdTime ? (out << to_string(createdTime)) : (out << "<null>"));
+  out << ", " << "updatedTime="; (__isset.updatedTime ? (out << to_string(updatedTime)) : (out << "<null>"));
+  out << ")";
+}
+
+
+PermissionType::~PermissionType() throw() {
+}
+
+
+void PermissionType::__set_permissionTypeId(const std::string& val) {
+  this->permissionTypeId = val;
+__isset.permissionTypeId = true;
+}
+
+void PermissionType::__set_domainId(const std::string& val) {
+  this->domainId = val;
+__isset.domainId = true;
+}
+
+void PermissionType::__set_name(const std::string& val) {
+  this->name = val;
+__isset.name = true;
+}
+
+void PermissionType::__set_description(const std::string& val) {
+  this->description = val;
+__isset.description = true;
+}
+
+void PermissionType::__set_createdTime(const int64_t val) {
+  this->createdTime = val;
+__isset.createdTime = true;
+}
+
+void PermissionType::__set_updatedTime(const int64_t val) {
+  this->updatedTime = val;
+__isset.updatedTime = true;
+}
+
+uint32_t PermissionType::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->permissionTypeId);
+          this->__isset.permissionTypeId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->domainId);
+          this->__isset.domainId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->name);
+          this->__isset.name = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->description);
+          this->__isset.description = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->createdTime);
+          this->__isset.createdTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 6:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->updatedTime);
+          this->__isset.updatedTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t PermissionType::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("PermissionType");
+
+  if (this->__isset.permissionTypeId) {
+    xfer += oprot->writeFieldBegin("permissionTypeId", ::apache::thrift::protocol::T_STRING, 1);
+    xfer += oprot->writeString(this->permissionTypeId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.domainId) {
+    xfer += oprot->writeFieldBegin("domainId", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->domainId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.name) {
+    xfer += oprot->writeFieldBegin("name", ::apache::thrift::protocol::T_STRING, 3);
+    xfer += oprot->writeString(this->name);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.description) {
+    xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 4);
+    xfer += oprot->writeString(this->description);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.createdTime) {
+    xfer += oprot->writeFieldBegin("createdTime", ::apache::thrift::protocol::T_I64, 5);
+    xfer += oprot->writeI64(this->createdTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.updatedTime) {
+    xfer += oprot->writeFieldBegin("updatedTime", ::apache::thrift::protocol::T_I64, 6);
+    xfer += oprot->writeI64(this->updatedTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(PermissionType &a, PermissionType &b) {
+  using ::std::swap;
+  swap(a.permissionTypeId, b.permissionTypeId);
+  swap(a.domainId, b.domainId);
+  swap(a.name, b.name);
+  swap(a.description, b.description);
+  swap(a.createdTime, b.createdTime);
+  swap(a.updatedTime, b.updatedTime);
+  swap(a.__isset, b.__isset);
+}
+
+PermissionType::PermissionType(const PermissionType& other19) {
+  permissionTypeId = other19.permissionTypeId;
+  domainId = other19.domainId;
+  name = other19.name;
+  description = other19.description;
+  createdTime = other19.createdTime;
+  updatedTime = other19.updatedTime;
+  __isset = other19.__isset;
+}
+PermissionType& PermissionType::operator=(const PermissionType& other20) {
+  permissionTypeId = other20.permissionTypeId;
+  domainId = other20.domainId;
+  name = other20.name;
+  description = other20.description;
+  createdTime = other20.createdTime;
+  updatedTime = other20.updatedTime;
+  __isset = other20.__isset;
+  return *this;
+}
+void PermissionType::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "PermissionType(";
+  out << "permissionTypeId="; (__isset.permissionTypeId ? (out << to_string(permissionTypeId)) : (out << "<null>"));
+  out << ", " << "domainId="; (__isset.domainId ? (out << to_string(domainId)) : (out << "<null>"));
+  out << ", " << "name="; (__isset.name ? (out << to_string(name)) : (out << "<null>"));
+  out << ", " << "description="; (__isset.description ? (out << to_string(description)) : (out << "<null>"));
+  out << ", " << "createdTime="; (__isset.createdTime ? (out << to_string(createdTime)) : (out << "<null>"));
+  out << ", " << "updatedTime="; (__isset.updatedTime ? (out << to_string(updatedTime)) : (out << "<null>"));
+  out << ")";
+}
+
+
+Sharing::~Sharing() throw() {
+}
+
+
+void Sharing::__set_permissionTypeId(const std::string& val) {
+  this->permissionTypeId = val;
+__isset.permissionTypeId = true;
+}
+
+void Sharing::__set_entityId(const std::string& val) {
+  this->entityId = val;
+__isset.entityId = true;
+}
+
+void Sharing::__set_groupId(const std::string& val) {
+  this->groupId = val;
+__isset.groupId = true;
+}
+
+void Sharing::__set_sharingType(const SharingType::type val) {
+  this->sharingType = val;
+__isset.sharingType = true;
+}
+
+void Sharing::__set_domainId(const std::string& val) {
+  this->domainId = val;
+__isset.domainId = true;
+}
+
+void Sharing::__set_inheritedParentId(const std::string& val) {
+  this->inheritedParentId = val;
+__isset.inheritedParentId = true;
+}
+
+void Sharing::__set_createdTime(const int64_t val) {
+  this->createdTime = val;
+__isset.createdTime = true;
+}
+
+void Sharing::__set_updatedTime(const int64_t val) {
+  this->updatedTime = val;
+__isset.updatedTime = true;
+}
+
+uint32_t Sharing::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->permissionTypeId);
+          this->__isset.permissionTypeId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->entityId);
+          this->__isset.entityId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->groupId);
+          this->__isset.groupId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          int32_t ecast21;
+          xfer += iprot->readI32(ecast21);
+          this->sharingType = (SharingType::type)ecast21;
+          this->__isset.sharingType = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->domainId);
+          this->__isset.domainId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 6:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->inheritedParentId);
+          this->__isset.inheritedParentId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 7:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->createdTime);
+          this->__isset.createdTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 8:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->updatedTime);
+          this->__isset.updatedTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t Sharing::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Sharing");
+
+  if (this->__isset.permissionTypeId) {
+    xfer += oprot->writeFieldBegin("permissionTypeId", ::apache::thrift::protocol::T_STRING, 1);
+    xfer += oprot->writeString(this->permissionTypeId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.entityId) {
+    xfer += oprot->writeFieldBegin("entityId", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->entityId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.groupId) {
+    xfer += oprot->writeFieldBegin("groupId", ::apache::thrift::protocol::T_STRING, 3);
+    xfer += oprot->writeString(this->groupId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.sharingType) {
+    xfer += oprot->writeFieldBegin("sharingType", ::apache::thrift::protocol::T_I32, 4);
+    xfer += oprot->writeI32((int32_t)this->sharingType);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.domainId) {
+    xfer += oprot->writeFieldBegin("domainId", ::apache::thrift::protocol::T_STRING, 5);
+    xfer += oprot->writeString(this->domainId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.inheritedParentId) {
+    xfer += oprot->writeFieldBegin("inheritedParentId", ::apache::thrift::protocol::T_STRING, 6);
+    xfer += oprot->writeString(this->inheritedParentId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.createdTime) {
+    xfer += oprot->writeFieldBegin("createdTime", ::apache::thrift::protocol::T_I64, 7);
+    xfer += oprot->writeI64(this->createdTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.updatedTime) {
+    xfer += oprot->writeFieldBegin("updatedTime", ::apache::thrift::protocol::T_I64, 8);
+    xfer += oprot->writeI64(this->updatedTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(Sharing &a, Sharing &b) {
+  using ::std::swap;
+  swap(a.permissionTypeId, b.permissionTypeId);
+  swap(a.entityId, b.entityId);
+  swap(a.groupId, b.groupId);
+  swap(a.sharingType, b.sharingType);
+  swap(a.domainId, b.domainId);
+  swap(a.inheritedParentId, b.inheritedParentId);
+  swap(a.createdTime, b.createdTime);
+  swap(a.updatedTime, b.updatedTime);
+  swap(a.__isset, b.__isset);
+}
+
+Sharing::Sharing(const Sharing& other22) {
+  permissionTypeId = other22.permissionTypeId;
+  entityId = other22.entityId;
+  groupId = other22.groupId;
+  sharingType = other22.sharingType;
+  domainId = other22.domainId;
+  inheritedParentId = other22.inheritedParentId;
+  createdTime = other22.createdTime;
+  updatedTime = other22.updatedTime;
+  __isset = other22.__isset;
+}
+Sharing& Sharing::operator=(const Sharing& other23) {
+  permissionTypeId = other23.permissionTypeId;
+  entityId = other23.entityId;
+  groupId = other23.groupId;
+  sharingType = other23.sharingType;
+  domainId = other23.domainId;
+  inheritedParentId = other23.inheritedParentId;
+  createdTime = other23.createdTime;
+  updatedTime = other23.updatedTime;
+  __isset = other23.__isset;
+  return *this;
+}
+void Sharing::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "Sharing(";
+  out << "permissionTypeId="; (__isset.permissionTypeId ? (out << to_string(permissionTypeId)) : (out << "<null>"));
+  out << ", " << "entityId="; (__isset.entityId ? (out << to_string(entityId)) : (out << "<null>"));
+  out << ", " << "groupId="; (__isset.groupId ? (out << to_string(groupId)) : (out << "<null>"));
+  out << ", " << "sharingType="; (__isset.sharingType ? (out << to_string(sharingType)) : (out << "<null>"));
+  out << ", " << "domainId="; (__isset.domainId ? (out << to_string(domainId)) : (out << "<null>"));
+  out << ", " << "inheritedParentId="; (__isset.inheritedParentId ? (out << to_string(inheritedParentId)) : (out << "<null>"));
+  out << ", " << "createdTime="; (__isset.createdTime ? (out << to_string(createdTime)) : (out << "<null>"));
+  out << ", " << "updatedTime="; (__isset.updatedTime ? (out << to_string(updatedTime)) : (out << "<null>"));
+  out << ")";
+}
+
+
+SharingRegistryException::~SharingRegistryException() throw() {
+}
+
+
+void SharingRegistryException::__set_message(const std::string& val) {
+  this->message = val;
+}
+
+uint32_t SharingRegistryException::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_message = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->message);
+          isset_message = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_message)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t SharingRegistryException::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("SharingRegistryException");
+
+  xfer += oprot->writeFieldBegin("message", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString(this->message);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(SharingRegistryException &a, SharingRegistryException &b) {
+  using ::std::swap;
+  swap(a.message, b.message);
+}
+
+SharingRegistryException::SharingRegistryException(const SharingRegistryException& other24) : TException() {
+  message = other24.message;
+}
+SharingRegistryException& SharingRegistryException::operator=(const SharingRegistryException& other25) {
+  message = other25.message;
+  return *this;
+}
+void SharingRegistryException::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "SharingRegistryException(";
+  out << "message=" << to_string(message);
+  out << ")";
+}
+
+const char* SharingRegistryException::what() const throw() {
+  try {
+    std::stringstream ss;
+    ss << "TException - service has thrown: " << *this;
+    this->thriftTExceptionMessageHolder_ = ss.str();
+    return this->thriftTExceptionMessageHolder_.c_str();
+  } catch (const std::exception&) {
+    return "TException - service has thrown: SharingRegistryException";
+  }
+}
+
+


[5/6] airavata git commit: adding sharing php and python thrift generated code to language specific sdks

Posted by sc...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/sharing_models_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/sharing_models_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/sharing_models_types.h
new file mode 100644
index 0000000..aacd172
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/sharing_models_types.h
@@ -0,0 +1,1050 @@
+/**
+ * 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.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+#ifndef sharing_models_TYPES_H
+#define sharing_models_TYPES_H
+
+#include <iosfwd>
+
+#include <thrift/Thrift.h>
+#include <thrift/TApplicationException.h>
+#include <thrift/protocol/TProtocol.h>
+#include <thrift/transport/TTransport.h>
+
+#include <thrift/cxxfunctional.h>
+
+
+
+
+struct GroupCardinality {
+  enum type {
+    SINGLE_USER = 0,
+    MULTI_USER = 1
+  };
+};
+
+extern const std::map<int, const char*> _GroupCardinality_VALUES_TO_NAMES;
+
+struct GroupType {
+  enum type {
+    DOMAIN_LEVEL_GROUP = 0,
+    USER_LEVEL_GROUP = 1
+  };
+};
+
+extern const std::map<int, const char*> _GroupType_VALUES_TO_NAMES;
+
+struct GroupChildType {
+  enum type {
+    USER = 0,
+    GROUP = 1
+  };
+};
+
+extern const std::map<int, const char*> _GroupChildType_VALUES_TO_NAMES;
+
+struct EntitySearchField {
+  enum type {
+    NAME = 0,
+    DESCRIPTION = 1,
+    FULL_TEXT = 2,
+    PARRENT_ENTITY_ID = 3,
+    OWNER_ID = 4,
+    PERMISSION_TYPE_ID = 5,
+    CREATED_TIME = 6,
+    UPDATED_TIME = 7,
+    ENTITY_TYPE_ID = 8,
+    SHARED_COUNT = 9
+  };
+};
+
+extern const std::map<int, const char*> _EntitySearchField_VALUES_TO_NAMES;
+
+struct SearchCondition {
+  enum type {
+    EQUAL = 0,
+    LIKE = 1,
+    FULL_TEXT = 2,
+    GTE = 3,
+    LTE = 4,
+    NOT = 5
+  };
+};
+
+extern const std::map<int, const char*> _SearchCondition_VALUES_TO_NAMES;
+
+struct SharingType {
+  enum type {
+    DIRECT_NON_CASCADING = 0,
+    DIRECT_CASCADING = 1,
+    INDIRECT_CASCADING = 2
+  };
+};
+
+extern const std::map<int, const char*> _SharingType_VALUES_TO_NAMES;
+
+class Domain;
+
+class User;
+
+class UserGroup;
+
+class GroupMembership;
+
+class EntityType;
+
+class SearchCriteria;
+
+class Entity;
+
+class PermissionType;
+
+class Sharing;
+
+class SharingRegistryException;
+
+typedef struct _Domain__isset {
+  _Domain__isset() : domainId(true), name(false), description(false), createdTime(false), updatedTime(false) {}
+  bool domainId :1;
+  bool name :1;
+  bool description :1;
+  bool createdTime :1;
+  bool updatedTime :1;
+} _Domain__isset;
+
+class Domain {
+ public:
+
+  Domain(const Domain&);
+  Domain& operator=(const Domain&);
+  Domain() : domainId("DO_NOT_SET_AT_CLIENTS_ID"), name(), description(), createdTime(0), updatedTime(0) {
+  }
+
+  virtual ~Domain() throw();
+  std::string domainId;
+  std::string name;
+  std::string description;
+  int64_t createdTime;
+  int64_t updatedTime;
+
+  _Domain__isset __isset;
+
+  void __set_domainId(const std::string& val);
+
+  void __set_name(const std::string& val);
+
+  void __set_description(const std::string& val);
+
+  void __set_createdTime(const int64_t val);
+
+  void __set_updatedTime(const int64_t val);
+
+  bool operator == (const Domain & rhs) const
+  {
+    if (__isset.domainId != rhs.__isset.domainId)
+      return false;
+    else if (__isset.domainId && !(domainId == rhs.domainId))
+      return false;
+    if (__isset.name != rhs.__isset.name)
+      return false;
+    else if (__isset.name && !(name == rhs.name))
+      return false;
+    if (__isset.description != rhs.__isset.description)
+      return false;
+    else if (__isset.description && !(description == rhs.description))
+      return false;
+    if (__isset.createdTime != rhs.__isset.createdTime)
+      return false;
+    else if (__isset.createdTime && !(createdTime == rhs.createdTime))
+      return false;
+    if (__isset.updatedTime != rhs.__isset.updatedTime)
+      return false;
+    else if (__isset.updatedTime && !(updatedTime == rhs.updatedTime))
+      return false;
+    return true;
+  }
+  bool operator != (const Domain &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Domain & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+};
+
+void swap(Domain &a, Domain &b);
+
+inline std::ostream& operator<<(std::ostream& out, const Domain& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
+typedef struct _User__isset {
+  _User__isset() : userId(false), domainId(false), userName(false), firstName(false), lastName(false), email(false), icon(false), createdTime(false), updatedTime(false) {}
+  bool userId :1;
+  bool domainId :1;
+  bool userName :1;
+  bool firstName :1;
+  bool lastName :1;
+  bool email :1;
+  bool icon :1;
+  bool createdTime :1;
+  bool updatedTime :1;
+} _User__isset;
+
+class User {
+ public:
+
+  User(const User&);
+  User& operator=(const User&);
+  User() : userId(), domainId(), userName(), firstName(), lastName(), email(), icon(), createdTime(0), updatedTime(0) {
+  }
+
+  virtual ~User() throw();
+  std::string userId;
+  std::string domainId;
+  std::string userName;
+  std::string firstName;
+  std::string lastName;
+  std::string email;
+  std::string icon;
+  int64_t createdTime;
+  int64_t updatedTime;
+
+  _User__isset __isset;
+
+  void __set_userId(const std::string& val);
+
+  void __set_domainId(const std::string& val);
+
+  void __set_userName(const std::string& val);
+
+  void __set_firstName(const std::string& val);
+
+  void __set_lastName(const std::string& val);
+
+  void __set_email(const std::string& val);
+
+  void __set_icon(const std::string& val);
+
+  void __set_createdTime(const int64_t val);
+
+  void __set_updatedTime(const int64_t val);
+
+  bool operator == (const User & rhs) const
+  {
+    if (__isset.userId != rhs.__isset.userId)
+      return false;
+    else if (__isset.userId && !(userId == rhs.userId))
+      return false;
+    if (__isset.domainId != rhs.__isset.domainId)
+      return false;
+    else if (__isset.domainId && !(domainId == rhs.domainId))
+      return false;
+    if (__isset.userName != rhs.__isset.userName)
+      return false;
+    else if (__isset.userName && !(userName == rhs.userName))
+      return false;
+    if (__isset.firstName != rhs.__isset.firstName)
+      return false;
+    else if (__isset.firstName && !(firstName == rhs.firstName))
+      return false;
+    if (__isset.lastName != rhs.__isset.lastName)
+      return false;
+    else if (__isset.lastName && !(lastName == rhs.lastName))
+      return false;
+    if (__isset.email != rhs.__isset.email)
+      return false;
+    else if (__isset.email && !(email == rhs.email))
+      return false;
+    if (__isset.icon != rhs.__isset.icon)
+      return false;
+    else if (__isset.icon && !(icon == rhs.icon))
+      return false;
+    if (__isset.createdTime != rhs.__isset.createdTime)
+      return false;
+    else if (__isset.createdTime && !(createdTime == rhs.createdTime))
+      return false;
+    if (__isset.updatedTime != rhs.__isset.updatedTime)
+      return false;
+    else if (__isset.updatedTime && !(updatedTime == rhs.updatedTime))
+      return false;
+    return true;
+  }
+  bool operator != (const User &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const User & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+};
+
+void swap(User &a, User &b);
+
+inline std::ostream& operator<<(std::ostream& out, const User& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
+typedef struct _UserGroup__isset {
+  _UserGroup__isset() : groupId(false), domainId(false), name(false), description(false), ownerId(false), groupType(false), groupCardinality(false), createdTime(false), updatedTime(false) {}
+  bool groupId :1;
+  bool domainId :1;
+  bool name :1;
+  bool description :1;
+  bool ownerId :1;
+  bool groupType :1;
+  bool groupCardinality :1;
+  bool createdTime :1;
+  bool updatedTime :1;
+} _UserGroup__isset;
+
+class UserGroup {
+ public:
+
+  UserGroup(const UserGroup&);
+  UserGroup& operator=(const UserGroup&);
+  UserGroup() : groupId(), domainId(), name(), description(), ownerId(), groupType((GroupType::type)0), groupCardinality((GroupCardinality::type)0), createdTime(0), updatedTime(0) {
+  }
+
+  virtual ~UserGroup() throw();
+  std::string groupId;
+  std::string domainId;
+  std::string name;
+  std::string description;
+  std::string ownerId;
+  GroupType::type groupType;
+  GroupCardinality::type groupCardinality;
+  int64_t createdTime;
+  int64_t updatedTime;
+
+  _UserGroup__isset __isset;
+
+  void __set_groupId(const std::string& val);
+
+  void __set_domainId(const std::string& val);
+
+  void __set_name(const std::string& val);
+
+  void __set_description(const std::string& val);
+
+  void __set_ownerId(const std::string& val);
+
+  void __set_groupType(const GroupType::type val);
+
+  void __set_groupCardinality(const GroupCardinality::type val);
+
+  void __set_createdTime(const int64_t val);
+
+  void __set_updatedTime(const int64_t val);
+
+  bool operator == (const UserGroup & rhs) const
+  {
+    if (__isset.groupId != rhs.__isset.groupId)
+      return false;
+    else if (__isset.groupId && !(groupId == rhs.groupId))
+      return false;
+    if (__isset.domainId != rhs.__isset.domainId)
+      return false;
+    else if (__isset.domainId && !(domainId == rhs.domainId))
+      return false;
+    if (__isset.name != rhs.__isset.name)
+      return false;
+    else if (__isset.name && !(name == rhs.name))
+      return false;
+    if (__isset.description != rhs.__isset.description)
+      return false;
+    else if (__isset.description && !(description == rhs.description))
+      return false;
+    if (__isset.ownerId != rhs.__isset.ownerId)
+      return false;
+    else if (__isset.ownerId && !(ownerId == rhs.ownerId))
+      return false;
+    if (__isset.groupType != rhs.__isset.groupType)
+      return false;
+    else if (__isset.groupType && !(groupType == rhs.groupType))
+      return false;
+    if (__isset.groupCardinality != rhs.__isset.groupCardinality)
+      return false;
+    else if (__isset.groupCardinality && !(groupCardinality == rhs.groupCardinality))
+      return false;
+    if (__isset.createdTime != rhs.__isset.createdTime)
+      return false;
+    else if (__isset.createdTime && !(createdTime == rhs.createdTime))
+      return false;
+    if (__isset.updatedTime != rhs.__isset.updatedTime)
+      return false;
+    else if (__isset.updatedTime && !(updatedTime == rhs.updatedTime))
+      return false;
+    return true;
+  }
+  bool operator != (const UserGroup &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const UserGroup & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+};
+
+void swap(UserGroup &a, UserGroup &b);
+
+inline std::ostream& operator<<(std::ostream& out, const UserGroup& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
+typedef struct _GroupMembership__isset {
+  _GroupMembership__isset() : parentId(false), childId(false), domainId(false), childType(false), createdTime(false), updatedTime(false) {}
+  bool parentId :1;
+  bool childId :1;
+  bool domainId :1;
+  bool childType :1;
+  bool createdTime :1;
+  bool updatedTime :1;
+} _GroupMembership__isset;
+
+class GroupMembership {
+ public:
+
+  GroupMembership(const GroupMembership&);
+  GroupMembership& operator=(const GroupMembership&);
+  GroupMembership() : parentId(), childId(), domainId(), childType((GroupChildType::type)0), createdTime(0), updatedTime(0) {
+  }
+
+  virtual ~GroupMembership() throw();
+  std::string parentId;
+  std::string childId;
+  std::string domainId;
+  GroupChildType::type childType;
+  int64_t createdTime;
+  int64_t updatedTime;
+
+  _GroupMembership__isset __isset;
+
+  void __set_parentId(const std::string& val);
+
+  void __set_childId(const std::string& val);
+
+  void __set_domainId(const std::string& val);
+
+  void __set_childType(const GroupChildType::type val);
+
+  void __set_createdTime(const int64_t val);
+
+  void __set_updatedTime(const int64_t val);
+
+  bool operator == (const GroupMembership & rhs) const
+  {
+    if (__isset.parentId != rhs.__isset.parentId)
+      return false;
+    else if (__isset.parentId && !(parentId == rhs.parentId))
+      return false;
+    if (__isset.childId != rhs.__isset.childId)
+      return false;
+    else if (__isset.childId && !(childId == rhs.childId))
+      return false;
+    if (__isset.domainId != rhs.__isset.domainId)
+      return false;
+    else if (__isset.domainId && !(domainId == rhs.domainId))
+      return false;
+    if (__isset.childType != rhs.__isset.childType)
+      return false;
+    else if (__isset.childType && !(childType == rhs.childType))
+      return false;
+    if (__isset.createdTime != rhs.__isset.createdTime)
+      return false;
+    else if (__isset.createdTime && !(createdTime == rhs.createdTime))
+      return false;
+    if (__isset.updatedTime != rhs.__isset.updatedTime)
+      return false;
+    else if (__isset.updatedTime && !(updatedTime == rhs.updatedTime))
+      return false;
+    return true;
+  }
+  bool operator != (const GroupMembership &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const GroupMembership & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+};
+
+void swap(GroupMembership &a, GroupMembership &b);
+
+inline std::ostream& operator<<(std::ostream& out, const GroupMembership& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
+typedef struct _EntityType__isset {
+  _EntityType__isset() : entityTypeId(false), domainId(false), name(false), description(false), createdTime(false), updatedTime(false) {}
+  bool entityTypeId :1;
+  bool domainId :1;
+  bool name :1;
+  bool description :1;
+  bool createdTime :1;
+  bool updatedTime :1;
+} _EntityType__isset;
+
+class EntityType {
+ public:
+
+  EntityType(const EntityType&);
+  EntityType& operator=(const EntityType&);
+  EntityType() : entityTypeId(), domainId(), name(), description(), createdTime(0), updatedTime(0) {
+  }
+
+  virtual ~EntityType() throw();
+  std::string entityTypeId;
+  std::string domainId;
+  std::string name;
+  std::string description;
+  int64_t createdTime;
+  int64_t updatedTime;
+
+  _EntityType__isset __isset;
+
+  void __set_entityTypeId(const std::string& val);
+
+  void __set_domainId(const std::string& val);
+
+  void __set_name(const std::string& val);
+
+  void __set_description(const std::string& val);
+
+  void __set_createdTime(const int64_t val);
+
+  void __set_updatedTime(const int64_t val);
+
+  bool operator == (const EntityType & rhs) const
+  {
+    if (__isset.entityTypeId != rhs.__isset.entityTypeId)
+      return false;
+    else if (__isset.entityTypeId && !(entityTypeId == rhs.entityTypeId))
+      return false;
+    if (__isset.domainId != rhs.__isset.domainId)
+      return false;
+    else if (__isset.domainId && !(domainId == rhs.domainId))
+      return false;
+    if (__isset.name != rhs.__isset.name)
+      return false;
+    else if (__isset.name && !(name == rhs.name))
+      return false;
+    if (__isset.description != rhs.__isset.description)
+      return false;
+    else if (__isset.description && !(description == rhs.description))
+      return false;
+    if (__isset.createdTime != rhs.__isset.createdTime)
+      return false;
+    else if (__isset.createdTime && !(createdTime == rhs.createdTime))
+      return false;
+    if (__isset.updatedTime != rhs.__isset.updatedTime)
+      return false;
+    else if (__isset.updatedTime && !(updatedTime == rhs.updatedTime))
+      return false;
+    return true;
+  }
+  bool operator != (const EntityType &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const EntityType & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+};
+
+void swap(EntityType &a, EntityType &b);
+
+inline std::ostream& operator<<(std::ostream& out, const EntityType& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
+typedef struct _SearchCriteria__isset {
+  _SearchCriteria__isset() : searchField(false), value(false), searchCondition(false) {}
+  bool searchField :1;
+  bool value :1;
+  bool searchCondition :1;
+} _SearchCriteria__isset;
+
+class SearchCriteria {
+ public:
+
+  SearchCriteria(const SearchCriteria&);
+  SearchCriteria& operator=(const SearchCriteria&);
+  SearchCriteria() : searchField((EntitySearchField::type)0), value(), searchCondition((SearchCondition::type)0) {
+  }
+
+  virtual ~SearchCriteria() throw();
+  EntitySearchField::type searchField;
+  std::string value;
+  SearchCondition::type searchCondition;
+
+  _SearchCriteria__isset __isset;
+
+  void __set_searchField(const EntitySearchField::type val);
+
+  void __set_value(const std::string& val);
+
+  void __set_searchCondition(const SearchCondition::type val);
+
+  bool operator == (const SearchCriteria & rhs) const
+  {
+    if (__isset.searchField != rhs.__isset.searchField)
+      return false;
+    else if (__isset.searchField && !(searchField == rhs.searchField))
+      return false;
+    if (__isset.value != rhs.__isset.value)
+      return false;
+    else if (__isset.value && !(value == rhs.value))
+      return false;
+    if (__isset.searchCondition != rhs.__isset.searchCondition)
+      return false;
+    else if (__isset.searchCondition && !(searchCondition == rhs.searchCondition))
+      return false;
+    return true;
+  }
+  bool operator != (const SearchCriteria &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const SearchCriteria & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+};
+
+void swap(SearchCriteria &a, SearchCriteria &b);
+
+inline std::ostream& operator<<(std::ostream& out, const SearchCriteria& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
+typedef struct _Entity__isset {
+  _Entity__isset() : entityId(false), domainId(false), entityTypeId(false), ownerId(false), parentEntityId(false), name(false), description(false), binaryData(false), fullText(false), sharedCount(true), originalEntityCreationTime(false), createdTime(false), updatedTime(false) {}
+  bool entityId :1;
+  bool domainId :1;
+  bool entityTypeId :1;
+  bool ownerId :1;
+  bool parentEntityId :1;
+  bool name :1;
+  bool description :1;
+  bool binaryData :1;
+  bool fullText :1;
+  bool sharedCount :1;
+  bool originalEntityCreationTime :1;
+  bool createdTime :1;
+  bool updatedTime :1;
+} _Entity__isset;
+
+class Entity {
+ public:
+
+  Entity(const Entity&);
+  Entity& operator=(const Entity&);
+  Entity() : entityId(), domainId(), entityTypeId(), ownerId(), parentEntityId(), name(), description(), binaryData(), fullText(), sharedCount(0LL), originalEntityCreationTime(0), createdTime(0), updatedTime(0) {
+  }
+
+  virtual ~Entity() throw();
+  std::string entityId;
+  std::string domainId;
+  std::string entityTypeId;
+  std::string ownerId;
+  std::string parentEntityId;
+  std::string name;
+  std::string description;
+  std::string binaryData;
+  std::string fullText;
+  int64_t sharedCount;
+  int64_t originalEntityCreationTime;
+  int64_t createdTime;
+  int64_t updatedTime;
+
+  _Entity__isset __isset;
+
+  void __set_entityId(const std::string& val);
+
+  void __set_domainId(const std::string& val);
+
+  void __set_entityTypeId(const std::string& val);
+
+  void __set_ownerId(const std::string& val);
+
+  void __set_parentEntityId(const std::string& val);
+
+  void __set_name(const std::string& val);
+
+  void __set_description(const std::string& val);
+
+  void __set_binaryData(const std::string& val);
+
+  void __set_fullText(const std::string& val);
+
+  void __set_sharedCount(const int64_t val);
+
+  void __set_originalEntityCreationTime(const int64_t val);
+
+  void __set_createdTime(const int64_t val);
+
+  void __set_updatedTime(const int64_t val);
+
+  bool operator == (const Entity & rhs) const
+  {
+    if (__isset.entityId != rhs.__isset.entityId)
+      return false;
+    else if (__isset.entityId && !(entityId == rhs.entityId))
+      return false;
+    if (__isset.domainId != rhs.__isset.domainId)
+      return false;
+    else if (__isset.domainId && !(domainId == rhs.domainId))
+      return false;
+    if (__isset.entityTypeId != rhs.__isset.entityTypeId)
+      return false;
+    else if (__isset.entityTypeId && !(entityTypeId == rhs.entityTypeId))
+      return false;
+    if (__isset.ownerId != rhs.__isset.ownerId)
+      return false;
+    else if (__isset.ownerId && !(ownerId == rhs.ownerId))
+      return false;
+    if (__isset.parentEntityId != rhs.__isset.parentEntityId)
+      return false;
+    else if (__isset.parentEntityId && !(parentEntityId == rhs.parentEntityId))
+      return false;
+    if (__isset.name != rhs.__isset.name)
+      return false;
+    else if (__isset.name && !(name == rhs.name))
+      return false;
+    if (__isset.description != rhs.__isset.description)
+      return false;
+    else if (__isset.description && !(description == rhs.description))
+      return false;
+    if (__isset.binaryData != rhs.__isset.binaryData)
+      return false;
+    else if (__isset.binaryData && !(binaryData == rhs.binaryData))
+      return false;
+    if (__isset.fullText != rhs.__isset.fullText)
+      return false;
+    else if (__isset.fullText && !(fullText == rhs.fullText))
+      return false;
+    if (__isset.sharedCount != rhs.__isset.sharedCount)
+      return false;
+    else if (__isset.sharedCount && !(sharedCount == rhs.sharedCount))
+      return false;
+    if (__isset.originalEntityCreationTime != rhs.__isset.originalEntityCreationTime)
+      return false;
+    else if (__isset.originalEntityCreationTime && !(originalEntityCreationTime == rhs.originalEntityCreationTime))
+      return false;
+    if (__isset.createdTime != rhs.__isset.createdTime)
+      return false;
+    else if (__isset.createdTime && !(createdTime == rhs.createdTime))
+      return false;
+    if (__isset.updatedTime != rhs.__isset.updatedTime)
+      return false;
+    else if (__isset.updatedTime && !(updatedTime == rhs.updatedTime))
+      return false;
+    return true;
+  }
+  bool operator != (const Entity &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Entity & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+};
+
+void swap(Entity &a, Entity &b);
+
+inline std::ostream& operator<<(std::ostream& out, const Entity& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
+typedef struct _PermissionType__isset {
+  _PermissionType__isset() : permissionTypeId(false), domainId(false), name(false), description(false), createdTime(false), updatedTime(false) {}
+  bool permissionTypeId :1;
+  bool domainId :1;
+  bool name :1;
+  bool description :1;
+  bool createdTime :1;
+  bool updatedTime :1;
+} _PermissionType__isset;
+
+class PermissionType {
+ public:
+
+  PermissionType(const PermissionType&);
+  PermissionType& operator=(const PermissionType&);
+  PermissionType() : permissionTypeId(), domainId(), name(), description(), createdTime(0), updatedTime(0) {
+  }
+
+  virtual ~PermissionType() throw();
+  std::string permissionTypeId;
+  std::string domainId;
+  std::string name;
+  std::string description;
+  int64_t createdTime;
+  int64_t updatedTime;
+
+  _PermissionType__isset __isset;
+
+  void __set_permissionTypeId(const std::string& val);
+
+  void __set_domainId(const std::string& val);
+
+  void __set_name(const std::string& val);
+
+  void __set_description(const std::string& val);
+
+  void __set_createdTime(const int64_t val);
+
+  void __set_updatedTime(const int64_t val);
+
+  bool operator == (const PermissionType & rhs) const
+  {
+    if (__isset.permissionTypeId != rhs.__isset.permissionTypeId)
+      return false;
+    else if (__isset.permissionTypeId && !(permissionTypeId == rhs.permissionTypeId))
+      return false;
+    if (__isset.domainId != rhs.__isset.domainId)
+      return false;
+    else if (__isset.domainId && !(domainId == rhs.domainId))
+      return false;
+    if (__isset.name != rhs.__isset.name)
+      return false;
+    else if (__isset.name && !(name == rhs.name))
+      return false;
+    if (__isset.description != rhs.__isset.description)
+      return false;
+    else if (__isset.description && !(description == rhs.description))
+      return false;
+    if (__isset.createdTime != rhs.__isset.createdTime)
+      return false;
+    else if (__isset.createdTime && !(createdTime == rhs.createdTime))
+      return false;
+    if (__isset.updatedTime != rhs.__isset.updatedTime)
+      return false;
+    else if (__isset.updatedTime && !(updatedTime == rhs.updatedTime))
+      return false;
+    return true;
+  }
+  bool operator != (const PermissionType &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const PermissionType & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+};
+
+void swap(PermissionType &a, PermissionType &b);
+
+inline std::ostream& operator<<(std::ostream& out, const PermissionType& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
+typedef struct _Sharing__isset {
+  _Sharing__isset() : permissionTypeId(false), entityId(false), groupId(false), sharingType(false), domainId(false), inheritedParentId(false), createdTime(false), updatedTime(false) {}
+  bool permissionTypeId :1;
+  bool entityId :1;
+  bool groupId :1;
+  bool sharingType :1;
+  bool domainId :1;
+  bool inheritedParentId :1;
+  bool createdTime :1;
+  bool updatedTime :1;
+} _Sharing__isset;
+
+class Sharing {
+ public:
+
+  Sharing(const Sharing&);
+  Sharing& operator=(const Sharing&);
+  Sharing() : permissionTypeId(), entityId(), groupId(), sharingType((SharingType::type)0), domainId(), inheritedParentId(), createdTime(0), updatedTime(0) {
+  }
+
+  virtual ~Sharing() throw();
+  std::string permissionTypeId;
+  std::string entityId;
+  std::string groupId;
+  SharingType::type sharingType;
+  std::string domainId;
+  std::string inheritedParentId;
+  int64_t createdTime;
+  int64_t updatedTime;
+
+  _Sharing__isset __isset;
+
+  void __set_permissionTypeId(const std::string& val);
+
+  void __set_entityId(const std::string& val);
+
+  void __set_groupId(const std::string& val);
+
+  void __set_sharingType(const SharingType::type val);
+
+  void __set_domainId(const std::string& val);
+
+  void __set_inheritedParentId(const std::string& val);
+
+  void __set_createdTime(const int64_t val);
+
+  void __set_updatedTime(const int64_t val);
+
+  bool operator == (const Sharing & rhs) const
+  {
+    if (__isset.permissionTypeId != rhs.__isset.permissionTypeId)
+      return false;
+    else if (__isset.permissionTypeId && !(permissionTypeId == rhs.permissionTypeId))
+      return false;
+    if (__isset.entityId != rhs.__isset.entityId)
+      return false;
+    else if (__isset.entityId && !(entityId == rhs.entityId))
+      return false;
+    if (__isset.groupId != rhs.__isset.groupId)
+      return false;
+    else if (__isset.groupId && !(groupId == rhs.groupId))
+      return false;
+    if (__isset.sharingType != rhs.__isset.sharingType)
+      return false;
+    else if (__isset.sharingType && !(sharingType == rhs.sharingType))
+      return false;
+    if (__isset.domainId != rhs.__isset.domainId)
+      return false;
+    else if (__isset.domainId && !(domainId == rhs.domainId))
+      return false;
+    if (__isset.inheritedParentId != rhs.__isset.inheritedParentId)
+      return false;
+    else if (__isset.inheritedParentId && !(inheritedParentId == rhs.inheritedParentId))
+      return false;
+    if (__isset.createdTime != rhs.__isset.createdTime)
+      return false;
+    else if (__isset.createdTime && !(createdTime == rhs.createdTime))
+      return false;
+    if (__isset.updatedTime != rhs.__isset.updatedTime)
+      return false;
+    else if (__isset.updatedTime && !(updatedTime == rhs.updatedTime))
+      return false;
+    return true;
+  }
+  bool operator != (const Sharing &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Sharing & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+};
+
+void swap(Sharing &a, Sharing &b);
+
+inline std::ostream& operator<<(std::ostream& out, const Sharing& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
+
+class SharingRegistryException : public ::apache::thrift::TException {
+ public:
+
+  SharingRegistryException(const SharingRegistryException&);
+  SharingRegistryException& operator=(const SharingRegistryException&);
+  SharingRegistryException() : message() {
+  }
+
+  virtual ~SharingRegistryException() throw();
+  std::string message;
+
+  void __set_message(const std::string& val);
+
+  bool operator == (const SharingRegistryException & rhs) const
+  {
+    if (!(message == rhs.message))
+      return false;
+    return true;
+  }
+  bool operator != (const SharingRegistryException &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const SharingRegistryException & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+  mutable std::string thriftTExceptionMessageHolder_;
+  const char* what() const throw();
+};
+
+void swap(SharingRegistryException &a, SharingRegistryException &b);
+
+inline std::ostream& operator<<(std::ostream& out, const SharingRegistryException& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
+
+
+#endif


[2/6] airavata git commit: adding sharing php and python thrift generated code to language specific sdks

Posted by sc...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/6d6973d8/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/SharingRegistryService.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/SharingRegistryService.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/SharingRegistryService.py
new file mode 100644
index 0000000..e0dc634
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/sharing/SharingRegistryService.py
@@ -0,0 +1,12043 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import logging
+from ttypes import *
+from thrift.Thrift import TProcessor
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class Iface:
+  def createDomain(self, domain):
+    """
+    <p>API method to create a new domain</p>
+
+    Parameters:
+     - domain
+    """
+    pass
+
+  def updateDomain(self, domain):
+    """
+    <p>API method to update a domain</p>
+
+    Parameters:
+     - domain
+    """
+    pass
+
+  def isDomainExists(self, domainId):
+    """
+    <p>API method to check Domain Exists</p>
+
+    Parameters:
+     - domainId
+    """
+    pass
+
+  def deleteDomain(self, domainId):
+    """
+    <p>API method to delete domain</p>
+
+    Parameters:
+     - domainId
+    """
+    pass
+
+  def getDomain(self, domainId):
+    """
+    <p>API method to retrieve a domain</p>
+
+    Parameters:
+     - domainId
+    """
+    pass
+
+  def getDomains(self, offset, limit):
+    """
+    <p>API method to get all domain.</p>
+
+    Parameters:
+     - offset
+     - limit
+    """
+    pass
+
+  def createUser(self, user):
+    """
+    <p>API method to register a user in the system</p>
+
+    Parameters:
+     - user
+    """
+    pass
+
+  def updatedUser(self, user):
+    """
+    <p>API method to update existing user</p>
+
+    Parameters:
+     - user
+    """
+    pass
+
+  def isUserExists(self, domainId, userId):
+    """
+    <p>API method to check User Exists</p>
+
+    Parameters:
+     - domainId
+     - userId
+    """
+    pass
+
+  def deleteUser(self, domainId, userId):
+    """
+    <p>API method to delete user</p>
+
+    Parameters:
+     - domainId
+     - userId
+    """
+    pass
+
+  def getUser(self, domainId, userId):
+    """
+    <p>API method to get a user</p>
+
+    Parameters:
+     - domainId
+     - userId
+    """
+    pass
+
+  def getUsers(self, domainId, offset, limit):
+    """
+    <p>API method to get a list of users in a specific domain.</p>
+    <li>domainId : Domain id</li>
+    <li>offset : Starting result number</li>
+    <li>limit : Number of max results to be sent</li>
+
+    Parameters:
+     - domainId
+     - offset
+     - limit
+    """
+    pass
+
+  def createGroup(self, group):
+    """
+    <p>API method to create a new group</p>
+
+    Parameters:
+     - group
+    """
+    pass
+
+  def updateGroup(self, group):
+    """
+    <p>API method to update a group</p>
+
+    Parameters:
+     - group
+    """
+    pass
+
+  def isGroupExists(self, domainId, groupId):
+    """
+    <p>API method to check Group Exists</p>
+
+    Parameters:
+     - domainId
+     - groupId
+    """
+    pass
+
+  def deleteGroup(self, domainId, groupId):
+    """
+    <p>API method to delete a group</p>
+
+    Parameters:
+     - domainId
+     - groupId
+    """
+    pass
+
+  def getGroup(self, domainId, groupId):
+    """
+    <p>API method to get a group</p>
+
+    Parameters:
+     - domainId
+     - groupId
+    """
+    pass
+
+  def getGroups(self, domainId, offset, limit):
+    """
+    <p>API method to get groups in a domainId.</p>
+
+    Parameters:
+     - domainId
+     - offset
+     - limit
+    """
+    pass
+
+  def addUsersToGroup(self, domainId, userIds, groupId):
+    """
+    <p>API method to add list of users to a group</p>
+
+    Parameters:
+     - domainId
+     - userIds
+     - groupId
+    """
+    pass
+
+  def removeUsersFromGroup(self, domainId, userIds, groupId):
+    """
+    <p>API method to remove users from a group</p>
+
+    Parameters:
+     - domainId
+     - userIds
+     - groupId
+    """
+    pass
+
+  def getGroupMembersOfTypeUser(self, domainId, groupId, offset, limit):
+    """
+    <p>API method to get list of child users in a group. Only the direct members will be returned.</p>
+
+    Parameters:
+     - domainId
+     - groupId
+     - offset
+     - limit
+    """
+    pass
+
+  def getGroupMembersOfTypeGroup(self, domainId, groupId, offset, limit):
+    """
+    <p>API method to get list of child groups in a group. Only the direct members will be returned.</p>
+
+    Parameters:
+     - domainId
+     - groupId
+     - offset
+     - limit
+    """
+    pass
+
+  def addChildGroupsToParentGroup(self, domainId, childIds, groupId):
+    """
+    <p>API method to add a child group to a parent group.</p>
+
+    Parameters:
+     - domainId
+     - childIds
+     - groupId
+    """
+    pass
+
+  def removeChildGroupFromParentGroup(self, domainId, childId, groupId):
+    """
+    <p>API method to remove a child group from parent group.</p>
+
+    Parameters:
+     - domainId
+     - childId
+     - groupId
+    """
+    pass
+
+  def getAllMemberGroupsForUser(self, domainId, userId):
+    """
+    Parameters:
+     - domainId
+     - userId
+    """
+    pass
+
+  def createEntityType(self, entityType):
+    """
+    <p>API method to create a new entity type</p>
+
+    Parameters:
+     - entityType
+    """
+    pass
+
+  def updateEntityType(self, entityType):
+    """
+    <p>API method to update entity type</p>
+
+    Parameters:
+     - entityType
+    """
+    pass
+
+  def isEntityTypeExists(self, domainId, entityTypeId):
+    """
+    <p>API method to check EntityType Exists</p>
+
+    Parameters:
+     - domainId
+     - entityTypeId
+    """
+    pass
+
+  def deleteEntityType(self, domainId, entityTypeId):
+    """
+    <p>API method to delete entity type</p>
+
+    Parameters:
+     - domainId
+     - entityTypeId
+    """
+    pass
+
+  def getEntityType(self, domainId, entityTypeId):
+    """
+    <p>API method to get an entity type</p>
+
+    Parameters:
+     - domainId
+     - entityTypeId
+    """
+    pass
+
+  def getEntityTypes(self, domainId, offset, limit):
+    """
+    <p>API method to get entity types in a domainId.</p>
+
+    Parameters:
+     - domainId
+     - offset
+     - limit
+    """
+    pass
+
+  def createEntity(self, entity):
+    """
+    <p>API method to register new entity</p>
+
+    Parameters:
+     - entity
+    """
+    pass
+
+  def updateEntity(self, entity):
+    """
+    <p>API method to update entity</p>
+
+    Parameters:
+     - entity
+    """
+    pass
+
+  def isEntityExists(self, domainId, entityId):
+    """
+    <p>API method to check Entity Exists</p>
+
+    Parameters:
+     - domainId
+     - entityId
+    """
+    pass
+
+  def deleteEntity(self, domainId, entityId):
+    """
+    <p>API method to delete entity</p>
+
+    Parameters:
+     - domainId
+     - entityId
+    """
+    pass
+
+  def getEntity(self, domainId, entityId):
+    """
+    <p>API method to get entity</p>
+
+    Parameters:
+     - domainId
+     - entityId
+    """
+    pass
+
+  def searchEntities(self, domainId, userId, filters, offset, limit):
+    """
+    <p>API method to search entities</p>
+
+    Parameters:
+     - domainId
+     - userId
+     - filters
+     - offset
+     - limit
+    """
+    pass
+
+  def getListOfSharedUsers(self, domainId, entityId, permissionTypeId):
+    """
+    <p>API method to get a list of shared users given the entity id</p>
+
+    Parameters:
+     - domainId
+     - entityId
+     - permissionTypeId
+    """
+    pass
+
+  def getListOfSharedGroups(self, domainId, entityId, permissionTypeId):
+    """
+    <p>API method to get a list of shared groups given the entity id</p>
+
+    Parameters:
+     - domainId
+     - entityId
+     - permissionTypeId
+    """
+    pass
+
+  def createPermissionType(self, permissionType):
+    """
+    <p>API method to create permission type</p>
+
+    Parameters:
+     - permissionType
+    """
+    pass
+
+  def updatePermissionType(self, permissionType):
+    """
+    <p>API method to update permission type</p>
+
+    Parameters:
+     - permissionType
+    """
+    pass
+
+  def isPermissionExists(self, dimainId, permissionId):
+    """
+    <p>API method to check Permission Exists</p>
+
+    Parameters:
+     - dimainId
+     - permissionId
+    """
+    pass
+
+  def deletePermissionType(self, domainId, permissionTypeId):
+    """
+    <p>API method to delete permission type</p>
+
+    Parameters:
+     - domainId
+     - permissionTypeId
+    """
+    pass
+
+  def getPermissionType(self, domainId, permissionTypeId):
+    """
+    <p>API method to get permission type</p>
+
+    Parameters:
+     - domainId
+     - permissionTypeId
+    """
+    pass
+
+  def getPermissionTypes(self, domainId, offset, limit):
+    """
+    <p>API method to get list of permission types in a given domainId.</p>
+
+    Parameters:
+     - domainId
+     - offset
+     - limit
+    """
+    pass
+
+  def shareEntityWithUsers(self, domainId, entityId, userList, perssionTypeId, cascadePermission):
+    """
+    <p>API method to share an entity with users</p>
+
+    Parameters:
+     - domainId
+     - entityId
+     - userList
+     - perssionTypeId
+     - cascadePermission
+    """
+    pass
+
+  def revokeEntitySharingFromUsers(self, domainId, entityId, userList, perssionTypeId):
+    """
+    <p>API method to revoke sharing from a list of users</p>
+
+    Parameters:
+     - domainId
+     - entityId
+     - userList
+     - perssionTypeId
+    """
+    pass
+
+  def shareEntityWithGroups(self, domainId, entityId, groupList, perssionTypeId, cascadePermission):
+    """
+    <p>API method to share an entity with list of groups</p>
+
+    Parameters:
+     - domainId
+     - entityId
+     - groupList
+     - perssionTypeId
+     - cascadePermission
+    """
+    pass
+
+  def revokeEntitySharingFromGroups(self, domainId, entityId, groupList, perssionTypeId):
+    """
+    <p>API method to revoke sharing from list of users</p>
+
+    Parameters:
+     - domainId
+     - entityId
+     - groupList
+     - perssionTypeId
+    """
+    pass
+
+  def userHasAccess(self, domainId, userId, entityId, permissionTypeId):
+    """
+    <p>API method to check whether a user has access to a specific entity</p>
+
+    Parameters:
+     - domainId
+     - userId
+     - entityId
+     - permissionTypeId
+    """
+    pass
+
+
+class Client(Iface):
+  def __init__(self, iprot, oprot=None):
+    self._iprot = self._oprot = iprot
+    if oprot is not None:
+      self._oprot = oprot
+    self._seqid = 0
+
+  def createDomain(self, domain):
+    """
+    <p>API method to create a new domain</p>
+
+    Parameters:
+     - domain
+    """
+    self.send_createDomain(domain)
+    return self.recv_createDomain()
+
+  def send_createDomain(self, domain):
+    self._oprot.writeMessageBegin('createDomain', TMessageType.CALL, self._seqid)
+    args = createDomain_args()
+    args.domain = domain
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_createDomain(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = createDomain_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    if result.dee is not None:
+      raise result.dee
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "createDomain failed: unknown result")
+
+  def updateDomain(self, domain):
+    """
+    <p>API method to update a domain</p>
+
+    Parameters:
+     - domain
+    """
+    self.send_updateDomain(domain)
+    return self.recv_updateDomain()
+
+  def send_updateDomain(self, domain):
+    self._oprot.writeMessageBegin('updateDomain', TMessageType.CALL, self._seqid)
+    args = updateDomain_args()
+    args.domain = domain
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_updateDomain(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = updateDomain_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "updateDomain failed: unknown result")
+
+  def isDomainExists(self, domainId):
+    """
+    <p>API method to check Domain Exists</p>
+
+    Parameters:
+     - domainId
+    """
+    self.send_isDomainExists(domainId)
+    return self.recv_isDomainExists()
+
+  def send_isDomainExists(self, domainId):
+    self._oprot.writeMessageBegin('isDomainExists', TMessageType.CALL, self._seqid)
+    args = isDomainExists_args()
+    args.domainId = domainId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_isDomainExists(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = isDomainExists_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "isDomainExists failed: unknown result")
+
+  def deleteDomain(self, domainId):
+    """
+    <p>API method to delete domain</p>
+
+    Parameters:
+     - domainId
+    """
+    self.send_deleteDomain(domainId)
+    return self.recv_deleteDomain()
+
+  def send_deleteDomain(self, domainId):
+    self._oprot.writeMessageBegin('deleteDomain', TMessageType.CALL, self._seqid)
+    args = deleteDomain_args()
+    args.domainId = domainId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_deleteDomain(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = deleteDomain_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteDomain failed: unknown result")
+
+  def getDomain(self, domainId):
+    """
+    <p>API method to retrieve a domain</p>
+
+    Parameters:
+     - domainId
+    """
+    self.send_getDomain(domainId)
+    return self.recv_getDomain()
+
+  def send_getDomain(self, domainId):
+    self._oprot.writeMessageBegin('getDomain', TMessageType.CALL, self._seqid)
+    args = getDomain_args()
+    args.domainId = domainId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getDomain(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getDomain_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getDomain failed: unknown result")
+
+  def getDomains(self, offset, limit):
+    """
+    <p>API method to get all domain.</p>
+
+    Parameters:
+     - offset
+     - limit
+    """
+    self.send_getDomains(offset, limit)
+    return self.recv_getDomains()
+
+  def send_getDomains(self, offset, limit):
+    self._oprot.writeMessageBegin('getDomains', TMessageType.CALL, self._seqid)
+    args = getDomains_args()
+    args.offset = offset
+    args.limit = limit
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getDomains(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getDomains_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getDomains failed: unknown result")
+
+  def createUser(self, user):
+    """
+    <p>API method to register a user in the system</p>
+
+    Parameters:
+     - user
+    """
+    self.send_createUser(user)
+    return self.recv_createUser()
+
+  def send_createUser(self, user):
+    self._oprot.writeMessageBegin('createUser', TMessageType.CALL, self._seqid)
+    args = createUser_args()
+    args.user = user
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_createUser(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = createUser_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    if result.dee is not None:
+      raise result.dee
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "createUser failed: unknown result")
+
+  def updatedUser(self, user):
+    """
+    <p>API method to update existing user</p>
+
+    Parameters:
+     - user
+    """
+    self.send_updatedUser(user)
+    return self.recv_updatedUser()
+
+  def send_updatedUser(self, user):
+    self._oprot.writeMessageBegin('updatedUser', TMessageType.CALL, self._seqid)
+    args = updatedUser_args()
+    args.user = user
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_updatedUser(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = updatedUser_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "updatedUser failed: unknown result")
+
+  def isUserExists(self, domainId, userId):
+    """
+    <p>API method to check User Exists</p>
+
+    Parameters:
+     - domainId
+     - userId
+    """
+    self.send_isUserExists(domainId, userId)
+    return self.recv_isUserExists()
+
+  def send_isUserExists(self, domainId, userId):
+    self._oprot.writeMessageBegin('isUserExists', TMessageType.CALL, self._seqid)
+    args = isUserExists_args()
+    args.domainId = domainId
+    args.userId = userId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_isUserExists(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = isUserExists_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "isUserExists failed: unknown result")
+
+  def deleteUser(self, domainId, userId):
+    """
+    <p>API method to delete user</p>
+
+    Parameters:
+     - domainId
+     - userId
+    """
+    self.send_deleteUser(domainId, userId)
+    return self.recv_deleteUser()
+
+  def send_deleteUser(self, domainId, userId):
+    self._oprot.writeMessageBegin('deleteUser', TMessageType.CALL, self._seqid)
+    args = deleteUser_args()
+    args.domainId = domainId
+    args.userId = userId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_deleteUser(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = deleteUser_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteUser failed: unknown result")
+
+  def getUser(self, domainId, userId):
+    """
+    <p>API method to get a user</p>
+
+    Parameters:
+     - domainId
+     - userId
+    """
+    self.send_getUser(domainId, userId)
+    return self.recv_getUser()
+
+  def send_getUser(self, domainId, userId):
+    self._oprot.writeMessageBegin('getUser', TMessageType.CALL, self._seqid)
+    args = getUser_args()
+    args.domainId = domainId
+    args.userId = userId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getUser(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getUser_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getUser failed: unknown result")
+
+  def getUsers(self, domainId, offset, limit):
+    """
+    <p>API method to get a list of users in a specific domain.</p>
+    <li>domainId : Domain id</li>
+    <li>offset : Starting result number</li>
+    <li>limit : Number of max results to be sent</li>
+
+    Parameters:
+     - domainId
+     - offset
+     - limit
+    """
+    self.send_getUsers(domainId, offset, limit)
+    return self.recv_getUsers()
+
+  def send_getUsers(self, domainId, offset, limit):
+    self._oprot.writeMessageBegin('getUsers', TMessageType.CALL, self._seqid)
+    args = getUsers_args()
+    args.domainId = domainId
+    args.offset = offset
+    args.limit = limit
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getUsers(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getUsers_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getUsers failed: unknown result")
+
+  def createGroup(self, group):
+    """
+    <p>API method to create a new group</p>
+
+    Parameters:
+     - group
+    """
+    self.send_createGroup(group)
+    return self.recv_createGroup()
+
+  def send_createGroup(self, group):
+    self._oprot.writeMessageBegin('createGroup', TMessageType.CALL, self._seqid)
+    args = createGroup_args()
+    args.group = group
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_createGroup(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = createGroup_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "createGroup failed: unknown result")
+
+  def updateGroup(self, group):
+    """
+    <p>API method to update a group</p>
+
+    Parameters:
+     - group
+    """
+    self.send_updateGroup(group)
+    return self.recv_updateGroup()
+
+  def send_updateGroup(self, group):
+    self._oprot.writeMessageBegin('updateGroup', TMessageType.CALL, self._seqid)
+    args = updateGroup_args()
+    args.group = group
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_updateGroup(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = updateGroup_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "updateGroup failed: unknown result")
+
+  def isGroupExists(self, domainId, groupId):
+    """
+    <p>API method to check Group Exists</p>
+
+    Parameters:
+     - domainId
+     - groupId
+    """
+    self.send_isGroupExists(domainId, groupId)
+    return self.recv_isGroupExists()
+
+  def send_isGroupExists(self, domainId, groupId):
+    self._oprot.writeMessageBegin('isGroupExists', TMessageType.CALL, self._seqid)
+    args = isGroupExists_args()
+    args.domainId = domainId
+    args.groupId = groupId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_isGroupExists(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = isGroupExists_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "isGroupExists failed: unknown result")
+
+  def deleteGroup(self, domainId, groupId):
+    """
+    <p>API method to delete a group</p>
+
+    Parameters:
+     - domainId
+     - groupId
+    """
+    self.send_deleteGroup(domainId, groupId)
+    return self.recv_deleteGroup()
+
+  def send_deleteGroup(self, domainId, groupId):
+    self._oprot.writeMessageBegin('deleteGroup', TMessageType.CALL, self._seqid)
+    args = deleteGroup_args()
+    args.domainId = domainId
+    args.groupId = groupId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_deleteGroup(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = deleteGroup_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteGroup failed: unknown result")
+
+  def getGroup(self, domainId, groupId):
+    """
+    <p>API method to get a group</p>
+
+    Parameters:
+     - domainId
+     - groupId
+    """
+    self.send_getGroup(domainId, groupId)
+    return self.recv_getGroup()
+
+  def send_getGroup(self, domainId, groupId):
+    self._oprot.writeMessageBegin('getGroup', TMessageType.CALL, self._seqid)
+    args = getGroup_args()
+    args.domainId = domainId
+    args.groupId = groupId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getGroup(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getGroup_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getGroup failed: unknown result")
+
+  def getGroups(self, domainId, offset, limit):
+    """
+    <p>API method to get groups in a domainId.</p>
+
+    Parameters:
+     - domainId
+     - offset
+     - limit
+    """
+    self.send_getGroups(domainId, offset, limit)
+    return self.recv_getGroups()
+
+  def send_getGroups(self, domainId, offset, limit):
+    self._oprot.writeMessageBegin('getGroups', TMessageType.CALL, self._seqid)
+    args = getGroups_args()
+    args.domainId = domainId
+    args.offset = offset
+    args.limit = limit
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getGroups(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getGroups_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getGroups failed: unknown result")
+
+  def addUsersToGroup(self, domainId, userIds, groupId):
+    """
+    <p>API method to add list of users to a group</p>
+
+    Parameters:
+     - domainId
+     - userIds
+     - groupId
+    """
+    self.send_addUsersToGroup(domainId, userIds, groupId)
+    return self.recv_addUsersToGroup()
+
+  def send_addUsersToGroup(self, domainId, userIds, groupId):
+    self._oprot.writeMessageBegin('addUsersToGroup', TMessageType.CALL, self._seqid)
+    args = addUsersToGroup_args()
+    args.domainId = domainId
+    args.userIds = userIds
+    args.groupId = groupId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_addUsersToGroup(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = addUsersToGroup_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "addUsersToGroup failed: unknown result")
+
+  def removeUsersFromGroup(self, domainId, userIds, groupId):
+    """
+    <p>API method to remove users from a group</p>
+
+    Parameters:
+     - domainId
+     - userIds
+     - groupId
+    """
+    self.send_removeUsersFromGroup(domainId, userIds, groupId)
+    return self.recv_removeUsersFromGroup()
+
+  def send_removeUsersFromGroup(self, domainId, userIds, groupId):
+    self._oprot.writeMessageBegin('removeUsersFromGroup', TMessageType.CALL, self._seqid)
+    args = removeUsersFromGroup_args()
+    args.domainId = domainId
+    args.userIds = userIds
+    args.groupId = groupId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_removeUsersFromGroup(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = removeUsersFromGroup_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "removeUsersFromGroup failed: unknown result")
+
+  def getGroupMembersOfTypeUser(self, domainId, groupId, offset, limit):
+    """
+    <p>API method to get list of child users in a group. Only the direct members will be returned.</p>
+
+    Parameters:
+     - domainId
+     - groupId
+     - offset
+     - limit
+    """
+    self.send_getGroupMembersOfTypeUser(domainId, groupId, offset, limit)
+    return self.recv_getGroupMembersOfTypeUser()
+
+  def send_getGroupMembersOfTypeUser(self, domainId, groupId, offset, limit):
+    self._oprot.writeMessageBegin('getGroupMembersOfTypeUser', TMessageType.CALL, self._seqid)
+    args = getGroupMembersOfTypeUser_args()
+    args.domainId = domainId
+    args.groupId = groupId
+    args.offset = offset
+    args.limit = limit
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getGroupMembersOfTypeUser(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getGroupMembersOfTypeUser_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getGroupMembersOfTypeUser failed: unknown result")
+
+  def getGroupMembersOfTypeGroup(self, domainId, groupId, offset, limit):
+    """
+    <p>API method to get list of child groups in a group. Only the direct members will be returned.</p>
+
+    Parameters:
+     - domainId
+     - groupId
+     - offset
+     - limit
+    """
+    self.send_getGroupMembersOfTypeGroup(domainId, groupId, offset, limit)
+    return self.recv_getGroupMembersOfTypeGroup()
+
+  def send_getGroupMembersOfTypeGroup(self, domainId, groupId, offset, limit):
+    self._oprot.writeMessageBegin('getGroupMembersOfTypeGroup', TMessageType.CALL, self._seqid)
+    args = getGroupMembersOfTypeGroup_args()
+    args.domainId = domainId
+    args.groupId = groupId
+    args.offset = offset
+    args.limit = limit
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getGroupMembersOfTypeGroup(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getGroupMembersOfTypeGroup_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getGroupMembersOfTypeGroup failed: unknown result")
+
+  def addChildGroupsToParentGroup(self, domainId, childIds, groupId):
+    """
+    <p>API method to add a child group to a parent group.</p>
+
+    Parameters:
+     - domainId
+     - childIds
+     - groupId
+    """
+    self.send_addChildGroupsToParentGroup(domainId, childIds, groupId)
+    return self.recv_addChildGroupsToParentGroup()
+
+  def send_addChildGroupsToParentGroup(self, domainId, childIds, groupId):
+    self._oprot.writeMessageBegin('addChildGroupsToParentGroup', TMessageType.CALL, self._seqid)
+    args = addChildGroupsToParentGroup_args()
+    args.domainId = domainId
+    args.childIds = childIds
+    args.groupId = groupId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_addChildGroupsToParentGroup(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = addChildGroupsToParentGroup_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "addChildGroupsToParentGroup failed: unknown result")
+
+  def removeChildGroupFromParentGroup(self, domainId, childId, groupId):
+    """
+    <p>API method to remove a child group from parent group.</p>
+
+    Parameters:
+     - domainId
+     - childId
+     - groupId
+    """
+    self.send_removeChildGroupFromParentGroup(domainId, childId, groupId)
+    return self.recv_removeChildGroupFromParentGroup()
+
+  def send_removeChildGroupFromParentGroup(self, domainId, childId, groupId):
+    self._oprot.writeMessageBegin('removeChildGroupFromParentGroup', TMessageType.CALL, self._seqid)
+    args = removeChildGroupFromParentGroup_args()
+    args.domainId = domainId
+    args.childId = childId
+    args.groupId = groupId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_removeChildGroupFromParentGroup(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = removeChildGroupFromParentGroup_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "removeChildGroupFromParentGroup failed: unknown result")
+
+  def getAllMemberGroupsForUser(self, domainId, userId):
+    """
+    Parameters:
+     - domainId
+     - userId
+    """
+    self.send_getAllMemberGroupsForUser(domainId, userId)
+    return self.recv_getAllMemberGroupsForUser()
+
+  def send_getAllMemberGroupsForUser(self, domainId, userId):
+    self._oprot.writeMessageBegin('getAllMemberGroupsForUser', TMessageType.CALL, self._seqid)
+    args = getAllMemberGroupsForUser_args()
+    args.domainId = domainId
+    args.userId = userId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getAllMemberGroupsForUser(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getAllMemberGroupsForUser_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllMemberGroupsForUser failed: unknown result")
+
+  def createEntityType(self, entityType):
+    """
+    <p>API method to create a new entity type</p>
+
+    Parameters:
+     - entityType
+    """
+    self.send_createEntityType(entityType)
+    return self.recv_createEntityType()
+
+  def send_createEntityType(self, entityType):
+    self._oprot.writeMessageBegin('createEntityType', TMessageType.CALL, self._seqid)
+    args = createEntityType_args()
+    args.entityType = entityType
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_createEntityType(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = createEntityType_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    if result.dee is not None:
+      raise result.dee
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "createEntityType failed: unknown result")
+
+  def updateEntityType(self, entityType):
+    """
+    <p>API method to update entity type</p>
+
+    Parameters:
+     - entityType
+    """
+    self.send_updateEntityType(entityType)
+    return self.recv_updateEntityType()
+
+  def send_updateEntityType(self, entityType):
+    self._oprot.writeMessageBegin('updateEntityType', TMessageType.CALL, self._seqid)
+    args = updateEntityType_args()
+    args.entityType = entityType
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_updateEntityType(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = updateEntityType_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "updateEntityType failed: unknown result")
+
+  def isEntityTypeExists(self, domainId, entityTypeId):
+    """
+    <p>API method to check EntityType Exists</p>
+
+    Parameters:
+     - domainId
+     - entityTypeId
+    """
+    self.send_isEntityTypeExists(domainId, entityTypeId)
+    return self.recv_isEntityTypeExists()
+
+  def send_isEntityTypeExists(self, domainId, entityTypeId):
+    self._oprot.writeMessageBegin('isEntityTypeExists', TMessageType.CALL, self._seqid)
+    args = isEntityTypeExists_args()
+    args.domainId = domainId
+    args.entityTypeId = entityTypeId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_isEntityTypeExists(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = isEntityTypeExists_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "isEntityTypeExists failed: unknown result")
+
+  def deleteEntityType(self, domainId, entityTypeId):
+    """
+    <p>API method to delete entity type</p>
+
+    Parameters:
+     - domainId
+     - entityTypeId
+    """
+    self.send_deleteEntityType(domainId, entityTypeId)
+    return self.recv_deleteEntityType()
+
+  def send_deleteEntityType(self, domainId, entityTypeId):
+    self._oprot.writeMessageBegin('deleteEntityType', TMessageType.CALL, self._seqid)
+    args = deleteEntityType_args()
+    args.domainId = domainId
+    args.entityTypeId = entityTypeId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_deleteEntityType(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = deleteEntityType_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteEntityType failed: unknown result")
+
+  def getEntityType(self, domainId, entityTypeId):
+    """
+    <p>API method to get an entity type</p>
+
+    Parameters:
+     - domainId
+     - entityTypeId
+    """
+    self.send_getEntityType(domainId, entityTypeId)
+    return self.recv_getEntityType()
+
+  def send_getEntityType(self, domainId, entityTypeId):
+    self._oprot.writeMessageBegin('getEntityType', TMessageType.CALL, self._seqid)
+    args = getEntityType_args()
+    args.domainId = domainId
+    args.entityTypeId = entityTypeId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getEntityType(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getEntityType_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getEntityType failed: unknown result")
+
+  def getEntityTypes(self, domainId, offset, limit):
+    """
+    <p>API method to get entity types in a domainId.</p>
+
+    Parameters:
+     - domainId
+     - offset
+     - limit
+    """
+    self.send_getEntityTypes(domainId, offset, limit)
+    return self.recv_getEntityTypes()
+
+  def send_getEntityTypes(self, domainId, offset, limit):
+    self._oprot.writeMessageBegin('getEntityTypes', TMessageType.CALL, self._seqid)
+    args = getEntityTypes_args()
+    args.domainId = domainId
+    args.offset = offset
+    args.limit = limit
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getEntityTypes(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getEntityTypes_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getEntityTypes failed: unknown result")
+
+  def createEntity(self, entity):
+    """
+    <p>API method to register new entity</p>
+
+    Parameters:
+     - entity
+    """
+    self.send_createEntity(entity)
+    return self.recv_createEntity()
+
+  def send_createEntity(self, entity):
+    self._oprot.writeMessageBegin('createEntity', TMessageType.CALL, self._seqid)
+    args = createEntity_args()
+    args.entity = entity
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_createEntity(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = createEntity_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "createEntity failed: unknown result")
+
+  def updateEntity(self, entity):
+    """
+    <p>API method to update entity</p>
+
+    Parameters:
+     - entity
+    """
+    self.send_updateEntity(entity)
+    return self.recv_updateEntity()
+
+  def send_updateEntity(self, entity):
+    self._oprot.writeMessageBegin('updateEntity', TMessageType.CALL, self._seqid)
+    args = updateEntity_args()
+    args.entity = entity
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_updateEntity(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = updateEntity_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "updateEntity failed: unknown result")
+
+  def isEntityExists(self, domainId, entityId):
+    """
+    <p>API method to check Entity Exists</p>
+
+    Parameters:
+     - domainId
+     - entityId
+    """
+    self.send_isEntityExists(domainId, entityId)
+    return self.recv_isEntityExists()
+
+  def send_isEntityExists(self, domainId, entityId):
+    self._oprot.writeMessageBegin('isEntityExists', TMessageType.CALL, self._seqid)
+    args = isEntityExists_args()
+    args.domainId = domainId
+    args.entityId = entityId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_isEntityExists(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = isEntityExists_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "isEntityExists failed: unknown result")
+
+  def deleteEntity(self, domainId, entityId):
+    """
+    <p>API method to delete entity</p>
+
+    Parameters:
+     - domainId
+     - entityId
+    """
+    self.send_deleteEntity(domainId, entityId)
+    return self.recv_deleteEntity()
+
+  def send_deleteEntity(self, domainId, entityId):
+    self._oprot.writeMessageBegin('deleteEntity', TMessageType.CALL, self._seqid)
+    args = deleteEntity_args()
+    args.domainId = domainId
+    args.entityId = entityId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_deleteEntity(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = deleteEntity_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteEntity failed: unknown result")
+
+  def getEntity(self, domainId, entityId):
+    """
+    <p>API method to get entity</p>
+
+    Parameters:
+     - domainId
+     - entityId
+    """
+    self.send_getEntity(domainId, entityId)
+    return self.recv_getEntity()
+
+  def send_getEntity(self, domainId, entityId):
+    self._oprot.writeMessageBegin('getEntity', TMessageType.CALL, self._seqid)
+    args = getEntity_args()
+    args.domainId = domainId
+    args.entityId = entityId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getEntity(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getEntity_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getEntity failed: unknown result")
+
+  def searchEntities(self, domainId, userId, filters, offset, limit):
+    """
+    <p>API method to search entities</p>
+
+    Parameters:
+     - domainId
+     - userId
+     - filters
+     - offset
+     - limit
+    """
+    self.send_searchEntities(domainId, userId, filters, offset, limit)
+    return self.recv_searchEntities()
+
+  def send_searchEntities(self, domainId, userId, filters, offset, limit):
+    self._oprot.writeMessageBegin('searchEntities', TMessageType.CALL, self._seqid)
+    args = searchEntities_args()
+    args.domainId = domainId
+    args.userId = userId
+    args.filters = filters
+    args.offset = offset
+    args.limit = limit
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_searchEntities(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = searchEntities_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchEntities failed: unknown result")
+
+  def getListOfSharedUsers(self, domainId, entityId, permissionTypeId):
+    """
+    <p>API method to get a list of shared users given the entity id</p>
+
+    Parameters:
+     - domainId
+     - entityId
+     - permissionTypeId
+    """
+    self.send_getListOfSharedUsers(domainId, entityId, permissionTypeId)
+    return self.recv_getListOfSharedUsers()
+
+  def send_getListOfSharedUsers(self, domainId, entityId, permissionTypeId):
+    self._oprot.writeMessageBegin('getListOfSharedUsers', TMessageType.CALL, self._seqid)
+    args = getListOfSharedUsers_args()
+    args.domainId = domainId
+    args.entityId = entityId
+    args.permissionTypeId = permissionTypeId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getListOfSharedUsers(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getListOfSharedUsers_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getListOfSharedUsers failed: unknown result")
+
+  def getListOfSharedGroups(self, domainId, entityId, permissionTypeId):
+    """
+    <p>API method to get a list of shared groups given the entity id</p>
+
+    Parameters:
+     - domainId
+     - entityId
+     - permissionTypeId
+    """
+    self.send_getListOfSharedGroups(domainId, entityId, permissionTypeId)
+    return self.recv_getListOfSharedGroups()
+
+  def send_getListOfSharedGroups(self, domainId, entityId, permissionTypeId):
+    self._oprot.writeMessageBegin('getListOfSharedGroups', TMessageType.CALL, self._seqid)
+    args = getListOfSharedGroups_args()
+    args.domainId = domainId
+    args.entityId = entityId
+    args.permissionTypeId = permissionTypeId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getListOfSharedGroups(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getListOfSharedGroups_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getListOfSharedGroups failed: unknown result")
+
+  def createPermissionType(self, permissionType):
+    """
+    <p>API method to create permission type</p>
+
+    Parameters:
+     - permissionType
+    """
+    self.send_createPermissionType(permissionType)
+    return self.recv_createPermissionType()
+
+  def send_createPermissionType(self, permissionType):
+    self._oprot.writeMessageBegin('createPermissionType', TMessageType.CALL, self._seqid)
+    args = createPermissionType_args()
+    args.permissionType = permissionType
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_createPermissionType(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = createPermissionType_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    if result.dee is not None:
+      raise result.dee
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "createPermissionType failed: unknown result")
+
+  def updatePermissionType(self, permissionType):
+    """
+    <p>API method to update permission type</p>
+
+    Parameters:
+     - permissionType
+    """
+    self.send_updatePermissionType(permissionType)
+    return self.recv_updatePermissionType()
+
+  def send_updatePermissionType(self, permissionType):
+    self._oprot.writeMessageBegin('updatePermissionType', TMessageType.CALL, self._seqid)
+    args = updatePermissionType_args()
+    args.permissionType = permissionType
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_updatePermissionType(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = updatePermissionType_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "updatePermissionType failed: unknown result")
+
+  def isPermissionExists(self, dimainId, permissionId):
+    """
+    <p>API method to check Permission Exists</p>
+
+    Parameters:
+     - dimainId
+     - permissionId
+    """
+    self.send_isPermissionExists(dimainId, permissionId)
+    return self.recv_isPermissionExists()
+
+  def send_isPermissionExists(self, dimainId, permissionId):
+    self._oprot.writeMessageBegin('isPermissionExists', TMessageType.CALL, self._seqid)
+    args = isPermissionExists_args()
+    args.dimainId = dimainId
+    args.permissionId = permissionId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_isPermissionExists(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = isPermissionExists_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "isPermissionExists failed: unknown result")
+
+  def deletePermissionType(self, domainId, permissionTypeId):
+    """
+    <p>API method to delete permission type</p>
+
+    Parameters:
+     - domainId
+     - permissionTypeId
+    """
+    self.send_deletePermissionType(domainId, permissionTypeId)
+    return self.recv_deletePermissionType()
+
+  def send_deletePermissionType(self, domainId, permissionTypeId):
+    self._oprot.writeMessageBegin('deletePermissionType', TMessageType.CALL, self._seqid)
+    args = deletePermissionType_args()
+    args.domainId = domainId
+    args.permissionTypeId = permissionTypeId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_deletePermissionType(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = deletePermissionType_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "deletePermissionType failed: unknown result")
+
+  def getPermissionType(self, domainId, permissionTypeId):
+    """
+    <p>API method to get permission type</p>
+
+    Parameters:
+     - domainId
+     - permissionTypeId
+    """
+    self.send_getPermissionType(domainId, permissionTypeId)
+    return self.recv_getPermissionType()
+
+  def send_getPermissionType(self, domainId, permissionTypeId):
+    self._oprot.writeMessageBegin('getPermissionType', TMessageType.CALL, self._seqid)
+    args = getPermissionType_args()
+    args.domainId = domainId
+    args.permissionTypeId = permissionTypeId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getPermissionType(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getPermissionType_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getPermissionType failed: unknown result")
+
+  def getPermissionTypes(self, domainId, offset, limit):
+    """
+    <p>API method to get list of permission types in a given domainId.</p>
+
+    Parameters:
+     - domainId
+     - offset
+     - limit
+    """
+    self.send_getPermissionTypes(domainId, offset, limit)
+    return self.recv_getPermissionTypes()
+
+  def send_getPermissionTypes(self, domainId, offset, limit):
+    self._oprot.writeMessageBegin('getPermissionTypes', TMessageType.CALL, self._seqid)
+    args = getPermissionTypes_args()
+    args.domainId = domainId
+    args.offset = offset
+    args.limit = limit
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getPermissionTypes(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getPermissionTypes_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getPermissionTypes failed: unknown result")
+
+  def shareEntityWithUsers(self, domainId, entityId, userList, perssionTypeId, cascadePermission):
+    """
+    <p>API method to share an entity with users</p>
+
+    Parameters:
+     - domainId
+     - entityId
+     - userList
+     - perssionTypeId
+     - cascadePermission
+    """
+    self.send_shareEntityWithUsers(domainId, entityId, userList, perssionTypeId, cascadePermission)
+    return self.recv_shareEntityWithUsers()
+
+  def send_shareEntityWithUsers(self, domainId, entityId, userList, perssionTypeId, cascadePermission):
+    self._oprot.writeMessageBegin('shareEntityWithUsers', TMessageType.CALL, self._seqid)
+    args = shareEntityWithUsers_args()
+    args.domainId = domainId
+    args.entityId = entityId
+    args.userList = userList
+    args.perssionTypeId = perssionTypeId
+    args.cascadePermission = cascadePermission
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_shareEntityWithUsers(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = shareEntityWithUsers_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "shareEntityWithUsers failed: unknown result")
+
+  def revokeEntitySharingFromUsers(self, domainId, entityId, userList, perssionTypeId):
+    """
+    <p>API method to revoke sharing from a list of users</p>
+
+    Parameters:
+     - domainId
+     - entityId
+     - userList
+     - perssionTypeId
+    """
+    self.send_revokeEntitySharingFromUsers(domainId, entityId, userList, perssionTypeId)
+    return self.recv_revokeEntitySharingFromUsers()
+
+  def send_revokeEntitySharingFromUsers(self, domainId, entityId, userList, perssionTypeId):
+    self._oprot.writeMessageBegin('revokeEntitySharingFromUsers', TMessageType.CALL, self._seqid)
+    args = revokeEntitySharingFromUsers_args()
+    args.domainId = domainId
+    args.entityId = entityId
+    args.userList = userList
+    args.perssionTypeId = perssionTypeId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_revokeEntitySharingFromUsers(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = revokeEntitySharingFromUsers_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "revokeEntitySharingFromUsers failed: unknown result")
+
+  def shareEntityWithGroups(self, domainId, entityId, groupList, perssionTypeId, cascadePermission):
+    """
+    <p>API method to share an entity with list of groups</p>
+
+    Parameters:
+     - domainId
+     - entityId
+     - groupList
+     - perssionTypeId
+     - cascadePermission
+    """
+    self.send_shareEntityWithGroups(domainId, entityId, groupList, perssionTypeId, cascadePermission)
+    return self.recv_shareEntityWithGroups()
+
+  def send_shareEntityWithGroups(self, domainId, entityId, groupList, perssionTypeId, cascadePermission):
+    self._oprot.writeMessageBegin('shareEntityWithGroups', TMessageType.CALL, self._seqid)
+    args = shareEntityWithGroups_args()
+    args.domainId = domainId
+    args.entityId = entityId
+    args.groupList = groupList
+    args.perssionTypeId = perssionTypeId
+    args.cascadePermission = cascadePermission
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_shareEntityWithGroups(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = shareEntityWithGroups_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "shareEntityWithGroups failed: unknown result")
+
+  def revokeEntitySharingFromGroups(self, domainId, entityId, groupList, perssionTypeId):
+    """
+    <p>API method to revoke sharing from list of users</p>
+
+    Parameters:
+     - domainId
+     - entityId
+     - groupList
+     - perssionTypeId
+    """
+    self.send_revokeEntitySharingFromGroups(domainId, entityId, groupList, perssionTypeId)
+    return self.recv_revokeEntitySharingFromGroups()
+
+  def send_revokeEntitySharingFromGroups(self, domainId, entityId, groupList, perssionTypeId):
+    self._oprot.writeMessageBegin('revokeEntitySharingFromGroups', TMessageType.CALL, self._seqid)
+    args = revokeEntitySharingFromGroups_args()
+    args.domainId = domainId
+    args.entityId = entityId
+    args.groupList = groupList
+    args.perssionTypeId = perssionTypeId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_revokeEntitySharingFromGroups(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = revokeEntitySharingFromGroups_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "revokeEntitySharingFromGroups failed: unknown result")
+
+  def userHasAccess(self, domainId, userId, entityId, permissionTypeId):
+    """
+    <p>API method to check whether a user has access to a specific entity</p>
+
+    Parameters:
+     - domainId
+     - userId
+     - entityId
+     - permissionTypeId
+    """
+    self.send_userHasAccess(domainId, userId, entityId, permissionTypeId)
+    return self.recv_userHasAccess()
+
+  def send_userHasAccess(self, domainId, userId, entityId, permissionTypeId):
+    self._oprot.writeMessageBegin('userHasAccess', TMessageType.CALL, self._seqid)
+    args = userHasAccess_args()
+    args.domainId = domainId
+    args.userId = userId
+    args.entityId = entityId
+    args.permissionTypeId = permissionTypeId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_userHasAccess(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = userHasAccess_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.sre is not None:
+      raise result.sre
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "userHasAccess failed: unknown result")
+
+
+class Processor(Iface, TProcessor):
+  def __init__(self, handler):
+    self._handler = handler
+    self._processMap = {}
+    self._processMap["createDomain"] = Processor.process_createDomain
+    self._processMap["updateDomain"] = Processor.process_updateDomain
+    self._processMap["isDomainExists"] = Processor.process_isDomainExists
+    self._processMap["deleteDomain"] = Processor.process_deleteDomain
+    self._processMap["getDomain"] = Processor.process_getDomain
+    self._processMap["getDomains"] = Processor.process_getDomains
+    self._processMap["createUser"] = Processor.process_createUser
+    self._processMap["updatedUser"] = Processor.process_updatedUser
+    self._processMap["isUserExists"] = Processor.process_isUserExists
+    self._processMap["deleteUser"] = Processor.process_deleteUser
+    self._processMap["getUser"] = Processor.process_getUser
+    self._processMap["getUsers"] = Processor.process_getUsers
+    self._processMap["createGroup"] = Processor.process_createGroup
+    self._processMap["updateGroup"] = Processor.process_updateGroup
+    self._processMap["isGroupExists"] = Processor.process_isGroupExists
+    self._processMap["deleteGroup"] = Processor.process_deleteGroup
+    self._processMap["getGroup"] = Processor.process_getGroup
+    self._processMap["getGroups"] = Processor.process_getGroups
+    self._processMap["addUsersToGroup"] = Processor.process_addUsersToGroup
+    self._processMap["removeUsersFromGroup"] = Processor.process_removeUsersFromGroup
+    self._processMap["getGroupMembersOfTypeUser"] = Processor.process_getGroupMembersOfTypeUser
+    self._processMap["getGroupMembersOfTypeGroup"] = Processor.process_getGroupMembersOfTypeGroup
+    self._processMap["addChildGroupsToParentGroup"] = Processor.process_addChildGroupsToParentGroup
+    self._processMap["removeChildGroupFromParentGroup"] = Processor.process_removeChildGroupFromParentGroup
+    self._processMap["getAllMemberGroupsForUser"] = Processor.process_getAllMemberGroupsForUser
+    self._processMap["createEntityType"] = Processor.process_createEntityType
+    self._processMap["updateEntityType"] = Processor.process_updateEntityType
+    self._processMap["isEntityTypeExists"] = Processor.process_isEntityTypeExists
+    self._processMap["deleteEntityType"] = Processor.process_deleteEntityType
+    self._processMap["getEntityType"] = Processor.process_getEntityType
+    self._processMap["getEntityTypes"] = Processor.process_getEntityTypes
+    self._processMap["createEntity"] = Processor.process_createEntity
+    self._processMap["updateEntity"] = Processor.process_updateEntity
+    self._processMap["isEntityExists"] = Processor.process_isEntityExists
+    self._processMap["deleteEntity"] = Processor.process_deleteEntity
+    self._processMap["getEntity"] = Processor.process_getEntity
+    self._processMap["searchEntities"] = Processor.process_searchEntities
+    self._processMap["getListOfSharedUsers"] = Processor.process_getListOfSharedUsers
+    self._processMap["getListOfSharedGroups"] = Processor.process_getListOfSharedGroups
+    self._processMap["createPermissionType"] = Processor.process_createPermissionType
+    self._processMap["updatePermissionType"] = Processor.process_updatePermissionType
+    self._processMap["isPermissionExists"] = Processor.process_isPermissionExists
+    self._processMap["deletePermissionType"] = Processor.process_deletePermissionType
+    self._processMap["getPermissionType"] = Processor.process_getPermissionType
+    self._processMap["getPermissionTypes"] = Processor.process_getPermissionTypes
+    self._processMap["shareEntityWithUsers"] = Processor.process_shareEntityWithUsers
+    self._processMap["revokeEntitySharingFromUsers"] = Processor.process_revokeEntitySharingFromUsers
+    self._processMap["shareEntityWithGroups"] = Processor.process_shareEntityWithGroups
+    self._processMap["revokeEntitySharingFromGroups"] = Processor.process_revokeEntitySharingFromGroups
+    self._processMap["userHasAccess"] = Processor.process_userHasAccess
+
+  def process(self, iprot, oprot):
+    (name, type, seqid) = iprot.readMessageBegin()
+    if name not in self._processMap:
+      iprot.skip(TType.STRUCT)
+      iprot.readMessageEnd()
+      x = TApplicationException(TApplicationException.UNKNOWN_METHOD, 'Unknown function %s' % (name))
+      oprot.writeMessageBegin(name, TMessageType.EXCEPTION, seqid)
+      x.write(oprot)
+      oprot.writeMessageEnd()
+      oprot.trans.flush()
+      return
+    else:
+      self._processMap[name](self, seqid, iprot, oprot)
+    return True
+
+  def process_createDomain(self, seqid, iprot, oprot):
+    args = createDomain_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = createDomain_result()
+    try:
+      result.success = self._handler.createDomain(args.domain)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.model.sharing.ttypes.SharingRegistryException as sre:
+      msg_type = TMessageType.REPLY
+      result.sre = sre
+    except apache.airavata.model.sharing.ttypes.DuplicateEntryException as dee:
+      msg_type = TMessageType.REPLY
+      result.dee = dee
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("createDomain", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_updateDomain(self, seqid, iprot, oprot):
+    args = updateDomain_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = updateDomain_result()
+    try:
+      result.success = self._handler.updateDomain(args.domain)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.model.sharing.ttypes.SharingRegistryException as sre:
+      msg_type = TMessageType.REPLY
+      result.sre = sre
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("updateDomain", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_isDomainExists(self, seqid, iprot, oprot):
+    args = isDomainExists_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = isDomainExists_result()
+    try:
+      result.success = self._handler.isDomainExists(args.domainId)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.model.sharing.ttypes.SharingRegistryException as sre:
+      msg_type = TMessageType.REPLY
+      result.sre = sre
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("isDomainExists", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_deleteDomain(self, seqid, iprot, oprot):
+    args = deleteDomain_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = deleteDomain_result()
+    try:
+      result.success = self._handler.deleteDomain(args.domainId)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.model.sharing.ttypes.SharingRegistryException as sre:
+      msg_type = TMessageType.REPLY
+      result.sre = sre
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("deleteDomain", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_getDomain(self, seqid, iprot, oprot):
+    args = getDomain_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = getDomain_result()
+    try:
+      result.success = self._handler.getDomain(args.domainId)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.model.sharing.ttypes.SharingRegistryException as sre:
+      msg_type = TMessageType.REPLY
+      result.sre = sre
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("getDomain", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_getDomains(self, seqid, iprot, oprot):
+    args = getDomains_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = getDomains_result()
+    try:
+      result.success = self._handler.getDomains(args.offset, args.limit)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.model.sharing.ttypes.SharingRegistryException as sre:
+      msg_type = TMessageType.REPLY
+      result.sre = sre
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("getDomains", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_createUser(self, seqid, iprot, oprot):
+    args = createUser_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = createUser_result()
+    try:
+      result.success = self._handler.createUser(args.user)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.model.sharing.ttypes.SharingRegistryException as sre:
+      msg_type = TMessageType.REPLY
+      result.sre = sre
+    except apache.airavata.model.sharing.ttypes.DuplicateEntryException as dee:
+      msg_type = TMessageType.REPLY
+      result.dee = dee
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("createUser", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_updatedUser(self, seqid, iprot, oprot):
+    args = updatedUser_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = updatedUser_result()
+    try:
+      result.success = self._handler.updatedUser(args.user)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.model.sharing.ttypes.SharingRegistryException as sre:
+      msg_type = TMessageType.REPLY
+      result.sre = sre
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("updatedUser", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_isUserExists(self, seqid, iprot, oprot):
+    args = isUserExists_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = isUserExists_result()
+    try:
+      result.success = self._handler.isUserExists(args.domainId, args.userId)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.model.sharing.ttypes.SharingRegistryException as sre:
+      msg_type = TMessageType.REPLY
+      result.sre = sre
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("isUserExists", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_deleteUser(self, seqid, iprot, oprot):
+    args = deleteUser_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = deleteUser_result()
+    try:
+      result.success = self._handler.deleteUser(args.domainId, args.userId)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.model.sharing.ttypes.SharingRegistryException as sre:
+      msg_type = TMessageType.REPLY
+      result.sre = sre
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("deleteUser", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_getUser(self, seqid, iprot, oprot):
+    args = getUser_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = getUser_result()
+    try:
+      result.success = self._handler.getUser(args.domainId, args.userId)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.model.sharing.ttypes.SharingRegistryException as sre:
+      msg_type = TMessageType.REPLY
+      result.sre = sre
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("getUser", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_getUsers(self, seqid, iprot, oprot):
+    args = getUsers_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = getUsers_result()
+    try:
+      result.success = self._handler.getUsers(args.domainId, args.offset, args.limit)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.model.sharing.ttypes.SharingRegistryException as sre:
+      msg_type = TMessageType.REPLY
+      result.sre = sre
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("getUsers", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_createGroup(self, seqid, iprot, oprot):
+    args = createGroup_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = createGroup_result()
+    try:
+      result.success = self._handler.createGroup(args.group)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.model.sharing.ttypes.SharingRegistryException as sre:
+      msg_type = TMessageType.REPLY
+      result.sre = sre
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("createGroup", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_updateGroup(self, seqid, iprot, oprot):
+    args = updateGroup_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = updateGroup_result()
+    try:
+      result.success = self._handler.updateGroup(args.group)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.model.sharing.ttypes.SharingRegistryException as sre:
+      msg_type = TMessageType.REPLY
+      result.sre = sre
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("updateGroup", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_isGroupExists(self, seqid, iprot, oprot):
+    args = isGroupExists_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = isGroupExists_result()
+    try:
+      result.success = self._handler.isGroupExists(args.domainId, args.groupId)
+      msg_type = TMessageType.REPLY
+    except (TTransport.T

<TRUNCATED>