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 2016/10/03 21:22:41 UTC

[1/3] airavata git commit: adding governance registry server handler code

Repository: airavata
Updated Branches:
  refs/heads/airavata-gov-registry d14df923c -> 99de5cc42


http://git-wip-us.apache.org/repos/asf/airavata/blob/99de5cc4/modules/airavata-sharing-registry/thrift_models/sharing_cpi.thrift
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/thrift_models/sharing_cpi.thrift b/modules/airavata-sharing-registry/thrift_models/sharing_cpi.thrift
index 2f8e255..065416d 100644
--- a/modules/airavata-sharing-registry/thrift_models/sharing_cpi.thrift
+++ b/modules/airavata-sharing-registry/thrift_models/sharing_cpi.thrift
@@ -27,25 +27,25 @@ service GovRegistryService {
     /**
      * Domain Operations
     **/
-    bool createDomain(1: required sharing_models.Domain domain) throws (1: sharing_models.GovRegistryException gre)
+    string createDomain(1: required sharing_models.Domain domain) throws (1: sharing_models.GovRegistryException gre)
     bool updateDomain(1: required sharing_models.Domain domain) throws (1: sharing_models.GovRegistryException gre)
     bool deleteDomain(1: required string domainId) throws (1: sharing_models.GovRegistryException gre)
     sharing_models.Domain getDomain(1: required string domainId) throws (1: sharing_models.GovRegistryException gre)
-    list<sharing_models.Domain> getDomains(1: required i32 offset, 2: required i32 limit)
+    list<sharing_models.Domain> getDomains(1: required i32 offset, 2: required i32 limit) throws (1: sharing_models.GovRegistryException gre);
 
     /**
      * User Operations
     **/
-    bool registerUser(1: required sharing_models.User user) throws (1: sharing_models.GovRegistryException gre)
+    string createUser(1: required sharing_models.User user) throws (1: sharing_models.GovRegistryException gre)
     bool updatedUser(1: required sharing_models.User user) throws (1: sharing_models.GovRegistryException gre)
     bool deleteUser(1: required string userId) throws (1: sharing_models.GovRegistryException gre)
     sharing_models.User getUser(1: required string userId) throws (1: sharing_models.GovRegistryException gre)
-    list<sharing_models.User> getUsers(1: required string domain, 2: required i32 offset, 3: required i32 limit)
+    list<sharing_models.User> getUsers(1: required string domain, 2: required i32 offset, 3: required i32 limit) throws (1: sharing_models.GovRegistryException gre);
 
     /**
      * Group Operations
     **/
-    bool createGroup(1: required sharing_models.UserGroup group) throws (1: sharing_models.GovRegistryException gre)
+    string createGroup(1: required sharing_models.UserGroup group) throws (1: sharing_models.GovRegistryException gre)
     bool updateGroup(1: required sharing_models.UserGroup group) throws (1: sharing_models.GovRegistryException gre)
     bool deleteGroup(1: required string groupId) throws (1: sharing_models.GovRegistryException gre)
     sharing_models.UserGroup getGroup(1: required string groupId) throws (1: sharing_models.GovRegistryException gre)
@@ -53,21 +53,23 @@ service GovRegistryService {
 
     bool addUsersToGroup(1: required list<string> userIds, 2: required string groupId) throws (1: sharing_models.GovRegistryException gre);
     bool removeUsersFromGroup(1: required list<string> userIds, 2: required string groupId) throws (1: sharing_models.GovRegistryException gre);
-    map<string, sharing_models.GroupType> getGroupMembers(1: required string groupId)
+    map<string, sharing_models.GroupChildType> getGroupMembers(1: required string groupId, 2: required i32 offset, 3: required i32 limit) throws (1: sharing_models.GovRegistryException gre);
+    bool addChildGroupToParentGroup(1: required string childId, 2: required string groupId) throws (1: sharing_models.GovRegistryException gre);
+    bool removeChildGroupFromParentGroup(1: required string childId, 2: required string groupId) throws (1: sharing_models.GovRegistryException gre);
 
     /**
      * EntityType Operations
     **/
-    bool createEntityType(1: required sharing_models.EntityType entityType) throws (1: sharing_models.GovRegistryException gre)
+    string createEntityType(1: required sharing_models.EntityType entityType) throws (1: sharing_models.GovRegistryException gre)
     bool updateEntityType(1: required sharing_models.EntityType entityType) throws (1: sharing_models.GovRegistryException gre)
     bool deleteEntityType(1: required string entityTypeId) throws (1: sharing_models.GovRegistryException gre)
     sharing_models.EntityType getEntityType(1: required string entityTypeId) throws (1: sharing_models.GovRegistryException gre)
-    list<sharing_models.EntityType> getEntityTypes(1: required string domain, 2: required i32 offset, 3: required i32 limit)
+    list<sharing_models.EntityType> getEntityTypes(1: required string domain, 2: required i32 offset, 3: required i32 limit) throws (1: sharing_models.GovRegistryException gre);
 
     /**
      * Entity Operations
     **/
-    bool registerEntity(1: required sharing_models.Entity entity) throws (1: sharing_models.GovRegistryException gre)
+    string createEntity(1: required sharing_models.Entity entity) throws (1: sharing_models.GovRegistryException gre)
     bool updateEntity(1: required sharing_models.Entity entity) throws (1: sharing_models.GovRegistryException gre)
     bool deleteEntity(1: required string entityId) throws (1: sharing_models.GovRegistryException gre)
     sharing_models.Entity getEntity(1: required string entityId) throws (1: sharing_models.GovRegistryException gre)
@@ -75,11 +77,11 @@ service GovRegistryService {
             3: required map<string, string> filters, 4: required i32 offset, 5: required i32 limit) throws (1: sharing_models.GovRegistryException gre)
 
     /**
-     * EntityType Operations
+     * Permission Operations
     **/
-    bool createPermissionType(1: required sharing_models.PermissionType permisionType) throws (1: sharing_models.GovRegistryException gre)
-    bool updatePermissionType(1: required sharing_models.PermissionType permisionType) throws (1: sharing_models.GovRegistryException gre)
+    string createPermissionType(1: required sharing_models.PermissionType permissionType) throws (1: sharing_models.GovRegistryException gre)
+    bool updatePermissionType(1: required sharing_models.PermissionType permissionType) throws (1: sharing_models.GovRegistryException gre)
     bool deletePermissionType(1: required string entityTypeId) throws (1: sharing_models.GovRegistryException gre)
-    sharing_models.PermissionType getPermissionType(1: required string permisionTypeId) throws (1: sharing_models.GovRegistryException gre)
+    sharing_models.PermissionType getPermissionType(1: required string permissionTypeId) throws (1: sharing_models.GovRegistryException gre)
     list<sharing_models.PermissionType> getPermissionTypes(1: required string domain, 2: required i32 offset, 3: required i32 limit) throws (1: sharing_models.GovRegistryException gre)
 }
\ No newline at end of file


[3/3] airavata git commit: adding governance registry server handler code

Posted by sc...@apache.org.
adding governance registry server handler code


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

Branch: refs/heads/airavata-gov-registry
Commit: 99de5cc42488d98de02d30c58e40c1d6d05b0722
Parents: d14df92
Author: scnakandala <su...@gmail.com>
Authored: Mon Oct 3 17:22:36 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Mon Oct 3 17:22:36 2016 -0400

----------------------------------------------------------------------
 .../db/repositories/AbstractRepository.java     |    7 +-
 .../sharing/registry/db/utils/DBConstants.java  |   10 +
 .../server/GovRegistryServerHandler.java        |  293 +-
 .../src/main/resources/gov-registry.sql         |   98 +-
 .../registry/GovRegistryServerHandlerTest.java  |  221 +
 .../sharing/registry/models/Domain.java         |    2 +-
 .../sharing/registry/models/Entity.java         |    2 +-
 .../sharing/registry/models/EntityType.java     |    2 +-
 .../registry/models/GovRegistryException.java   |    2 +-
 .../sharing/registry/models/GroupChildType.java |    4 +
 .../registry/models/GroupMembership.java        |    2 +-
 .../sharing/registry/models/PermissionType.java |    2 +-
 .../sharing/registry/models/Sharing.java        |    2 +-
 .../airavata/sharing/registry/models/User.java  |    2 +-
 .../sharing/registry/models/UserGroup.java      |    2 +-
 .../service/cpi/GovRegistryService.java         | 4986 ++++++++++++++----
 .../thrift_models/sharing_cpi.thrift            |   28 +-
 17 files changed, 4456 insertions(+), 1209 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/99de5cc4/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/AbstractRepository.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/AbstractRepository.java b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/AbstractRepository.java
index bba8c2d..696f725 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/AbstractRepository.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/AbstractRepository.java
@@ -116,10 +116,9 @@ public abstract class AbstractRepository<T, E, Id> {
     }
 
     private String getSelectQuery(Map<String, String> filters){
-        String query = "SELECT p from " + dbEntityGenericClass.getSimpleName() + " as p WHERE ";
-        if(filters == null || filters.size() == 0){
-            query +=  "1";
-        }else{
+        String query = "SELECT p from " + dbEntityGenericClass.getSimpleName() + " as p";
+        if(filters != null && filters.size() != 0){
+            query += " WHERE ";
             for(String k : filters.keySet()){
                 query += "p." + k + " LIKE '%" + filters.get(k) + "%' AND ";
             }

http://git-wip-us.apache.org/repos/asf/airavata/blob/99de5cc4/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/utils/DBConstants.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/utils/DBConstants.java b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/utils/DBConstants.java
index f242b83..f647216 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/utils/DBConstants.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/utils/DBConstants.java
@@ -54,4 +54,14 @@ public class DBConstants {
         public static String CHILD_ID = "childId";
         public static String CHILD_TYPE = "childType";
     }
+
+    public static class EntityTypeTable {
+        public static String ENTITY_TYPE_ID = "entityTypeId";
+        public static String DOMAIN_ID = "domainId";
+    }
+
+    public static class PermissionTypeTable {
+        public static String ENTITY_TYPE_ID = "permissionTypeId";
+        public static String DOMAIN_ID = "domainId";
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/99de5cc4/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/server/GovRegistryServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/server/GovRegistryServerHandler.java b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/server/GovRegistryServerHandler.java
index 5af94a0..d657f3c 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/server/GovRegistryServerHandler.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/server/GovRegistryServerHandler.java
@@ -20,45 +20,79 @@
 */
 package org.apache.airavata.sharing.registry.server;
 
+import org.apache.airavata.sharing.registry.db.entities.GroupMembershipEntityPK;
+import org.apache.airavata.sharing.registry.db.repositories.*;
+import org.apache.airavata.sharing.registry.db.utils.DBConstants;
 import org.apache.airavata.sharing.registry.models.*;
 import org.apache.airavata.sharing.registry.service.cpi.GovRegistryService;
 import org.apache.thrift.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 
 public class GovRegistryServerHandler implements GovRegistryService.Iface{
     private final static Logger logger = LoggerFactory.getLogger(GovRegistryServerHandler.class);
 
+    private DomainRepository domainRepository;
+    private UserRepository userRepository;
+    private UserGroupRepository userGroupRepository;
+    private GroupMembershipRepository groupMembershipRepository;
+    private EntityTypeRepository entityTypeRepository;
+    private PermissionTypeRepository permissionTypeRepository;
+    private EntityRepository entityRepository;
+
+    public GovRegistryServerHandler(){
+        this.domainRepository = new DomainRepository();
+        this.userRepository = new UserRepository();
+        this.userGroupRepository = new UserGroupRepository();
+        this.groupMembershipRepository = new GroupMembershipRepository();
+        this.entityTypeRepository = new EntityTypeRepository();
+        this.permissionTypeRepository = new PermissionTypeRepository();
+        this.entityRepository = new EntityRepository();
+    }
+
     /**
      * * Domain Operations
      * *
      */
     @Override
-    public boolean createDomain(Domain domain) throws GovRegistryException, TException {
-        return false;
+    public String createDomain(Domain domain) throws GovRegistryException, TException {
+        domain.setDomainId(domain.name);
+        domain.setCreatedTime(System.currentTimeMillis());
+        domain.setUpdatedTime(System.currentTimeMillis());
+        domainRepository.create(domain);
+        return domain.domainId;
     }
 
     @Override
     public boolean updateDomain(Domain domain) throws GovRegistryException, TException {
-        return false;
+        Domain oldDomain = domainRepository.get(domain.domainId);
+        domain.setCreatedTime(oldDomain.createdTime);
+        domain.setUpdatedTime(System.currentTimeMillis());
+        domain = getUpdatedObject(oldDomain, domain);
+        domainRepository.update(domain);
+        return true;
     }
 
     @Override
     public boolean deleteDomain(String domainId) throws GovRegistryException, TException {
-        return false;
+        domainRepository.delete(domainId);
+        return true;
     }
 
     @Override
     public Domain getDomain(String domainId) throws GovRegistryException, TException {
-        return null;
+        return domainRepository.get(domainId);
     }
 
     @Override
     public List<Domain> getDomains(int offset, int limit) throws TException {
-        return null;
+        return domainRepository.select(new HashMap<>(), offset, limit);
     }
 
     /**
@@ -66,28 +100,56 @@ public class GovRegistryServerHandler implements GovRegistryService.Iface{
      * *
      */
     @Override
-    public boolean registerUser(User user) throws GovRegistryException, TException {
-        return false;
+    public String createUser(User user) throws GovRegistryException, TException {
+        user.setUserId(user.domainId + ":" + user.userName);
+        user.setCreatedTime(System.currentTimeMillis());
+        user.setUpdatedTime(System.currentTimeMillis());
+        userRepository.create(user);
+
+        UserGroup userGroup = new UserGroup();
+        userGroup.setGroupId(user.userId);
+        userGroup.setDomainId(user.domainId);
+        userGroup.setName(user.userName);
+        userGroup.setDescription("user " + user.userName + " group");
+        userGroup.setOwnerId(user.userId);
+        userGroup.setGroupType(GroupType.SINGLE_USER);
+        createGroup(userGroup);
+
+        return user.userId;
     }
 
     @Override
     public boolean updatedUser(User user) throws GovRegistryException, TException {
-        return false;
+        User oldUser = userRepository.get(user.userId);
+        user.setCreatedTime(oldUser.createdTime);
+        user.setUpdatedTime(System.currentTimeMillis());
+        user = getUpdatedObject(oldUser, user);
+        userRepository.update(user);
+
+        UserGroup userGroup = userGroupRepository.get(user.userId);
+        userGroup.setName(user.userName);
+        userGroup.setDescription("user " + user.userName + " group");
+        updateGroup(userGroup);
+        return true;
     }
 
     @Override
     public boolean deleteUser(String userId) throws GovRegistryException, TException {
-        return false;
+        userRepository.delete(userId);
+        userGroupRepository.delete(userId);
+        return true;
     }
 
     @Override
     public User getUser(String userId) throws GovRegistryException, TException {
-        return null;
+        return userRepository.get(userId);
     }
 
     @Override
-    public List<User> getUsers(String domain, int offset, int limit) throws TException {
-        return null;
+    public List<User> getUsers(String domain, int offset, int limit) throws  GovRegistryException, TException {
+        HashMap<String, String> filters = new HashMap<>();
+        filters.put(DBConstants.UserTable.DOMAIN_ID, domain);
+        return userRepository.select(filters, offset, limit);
     }
 
     /**
@@ -95,43 +157,97 @@ public class GovRegistryServerHandler implements GovRegistryService.Iface{
      * *
      */
     @Override
-    public boolean createGroup(UserGroup group) throws GovRegistryException, TException {
-        return false;
+    public String createGroup(UserGroup group) throws GovRegistryException, TException {
+        group.setGroupId(group.domainId+":"+group.name);
+        group.setCreatedTime(System.currentTimeMillis());
+        group.setUpdatedTime(System.currentTimeMillis());
+        userGroupRepository.create(group);
+        return group.groupId;
     }
 
     @Override
     public boolean updateGroup(UserGroup group) throws GovRegistryException, TException {
-        return false;
+        group.setUpdatedTime(System.currentTimeMillis());
+        UserGroup oldGroup = userGroupRepository.get(group.groupId);
+        group.setCreatedTime(oldGroup.createdTime);
+        group = getUpdatedObject(oldGroup, group);
+        userGroupRepository.update(group);
+        return true;
     }
 
     @Override
     public boolean deleteGroup(String groupId) throws GovRegistryException, TException {
-        return false;
+        userGroupRepository.delete(groupId);
+        return true;
     }
 
     @Override
     public UserGroup getGroup(String groupId) throws GovRegistryException, TException {
-        return null;
+        return userGroupRepository.get(groupId);
     }
 
     @Override
     public List<UserGroup> getGroups(String domain, int offset, int limit) throws TException {
-        return null;
+        HashMap<String, String> filters = new HashMap<>();
+        filters.put(DBConstants.UserTable.DOMAIN_ID, domain);
+        return userGroupRepository.select(filters, offset, limit);
     }
 
     @Override
     public boolean addUsersToGroup(List<String> userIds, String groupId) throws GovRegistryException, TException {
-        return false;
+        for(int i=0; i < userIds.size(); i++){
+            GroupMembership groupMembership = new GroupMembership();
+            groupMembership.setParentId(groupId);
+            groupMembership.setChildId(userIds.get(i));
+            groupMembership.setChildType(GroupChildType.USER);
+            groupMembership.setCreatedTime(System.currentTimeMillis());
+            groupMembership.setUpdatedTime(System.currentTimeMillis());
+            groupMembershipRepository.create(groupMembership);
+        }
+        return true;
     }
 
     @Override
     public boolean removeUsersFromGroup(List<String> userIds, String groupId) throws GovRegistryException, TException {
-        return false;
+        for(int i=0; i < userIds.size(); i++){
+            GroupMembershipEntityPK groupMembershipEntityPK = new GroupMembershipEntityPK();
+            groupMembershipEntityPK.setParentId(groupId);
+            groupMembershipEntityPK.setChildId(userIds.get(i));
+            groupMembershipRepository.delete(groupMembershipEntityPK);
+        }
+        return true;
     }
 
     @Override
-    public Map<String, GroupType> getGroupMembers(String groupId) throws TException {
-        return null;
+    public Map<String, GroupChildType> getGroupMembers(String groupId, int offset, int limit) throws  GovRegistryException, TException {
+        HashMap<String, GroupChildType> groupMembers = new HashMap<>();
+        HashMap<String, String> filters = new HashMap<>();
+        filters.put(DBConstants.GroupMembershipTable.PARENT_ID, groupId);
+        List<GroupMembership> groupMembershipList = groupMembershipRepository.select(filters, 0, -1);
+        groupMembershipList.stream().forEach(gm->{groupMembers.put(gm.getChildId(), gm.getChildType());});
+        return groupMembers;
+    }
+
+    @Override
+    public boolean addChildGroupToParentGroup(String childId, String groupId) throws GovRegistryException, TException {
+        //Todo check for cyclic dependencies
+        GroupMembership groupMembership = new GroupMembership();
+        groupMembership.setParentId(groupId);
+        groupMembership.setChildId(childId);
+        groupMembership.setChildType(GroupChildType.GROUP);
+        groupMembership.setCreatedTime(System.currentTimeMillis());
+        groupMembership.setUpdatedTime(System.currentTimeMillis());
+        groupMembershipRepository.create(groupMembership);
+        return true;
+    }
+
+    @Override
+    public boolean removeChildGroupFromParentGroup(String childId, String groupId) throws GovRegistryException, TException {
+        GroupMembershipEntityPK groupMembershipEntityPK = new GroupMembershipEntityPK();
+        groupMembershipEntityPK.setParentId(groupId);
+        groupMembershipEntityPK.setChildId(childId);
+        groupMembershipRepository.delete(groupMembershipEntityPK);
+        return true;
     }
 
     /**
@@ -139,85 +255,162 @@ public class GovRegistryServerHandler implements GovRegistryService.Iface{
      * *
      */
     @Override
-    public boolean createEntityType(EntityType entityType) throws GovRegistryException, TException {
-        return false;
+    public String createEntityType(EntityType entityType) throws GovRegistryException, TException {
+        entityType.setEntityTypeId(entityType.domainId + ":" + entityType.name);
+        entityType.setCreatedTime(System.currentTimeMillis());
+        entityType.setUpdatedTime(System.currentTimeMillis());
+        entityTypeRepository.create(entityType);
+        return entityType.entityTypeId;
     }
 
     @Override
     public boolean updateEntityType(EntityType entityType) throws GovRegistryException, TException {
-        return false;
+        entityType.setUpdatedTime(System.currentTimeMillis());
+        EntityType oldEntityType = entityTypeRepository.get(entityType.entityTypeId);
+        entityType.setCreatedTime(oldEntityType.createdTime);
+        entityType = getUpdatedObject(oldEntityType, entityType);
+        entityTypeRepository.update(entityType);
+        return true;
     }
 
     @Override
     public boolean deleteEntityType(String entityTypeId) throws GovRegistryException, TException {
-        return false;
+        entityTypeRepository.delete(entityTypeId);
+        return true;
     }
 
     @Override
     public EntityType getEntityType(String entityTypeId) throws GovRegistryException, TException {
-        return null;
+        return entityTypeRepository.get(entityTypeId);
     }
 
     @Override
     public List<EntityType> getEntityTypes(String domain, int offset, int limit) throws TException {
-        return null;
+        HashMap<String, String> filters = new HashMap<>();
+        filters.put(DBConstants.EntityTypeTable.DOMAIN_ID, domain);
+        return entityTypeRepository.select(domain, offset, limit);
     }
 
     /**
-     * * Entity Operations
+     * * Permission Operations
      * *
      */
     @Override
-    public boolean registerEntity(Entity entity) throws GovRegistryException, TException {
-        return false;
+    public String createPermissionType(PermissionType permissionType) throws GovRegistryException, TException {
+        permissionType.setPermissionTypeId(permissionType.domainId+":"+permissionType.name);
+        permissionType.setCreatedTime(System.currentTimeMillis());
+        permissionType.setUpdatedTime(System.currentTimeMillis());
+        permissionTypeRepository.create(permissionType);
+        return permissionType.permissionTypeId;
     }
 
     @Override
-    public boolean updateEntity(Entity entity) throws GovRegistryException, TException {
-        return false;
+    public boolean updatePermissionType(PermissionType permissionType) throws GovRegistryException, TException {
+        permissionType.setUpdatedTime(System.currentTimeMillis());
+        PermissionType oldPermissionType = permissionTypeRepository.get(permissionType.permissionTypeId);
+        permissionType = getUpdatedObject(oldPermissionType, permissionType);
+        permissionTypeRepository.update(permissionType);
+        return true;
     }
 
     @Override
-    public boolean deleteEntity(String entityId) throws GovRegistryException, TException {
-        return false;
+    public boolean deletePermissionType(String entityTypeId) throws GovRegistryException, TException {
+        permissionTypeRepository.delete(entityTypeId);
+        return true;
     }
 
     @Override
-    public Entity getEntity(String entityId) throws GovRegistryException, TException {
-        return null;
+    public PermissionType getPermissionType(String permissionTypeId) throws GovRegistryException, TException {
+        return permissionTypeRepository.get(permissionTypeId);
     }
 
     @Override
-    public List<Entity> searchEntities(String domain, String entityType, Map<String, String> filters, int offset, int limit) throws GovRegistryException, TException {
-        return null;
+    public List<PermissionType> getPermissionTypes(String domain, int offset, int limit) throws GovRegistryException, TException {
+        HashMap<String, String> filters = new HashMap<>();
+        filters.put(DBConstants.PermissionTypeTable.DOMAIN_ID, domain);
+        return permissionTypeRepository.select(filters, offset, limit);
     }
 
     /**
-     * * EntityType Operations
+     * * Entity Operations
      * *
      */
     @Override
-    public boolean createPermissionType(PermissionType permisionType) throws GovRegistryException, TException {
-        return false;
+    public String createEntity(Entity entity) throws GovRegistryException, TException {
+        entity.setEntityId(entity.domainId + ":" + entity.name);
+        entity.setCreatedTime(System.currentTimeMillis());
+        entity.setUpdatedTime(System.currentTimeMillis());
+        entityRepository.create(entity);
+        return entity.entityId;
     }
 
     @Override
-    public boolean updatePermissionType(PermissionType permisionType) throws GovRegistryException, TException {
-        return false;
+    public boolean updateEntity(Entity entity) throws GovRegistryException, TException {
+        entity.setUpdatedTime(System.currentTimeMillis());
+        Entity oldEntity = entityRepository.get(entity.getEntityId());
+        entity.setCreatedTime(oldEntity.createdTime);
+        entity = getUpdatedObject(oldEntity, entity);
+        entityRepository.update(entity);
+        return true;
     }
 
     @Override
-    public boolean deletePermissionType(String entityTypeId) throws GovRegistryException, TException {
-        return false;
+    public boolean deleteEntity(String entityId) throws GovRegistryException, TException {
+        entityRepository.delete(entityId);
+        return true;
     }
 
     @Override
-    public PermissionType getPermissionType(String permisionTypeId) throws GovRegistryException, TException {
-        return null;
+    public Entity getEntity(String entityId) throws GovRegistryException, TException {
+        return entityRepository.get(entityId);
     }
 
     @Override
-    public List<PermissionType> getPermissionTypes(String domain, int offset, int limit) throws GovRegistryException, TException {
+    public List<Entity> searchEntities(String domain, String entityType, Map<String, String> filters, int offset, int limit) throws GovRegistryException, TException {
         return null;
     }
+
+
+
+    private <T> T getUpdatedObject(T oldEntity, T newEntity) throws GovRegistryException {
+        Field[] newEntityFields = newEntity.getClass().getDeclaredFields();
+        Hashtable newHT = fieldsToHT(newEntityFields, newEntity);
+
+        Class oldEntityClass = oldEntity.getClass();
+        Field[] oldEntityFields = oldEntityClass.getDeclaredFields();
+
+        for (Field field : oldEntityFields){
+            field.setAccessible(true);
+            Object o = newHT.get(field.getName());
+            if (o != null){
+                Field f = null;
+                try {
+                    f = oldEntityClass.getDeclaredField(field.getName());
+                    f.setAccessible(true);
+                    logger.debug("setting " + f.getName());
+                    f.set(oldEntity, o);
+                } catch (Exception e) {
+                    throw new GovRegistryException(e.getMessage());
+                }
+            }
+        }
+        return oldEntity;
+    }
+
+    private static Hashtable<String, Object> fieldsToHT(Field[] fields, Object obj){
+        Hashtable<String,Object> hashtable = new Hashtable<>();
+        for (Field field: fields){
+            field.setAccessible(true);
+            try {
+                Object retrievedObject = field.get(obj);
+                if (retrievedObject != null){
+                    logger.debug("scanning " + field.getName());
+                    hashtable.put(field.getName(), field.get(obj));
+                }
+            } catch (IllegalAccessException e) {
+                e.printStackTrace();
+            }
+        }
+        return hashtable;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/99de5cc4/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/resources/gov-registry.sql
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/resources/gov-registry.sql b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/resources/gov-registry.sql
index 7c03e0c..f2bc98a 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/resources/gov-registry.sql
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/resources/gov-registry.sql
@@ -20,33 +20,33 @@
 */
 
 CREATE TABLE DOMAIN (
-  DOMAIN_ID VARCHAR(255),
-  NAME VARCHAR(255),
+  DOMAIN_ID VARCHAR(255) NOT NULL,
+  NAME VARCHAR(255) NOT NULL,
   DESCRIPTION VARCHAR(255),
-  CREATED_TIME BIGINT,
-  UPDATED_TIME BIGINT,
+  CREATED_TIME BIGINT NOT NULL,
+  UPDATED_TIME BIGINT NOT NULL,
   PRIMARY KEY (DOMAIN_ID)
 );
 
 CREATE TABLE USER (
-  USER_ID VARCHAR(255),
-  DOMAIN_ID VARCHAR(255),
-  USER_NAME VARCHAR(255),
-  CREATED_TIME BIGINT,
-  UPDATED_TIME BIGINT,
+  USER_ID VARCHAR(255) NOT NULL,
+  DOMAIN_ID VARCHAR(255) NOT NULL,
+  USER_NAME VARCHAR(255) NOT NULL,
+  CREATED_TIME BIGINT NOT NULL,
+  UPDATED_TIME BIGINT NOT NULL,
   PRIMARY KEY (USER_ID),
   FOREIGN KEY (DOMAIN_ID) REFERENCES DOMAIN(DOMAIN_ID) ON DELETE CASCADE ON UPDATE CASCADE
 );
 
 CREATE TABLE USER_GROUP (
-  GROUP_ID VARCHAR(255),
-  DOMAIN_ID VARCHAR(255),
-  NAME VARCHAR(255),
+  GROUP_ID VARCHAR(255) NOT NULL,
+  DOMAIN_ID VARCHAR(255) NOT NULL,
+  NAME VARCHAR(255) NOT NULL,
   DESCRIPTION VARCHAR(255),
-  OWNER_ID VARCHAR(255),
-  TYPE VARCHAR(255),
-  CREATED_TIME BIGINT,
-  UPDATED_TIME BIGINT,
+  OWNER_ID VARCHAR(255) NOT NULL,
+  GROUP_TYPE VARCHAR(255) NOT NULL,
+  CREATED_TIME BIGINT NOT NULL,
+  UPDATED_TIME BIGINT NOT NULL,
   PRIMARY KEY (GROUP_ID),
   FOREIGN KEY (DOMAIN_ID) REFERENCES DOMAIN(DOMAIN_ID) ON DELETE CASCADE ON UPDATE CASCADE,
   FOREIGN KEY (OWNER_ID) REFERENCES USER(USER_ID) ON DELETE CASCADE ON UPDATE CASCADE
@@ -54,49 +54,49 @@ CREATE TABLE USER_GROUP (
 
 
 CREATE TABLE GROUP_MEMBERSHIP (
-  PARENT_ID VARCHAR(255),
-  CHILD_ID VARCHAR(255),
-  CHILD_TYPE VARCHAR(255),
-  CREATED_TIME BIGINT,
-  UPDATED_TIME BIGINT,
+  PARENT_ID VARCHAR(255) NOT NULL,
+  CHILD_ID VARCHAR(255) NOT NULL,
+  CHILD_TYPE VARCHAR(255) NOT NULL,
+  CREATED_TIME BIGINT NOT NULL,
+  UPDATED_TIME BIGINT NOT NULL,
   PRIMARY KEY (PARENT_ID, CHILD_ID),
   FOREIGN KEY (PARENT_ID) REFERENCES USER_GROUP(GROUP_ID) ON DELETE CASCADE ON UPDATE CASCADE,
   FOREIGN KEY (CHILD_ID) REFERENCES USER_GROUP(GROUP_ID) ON DELETE CASCADE ON UPDATE CASCADE
 );
 
 CREATE TABLE ENTITY_TYPE (
-  ENTITY_TYPE_ID VARCHAR(255),
-  DOMAIN_ID VARCHAR(255),
-  NAME VARCHAR(255),
+  ENTITY_TYPE_ID VARCHAR(255) NOT NULL,
+  DOMAIN_ID VARCHAR(255) NOT NULL,
+  NAME VARCHAR(255) NOT NULL,
   DESCRIPTION VARCHAR(255),
-  CREATED_TIME BIGINT,
-  UPDATED_TIME BIGINT,
+  CREATED_TIME BIGINT NOT NULL,
+  UPDATED_TIME BIGINT NOT NULL,
   PRIMARY KEY (ENTITY_TYPE_ID),
   FOREIGN KEY (DOMAIN_ID) REFERENCES DOMAIN(DOMAIN_ID) ON DELETE CASCADE ON UPDATE CASCADE
 );
 
 CREATE TABLE PERMISSION_TYPE (
-  PERMISSION_TYPE_ID VARCHAR(255),
-  DOMAIN_ID VARCHAR(255),
-  NAME VARCHAR(255),
+  PERMISSION_TYPE_ID VARCHAR(255) NOT NULL,
+  DOMAIN_ID VARCHAR(255) NOT NULL,
+  NAME VARCHAR(255) NOT NULL,
   DESCRIPTION VARCHAR(255),
-  CREATED_TIME BIGINT,
-  UPDATED_TIME BIGINT,
+  CREATED_TIME BIGINT NOT NULL,
+  UPDATED_TIME BIGINT NOT NULL,
   PRIMARY KEY (PERMISSION_TYPE_ID),
   FOREIGN KEY (DOMAIN_ID) REFERENCES DOMAIN(DOMAIN_ID) ON DELETE CASCADE ON UPDATE CASCADE
 );
 
 CREATE TABLE ENTITY (
-  ENTITY_ID VARCHAR(255),
-  DOMAIN_ID VARCHAR(255),
-  ENTITY_TYPE_ID VARCHAR(255),
-  OWNER_ID VARCHAR(255),
+  ENTITY_ID VARCHAR(255) NOT NULL,
+  DOMAIN_ID VARCHAR(255) NOT NULL,
+  ENTITY_TYPE_ID VARCHAR(255) NOT NULL,
+  OWNER_ID VARCHAR(255) NOT NULL,
   PARENT_ENTITY_ID VARCHAR(255),
-  NAME VARCHAR(255),
+  NAME VARCHAR(255) NOT NULL,
   DESCRIPTION VARCHAR(255),
   FULL_TEXT TEXT,
-  CREATED_TIME BIGINT,
-  UPDATED_TIME BIGINT,
+  CREATED_TIME BIGINT NOT NULL,
+  UPDATED_TIME BIGINT NOT NULL,
   PRIMARY KEY (ENTITY_ID),
   FOREIGN KEY (DOMAIN_ID) REFERENCES DOMAIN(DOMAIN_ID) ON DELETE CASCADE ON UPDATE CASCADE,
   FOREIGN KEY (ENTITY_TYPE_ID) REFERENCES ENTITY_TYPE(ENTITY_TYPE_ID) ON DELETE CASCADE ON UPDATE CASCADE,
@@ -105,30 +105,28 @@ CREATE TABLE ENTITY (
 );
 
 CREATE TABLE ENTITY_METADATA (
-  ENTITY_ID VARCHAR (255),
-  META_KEY VARCHAR (255),
-  META_VALUE VARCHAR (255),
+  ENTITY_ID VARCHAR (255) NOT NULL,
+  META_KEY VARCHAR (255) NOT NULL,
+  META_VALUE VARCHAR (255) NOT NULL,
   PRIMARY KEY (ENTITY_ID, META_KEY),
   FOREIGN KEY (ENTITY_ID) REFERENCES ENTITY(ENTITY_ID) ON DELETE CASCADE ON UPDATE CASCADE
 );
 
 CREATE TABLE SHARING (
-  PERMISSION_TYPE_ID VARCHAR(255),
-  ENTITY_TYPE_ID VARCHAR(255),
-  ENTITY_ID VARCHAR(255),
-  GROUP_ID VARCHAR(255),
-  CREATED_TIME BIGINT,
-  UPDATED_TIME BIGINT,
+  PERMISSION_TYPE_ID VARCHAR(255) NOT NULL,
+  ENTITY_ID VARCHAR(255) NOT NULL,
+  GROUP_ID VARCHAR(255) NOT NULL,
+  CREATED_TIME BIGINT NOT NULL,
+  UPDATED_TIME BIGINT NOT NULL,
   PRIMARY KEY (PERMISSION_TYPE_ID, ENTITY_ID, GROUP_ID),
   FOREIGN KEY (PERMISSION_TYPE_ID) REFERENCES PERMISSION_TYPE(PERMISSION_TYPE_ID) ON DELETE CASCADE ON UPDATE CASCADE,
-  FOREIGN KEY (ENTITY_TYPE_ID) REFERENCES  ENTITY_TYPE(ENTITY_TYPE_ID) ON DELETE CASCADE ON UPDATE CASCADE,
   FOREIGN KEY (GROUP_ID) REFERENCES USER_GROUP(GROUP_ID) ON DELETE CASCADE ON UPDATE CASCADE
 );
 
 CREATE TABLE CONFIGURATION
 (
-  CONFIG_KEY VARCHAR(255),
-  CONFIG_VALUE VARCHAR(255),
+  CONFIG_KEY VARCHAR(255) NOT NULL,
+  CONFIG_VALUE VARCHAR(255) NOT NULL,
   PRIMARY KEY(CONFIG_KEY, CONFIG_VALUE)
 );
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/99de5cc4/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/test/java/org/apache/airavata/sharing/registry/GovRegistryServerHandlerTest.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/test/java/org/apache/airavata/sharing/registry/GovRegistryServerHandlerTest.java b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/test/java/org/apache/airavata/sharing/registry/GovRegistryServerHandlerTest.java
new file mode 100644
index 0000000..49522bd
--- /dev/null
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/test/java/org/apache/airavata/sharing/registry/GovRegistryServerHandlerTest.java
@@ -0,0 +1,221 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.sharing.registry;
+
+import junit.framework.Assert;
+import org.apache.airavata.sharing.registry.models.*;
+import org.apache.airavata.sharing.registry.server.GovRegistryServerHandler;
+import org.apache.thrift.TException;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+public class GovRegistryServerHandlerTest {
+    private final static Logger logger = LoggerFactory.getLogger(GovRegistryServerHandlerTest.class);
+
+    @Test
+    public void test() throws TException {
+        GovRegistryServerHandler govRegistryServerHandler = new GovRegistryServerHandler();
+
+        //Creating domain
+        Domain domain = new Domain();
+        String domainId = "test-domain."+System.currentTimeMillis();
+        domain.setDomainId(domainId);
+        domain.setName(domainId);
+        domain.setDescription("test domain description");
+        domain.setCreatedTime(System.currentTimeMillis());
+        domain.setUpdatedTime(System.currentTimeMillis());
+
+        Assert.assertNotNull(govRegistryServerHandler.createDomain(domain));
+        Assert.assertTrue(govRegistryServerHandler.getDomains(0, 10).size() > 0);
+
+
+        //Creating users
+        User user1 = new User();
+        String userName1 = "test-user-1." + System.currentTimeMillis();
+        String userId1 = domainId + ":" + userName1;
+        user1.setUserId(userId1);
+        user1.setUserName(userName1);
+        user1.setDomainId(domainId);
+        user1.setCreatedTime(System.currentTimeMillis());
+        user1.setUpdatedTime(System.currentTimeMillis());
+
+        Assert.assertNotNull(govRegistryServerHandler.createUser(user1));
+
+        User user2 = new User();
+        String userName2 = "test-user-2." + System.currentTimeMillis();
+        String userId2 = domainId + ":" + userName2;
+        user2.setUserId(userId2);
+        user2.setUserName(userName2);
+        user2.setDomainId(domainId);
+        user2.setCreatedTime(System.currentTimeMillis());
+        user2.setUpdatedTime(System.currentTimeMillis());
+
+        Assert.assertNotNull(govRegistryServerHandler.createUser(user2));
+
+        User user3 = new User();
+        String userName3 = "test-user-3." + System.currentTimeMillis();
+        String userId3 = domainId + ":" + userName3;
+        user3.setUserId(userId3);
+        user3.setUserName(userName3);
+        user3.setDomainId(domainId);
+        user3.setCreatedTime(System.currentTimeMillis());
+        user3.setUpdatedTime(System.currentTimeMillis());
+
+        Assert.assertNotNull(govRegistryServerHandler.createUser(user3));
+
+        Assert.assertTrue(govRegistryServerHandler.getUsers(domainId, 0, 10).size() > 0);
+
+        // Creating user groups
+        UserGroup userGroup1 = new UserGroup();
+        String groupName1 = "test-group-1." + System.currentTimeMillis();
+        String groupId1 = domainId + ":" + groupName1;
+        userGroup1.setGroupId(groupId1);
+        userGroup1.setDomainId(domainId);
+        userGroup1.setName(groupName1);
+        userGroup1.setDescription("test group description");
+        userGroup1.setOwnerId(userId1);
+        userGroup1.setGroupType(GroupType.MULTI_USER);
+        userGroup1.setCreatedTime(System.currentTimeMillis());
+        userGroup1.setUpdatedTime(System.currentTimeMillis());
+
+        Assert.assertNotNull(govRegistryServerHandler.createGroup(userGroup1));
+
+        UserGroup userGroup2 = new UserGroup();
+        String groupName2 = "test-group-2." + System.currentTimeMillis();
+        String groupId2 = domainId + ":" + groupName2;
+        userGroup2.setGroupId(groupId2);
+        userGroup2.setDomainId(domainId);
+        userGroup2.setName(groupName2);
+        userGroup2.setDescription("test group description");
+        userGroup2.setOwnerId(userId2);
+        userGroup2.setGroupType(GroupType.MULTI_USER);
+        userGroup2.setCreatedTime(System.currentTimeMillis());
+        userGroup2.setUpdatedTime(System.currentTimeMillis());
+
+        Assert.assertNotNull(govRegistryServerHandler.createGroup(userGroup2));
+
+        govRegistryServerHandler.addUsersToGroup(Arrays.asList(userId1), groupId1);
+        govRegistryServerHandler.addUsersToGroup(Arrays.asList(userId2, userId3), groupId2);
+        govRegistryServerHandler.addChildGroupToParentGroup(groupId2, groupId1);
+
+        Assert.assertTrue(govRegistryServerHandler.getGroupMembers(groupId1, 0, 10).size() == 2);
+        Assert.assertTrue(govRegistryServerHandler.getGroupMembers(groupId2, 0, 10).size() == 2);
+
+
+        //Creating permission types
+        PermissionType permissionType1 = new PermissionType();
+        String permissionName1 = "READ";
+        permissionType1.setDomainId(domainId);
+        permissionType1.setName(permissionName1);
+        permissionType1.setDescription("READ description");
+        permissionType1.setCreatedTime(System.currentTimeMillis());
+        permissionType1.setUpdatedTime(System.currentTimeMillis());
+        String permissionTypeId1 = govRegistryServerHandler.createPermissionType(permissionType1);
+        Assert.assertNotNull(permissionTypeId1);
+
+        PermissionType permissionType2 = new PermissionType();
+        String permissionName2 = "WRITE";
+        permissionType2.setDomainId(domainId);
+        permissionType2.setName(permissionName2);
+        permissionType2.setDescription("WRITE description");
+        permissionType2.setCreatedTime(System.currentTimeMillis());
+        permissionType2.setUpdatedTime(System.currentTimeMillis());
+        String permissionTypeId2 = govRegistryServerHandler.createPermissionType(permissionType2);
+        Assert.assertNotNull(permissionTypeId2);
+
+        //Creating entity types
+        EntityType entityType1 = new EntityType();
+        String entityType1Name = "Project";
+        entityType1.setDomainId(domainId);
+        entityType1.setName(entityType1Name);
+        entityType1.setDescription("test entity type");
+        entityType1.setCreatedTime(System.currentTimeMillis());
+        entityType1.setUpdatedTime(System.currentTimeMillis());
+        String entityTypeId1 = govRegistryServerHandler.createEntityType(entityType1);
+        Assert.assertNotNull(entityTypeId1);
+
+        EntityType entityType2 = new EntityType();
+        String entityType2Name = "Experiment";
+        entityType2.setDomainId(domainId);
+        entityType2.setName(entityType2Name);
+        entityType2.setDescription("test entity type");
+        entityType2.setCreatedTime(System.currentTimeMillis());
+        entityType2.setUpdatedTime(System.currentTimeMillis());
+        String entityTypeId2 = govRegistryServerHandler.createEntityType(entityType2);
+        Assert.assertNotNull(entityTypeId2);
+
+        //Creating Entities
+        Entity entity1 = new Entity();
+        entity1.setDomainId(domainId);
+        entity1.setEntityTypeId(entityTypeId1);
+        entity1.setOwnerId(userId1);
+        entity1.setName("Project name");
+        entity1.setDescription("Project description");
+        Map<String, String> metadataMap = new HashMap<>();
+        metadataMap.put("key", "val");
+        entity1.setMetadata(metadataMap);
+        entity1.setFullText("Project name project description");
+        entity1.setCreatedTime(System.currentTimeMillis());
+        entity1.setUpdatedTime(System.currentTimeMillis());
+
+        String entityId1 = govRegistryServerHandler.createEntity(entity1);
+        Assert.assertNotNull(entityId1);
+
+        Entity entity2 = new Entity();
+        entity2.setDomainId(domainId);
+        entity2.setEntityTypeId(entityTypeId2);
+        entity2.setOwnerId(userId1);
+        entity2.setName("Experiment name");
+        entity2.setDescription("Experiment description");
+        entity2.setParentEntityId(entityId1);
+        metadataMap = new HashMap<>();
+        metadataMap.put("key", "val");
+        entity2.setMetadata(metadataMap);
+        entity2.setFullText("Project name project description");
+        entity2.setCreatedTime(System.currentTimeMillis());
+        entity2.setUpdatedTime(System.currentTimeMillis());
+
+        String entityId2 = govRegistryServerHandler.createEntity(entity2);
+        Assert.assertNotNull(entityId2);
+
+        Entity entity3 = new Entity();
+        entity3.setDomainId(domainId);
+        entity3.setEntityTypeId(entityTypeId2);
+        entity3.setOwnerId(userId1);
+        entity3.setName("Experiment name");
+        entity3.setDescription("Experiment description");
+        entity3.setParentEntityId(entityId1);
+        metadataMap = new HashMap<>();
+        metadataMap.put("key", "val");
+        entity3.setMetadata(metadataMap);
+        entity3.setFullText("Project name project description");
+        entity3.setCreatedTime(System.currentTimeMillis());
+        entity3.setUpdatedTime(System.currentTimeMillis());
+
+        String entityId3 = govRegistryServerHandler.createEntity(entity3);
+        Assert.assertNotNull(entityId3);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/99de5cc4/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java
index dd20bf1..f6327bf 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-23")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-03")
 public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>, java.io.Serializable, Cloneable, Comparable<Domain> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Domain");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/99de5cc4/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Entity.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Entity.java b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Entity.java
index f0ebba3..1e439d7 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Entity.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Entity.java
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-23")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-03")
 public class Entity implements org.apache.thrift.TBase<Entity, Entity._Fields>, java.io.Serializable, Cloneable, Comparable<Entity> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Entity");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/99de5cc4/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntityType.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntityType.java b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntityType.java
index 752df80..d60a599 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntityType.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntityType.java
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-23")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-03")
 public class EntityType implements org.apache.thrift.TBase<EntityType, EntityType._Fields>, java.io.Serializable, Cloneable, Comparable<EntityType> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("EntityType");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/99de5cc4/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GovRegistryException.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GovRegistryException.java b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GovRegistryException.java
index 2314b0a..78c78f7 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GovRegistryException.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GovRegistryException.java
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-23")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-03")
 public class GovRegistryException extends TException implements org.apache.thrift.TBase<GovRegistryException, GovRegistryException._Fields>, java.io.Serializable, Cloneable, Comparable<GovRegistryException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GovRegistryException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/99de5cc4/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupChildType.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupChildType.java b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupChildType.java
index 61f3564..ba7b659 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupChildType.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupChildType.java
@@ -7,6 +7,10 @@
 package org.apache.airavata.sharing.registry.models;
 
 
+import java.util.Map;
+import java.util.HashMap;
+import org.apache.thrift.TEnum;
+
 public enum GroupChildType implements org.apache.thrift.TEnum {
   USER(0),
   GROUP(1);

http://git-wip-us.apache.org/repos/asf/airavata/blob/99de5cc4/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupMembership.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupMembership.java b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupMembership.java
index 8fc2cd8..d426063 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupMembership.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupMembership.java
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-23")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-03")
 public class GroupMembership implements org.apache.thrift.TBase<GroupMembership, GroupMembership._Fields>, java.io.Serializable, Cloneable, Comparable<GroupMembership> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GroupMembership");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/99de5cc4/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/PermissionType.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/PermissionType.java b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/PermissionType.java
index 50bbe15..465ddfc 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/PermissionType.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/PermissionType.java
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-23")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-03")
 public class PermissionType implements org.apache.thrift.TBase<PermissionType, PermissionType._Fields>, java.io.Serializable, Cloneable, Comparable<PermissionType> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("PermissionType");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/99de5cc4/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Sharing.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Sharing.java b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Sharing.java
index c7d07d6..41bdc96 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Sharing.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Sharing.java
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-23")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-03")
 public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields>, java.io.Serializable, Cloneable, Comparable<Sharing> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Sharing");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/99de5cc4/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/User.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/User.java b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/User.java
index 230be05..d70b8c1 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/User.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/User.java
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-23")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-03")
 public class User implements org.apache.thrift.TBase<User, User._Fields>, java.io.Serializable, Cloneable, Comparable<User> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("User");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/99de5cc4/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/UserGroup.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/UserGroup.java b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/UserGroup.java
index 211ee5c..442e597 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/UserGroup.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/UserGroup.java
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-23")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-03")
 public class UserGroup implements org.apache.thrift.TBase<UserGroup, UserGroup._Fields>, java.io.Serializable, Cloneable, Comparable<UserGroup> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UserGroup");
 


[2/3] airavata git commit: adding governance registry server handler code

Posted by sc...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/99de5cc4/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/service/cpi/GovRegistryService.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/service/cpi/GovRegistryService.java b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/service/cpi/GovRegistryService.java
index 4ef8a74..e7693ac 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/service/cpi/GovRegistryService.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/service/cpi/GovRegistryService.java
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-23")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-03")
 public class GovRegistryService {
 
   public interface Iface {
@@ -45,7 +45,7 @@ public class GovRegistryService {
      * 
      * @param domain
      */
-    public boolean createDomain(org.apache.airavata.sharing.registry.models.Domain domain) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
+    public String createDomain(org.apache.airavata.sharing.registry.models.Domain domain) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
     public boolean updateDomain(org.apache.airavata.sharing.registry.models.Domain domain) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
@@ -53,7 +53,7 @@ public class GovRegistryService {
 
     public org.apache.airavata.sharing.registry.models.Domain getDomain(String domainId) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
-    public List<org.apache.airavata.sharing.registry.models.Domain> getDomains(int offset, int limit) throws org.apache.thrift.TException;
+    public List<org.apache.airavata.sharing.registry.models.Domain> getDomains(int offset, int limit) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
     /**
      *  * User Operations
@@ -61,7 +61,7 @@ public class GovRegistryService {
      * 
      * @param user
      */
-    public boolean registerUser(org.apache.airavata.sharing.registry.models.User user) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
+    public String createUser(org.apache.airavata.sharing.registry.models.User user) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
     public boolean updatedUser(org.apache.airavata.sharing.registry.models.User user) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
@@ -69,7 +69,7 @@ public class GovRegistryService {
 
     public org.apache.airavata.sharing.registry.models.User getUser(String userId) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
-    public List<org.apache.airavata.sharing.registry.models.User> getUsers(String domain, int offset, int limit) throws org.apache.thrift.TException;
+    public List<org.apache.airavata.sharing.registry.models.User> getUsers(String domain, int offset, int limit) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
     /**
      *  * Group Operations
@@ -77,7 +77,7 @@ public class GovRegistryService {
      * 
      * @param group
      */
-    public boolean createGroup(org.apache.airavata.sharing.registry.models.UserGroup group) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
+    public String createGroup(org.apache.airavata.sharing.registry.models.UserGroup group) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
     public boolean updateGroup(org.apache.airavata.sharing.registry.models.UserGroup group) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
@@ -91,7 +91,11 @@ public class GovRegistryService {
 
     public boolean removeUsersFromGroup(List<String> userIds, String groupId) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
-    public Map<String,org.apache.airavata.sharing.registry.models.GroupType> getGroupMembers(String groupId) throws org.apache.thrift.TException;
+    public Map<String,org.apache.airavata.sharing.registry.models.GroupChildType> getGroupMembers(String groupId, int offset, int limit) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
+
+    public boolean addChildGroupToParentGroup(String childId, String groupId) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
+
+    public boolean removeChildGroupFromParentGroup(String childId, String groupId) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
     /**
      *  * EntityType Operations
@@ -99,7 +103,7 @@ public class GovRegistryService {
      * 
      * @param entityType
      */
-    public boolean createEntityType(org.apache.airavata.sharing.registry.models.EntityType entityType) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
+    public String createEntityType(org.apache.airavata.sharing.registry.models.EntityType entityType) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
     public boolean updateEntityType(org.apache.airavata.sharing.registry.models.EntityType entityType) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
@@ -107,7 +111,7 @@ public class GovRegistryService {
 
     public org.apache.airavata.sharing.registry.models.EntityType getEntityType(String entityTypeId) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
-    public List<org.apache.airavata.sharing.registry.models.EntityType> getEntityTypes(String domain, int offset, int limit) throws org.apache.thrift.TException;
+    public List<org.apache.airavata.sharing.registry.models.EntityType> getEntityTypes(String domain, int offset, int limit) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
     /**
      *  * Entity Operations
@@ -115,7 +119,7 @@ public class GovRegistryService {
      * 
      * @param entity
      */
-    public boolean registerEntity(org.apache.airavata.sharing.registry.models.Entity entity) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
+    public String createEntity(org.apache.airavata.sharing.registry.models.Entity entity) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
     public boolean updateEntity(org.apache.airavata.sharing.registry.models.Entity entity) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
@@ -126,18 +130,18 @@ public class GovRegistryService {
     public List<org.apache.airavata.sharing.registry.models.Entity> searchEntities(String domain, String entityType, Map<String,String> filters, int offset, int limit) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
     /**
-     *  * EntityType Operations
+     *  * Permission Operations
      * *
      * 
-     * @param permisionType
+     * @param permissionType
      */
-    public boolean createPermissionType(org.apache.airavata.sharing.registry.models.PermissionType permisionType) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
+    public String createPermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
-    public boolean updatePermissionType(org.apache.airavata.sharing.registry.models.PermissionType permisionType) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
+    public boolean updatePermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
     public boolean deletePermissionType(String entityTypeId) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
-    public org.apache.airavata.sharing.registry.models.PermissionType getPermissionType(String permisionTypeId) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
+    public org.apache.airavata.sharing.registry.models.PermissionType getPermissionType(String permissionTypeId) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
     public List<org.apache.airavata.sharing.registry.models.PermissionType> getPermissionTypes(String domain, int offset, int limit) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
@@ -155,7 +159,7 @@ public class GovRegistryService {
 
     public void getDomains(int offset, int limit, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void registerUser(org.apache.airavata.sharing.registry.models.User user, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void createUser(org.apache.airavata.sharing.registry.models.User user, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void updatedUser(org.apache.airavata.sharing.registry.models.User user, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
@@ -179,7 +183,11 @@ public class GovRegistryService {
 
     public void removeUsersFromGroup(List<String> userIds, String groupId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void getGroupMembers(String groupId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void getGroupMembers(String groupId, int offset, int limit, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void addChildGroupToParentGroup(String childId, String groupId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void removeChildGroupFromParentGroup(String childId, String groupId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void createEntityType(org.apache.airavata.sharing.registry.models.EntityType entityType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
@@ -191,7 +199,7 @@ public class GovRegistryService {
 
     public void getEntityTypes(String domain, int offset, int limit, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void registerEntity(org.apache.airavata.sharing.registry.models.Entity entity, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void createEntity(org.apache.airavata.sharing.registry.models.Entity entity, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void updateEntity(org.apache.airavata.sharing.registry.models.Entity entity, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
@@ -201,13 +209,13 @@ public class GovRegistryService {
 
     public void searchEntities(String domain, String entityType, Map<String,String> filters, int offset, int limit, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void createPermissionType(org.apache.airavata.sharing.registry.models.PermissionType permisionType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void createPermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void updatePermissionType(org.apache.airavata.sharing.registry.models.PermissionType permisionType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void updatePermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void deletePermissionType(String entityTypeId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void getPermissionType(String permisionTypeId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void getPermissionType(String permissionTypeId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void getPermissionTypes(String domain, int offset, int limit, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
@@ -233,7 +241,7 @@ public class GovRegistryService {
       super(iprot, oprot);
     }
 
-    public boolean createDomain(org.apache.airavata.sharing.registry.models.Domain domain) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    public String createDomain(org.apache.airavata.sharing.registry.models.Domain domain) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
       send_createDomain(domain);
       return recv_createDomain();
@@ -246,7 +254,7 @@ public class GovRegistryService {
       sendBase("createDomain", args);
     }
 
-    public boolean recv_createDomain() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    public String recv_createDomain() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
       createDomain_result result = new createDomain_result();
       receiveBase(result, "createDomain");
@@ -337,7 +345,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getDomain failed: unknown result");
     }
 
-    public List<org.apache.airavata.sharing.registry.models.Domain> getDomains(int offset, int limit) throws org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.Domain> getDomains(int offset, int limit) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
       send_getDomains(offset, limit);
       return recv_getDomains();
@@ -351,40 +359,43 @@ public class GovRegistryService {
       sendBase("getDomains", args);
     }
 
-    public List<org.apache.airavata.sharing.registry.models.Domain> recv_getDomains() throws org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.Domain> recv_getDomains() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
       getDomains_result result = new getDomains_result();
       receiveBase(result, "getDomains");
       if (result.isSetSuccess()) {
         return result.success;
       }
+      if (result.gre != null) {
+        throw result.gre;
+      }
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getDomains failed: unknown result");
     }
 
-    public boolean registerUser(org.apache.airavata.sharing.registry.models.User user) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    public String createUser(org.apache.airavata.sharing.registry.models.User user) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
-      send_registerUser(user);
-      return recv_registerUser();
+      send_createUser(user);
+      return recv_createUser();
     }
 
-    public void send_registerUser(org.apache.airavata.sharing.registry.models.User user) throws org.apache.thrift.TException
+    public void send_createUser(org.apache.airavata.sharing.registry.models.User user) throws org.apache.thrift.TException
     {
-      registerUser_args args = new registerUser_args();
+      createUser_args args = new createUser_args();
       args.setUser(user);
-      sendBase("registerUser", args);
+      sendBase("createUser", args);
     }
 
-    public boolean recv_registerUser() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    public String recv_createUser() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
-      registerUser_result result = new registerUser_result();
-      receiveBase(result, "registerUser");
+      createUser_result result = new createUser_result();
+      receiveBase(result, "createUser");
       if (result.isSetSuccess()) {
         return result.success;
       }
       if (result.gre != null) {
         throw result.gre;
       }
-      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "registerUser failed: unknown result");
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "createUser failed: unknown result");
     }
 
     public boolean updatedUser(org.apache.airavata.sharing.registry.models.User user) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
@@ -465,7 +476,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getUser failed: unknown result");
     }
 
-    public List<org.apache.airavata.sharing.registry.models.User> getUsers(String domain, int offset, int limit) throws org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.User> getUsers(String domain, int offset, int limit) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
       send_getUsers(domain, offset, limit);
       return recv_getUsers();
@@ -480,17 +491,20 @@ public class GovRegistryService {
       sendBase("getUsers", args);
     }
 
-    public List<org.apache.airavata.sharing.registry.models.User> recv_getUsers() throws org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.User> recv_getUsers() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
       getUsers_result result = new getUsers_result();
       receiveBase(result, "getUsers");
       if (result.isSetSuccess()) {
         return result.success;
       }
+      if (result.gre != null) {
+        throw result.gre;
+      }
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getUsers failed: unknown result");
     }
 
-    public boolean createGroup(org.apache.airavata.sharing.registry.models.UserGroup group) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    public String createGroup(org.apache.airavata.sharing.registry.models.UserGroup group) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
       send_createGroup(group);
       return recv_createGroup();
@@ -503,7 +517,7 @@ public class GovRegistryService {
       sendBase("createGroup", args);
     }
 
-    public boolean recv_createGroup() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    public String recv_createGroup() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
       createGroup_result result = new createGroup_result();
       receiveBase(result, "createGroup");
@@ -673,30 +687,89 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "removeUsersFromGroup failed: unknown result");
     }
 
-    public Map<String,org.apache.airavata.sharing.registry.models.GroupType> getGroupMembers(String groupId) throws org.apache.thrift.TException
+    public Map<String,org.apache.airavata.sharing.registry.models.GroupChildType> getGroupMembers(String groupId, int offset, int limit) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
-      send_getGroupMembers(groupId);
+      send_getGroupMembers(groupId, offset, limit);
       return recv_getGroupMembers();
     }
 
-    public void send_getGroupMembers(String groupId) throws org.apache.thrift.TException
+    public void send_getGroupMembers(String groupId, int offset, int limit) throws org.apache.thrift.TException
     {
       getGroupMembers_args args = new getGroupMembers_args();
       args.setGroupId(groupId);
+      args.setOffset(offset);
+      args.setLimit(limit);
       sendBase("getGroupMembers", args);
     }
 
-    public Map<String,org.apache.airavata.sharing.registry.models.GroupType> recv_getGroupMembers() throws org.apache.thrift.TException
+    public Map<String,org.apache.airavata.sharing.registry.models.GroupChildType> recv_getGroupMembers() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
       getGroupMembers_result result = new getGroupMembers_result();
       receiveBase(result, "getGroupMembers");
       if (result.isSetSuccess()) {
         return result.success;
       }
+      if (result.gre != null) {
+        throw result.gre;
+      }
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getGroupMembers failed: unknown result");
     }
 
-    public boolean createEntityType(org.apache.airavata.sharing.registry.models.EntityType entityType) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    public boolean addChildGroupToParentGroup(String childId, String groupId) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    {
+      send_addChildGroupToParentGroup(childId, groupId);
+      return recv_addChildGroupToParentGroup();
+    }
+
+    public void send_addChildGroupToParentGroup(String childId, String groupId) throws org.apache.thrift.TException
+    {
+      addChildGroupToParentGroup_args args = new addChildGroupToParentGroup_args();
+      args.setChildId(childId);
+      args.setGroupId(groupId);
+      sendBase("addChildGroupToParentGroup", args);
+    }
+
+    public boolean recv_addChildGroupToParentGroup() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    {
+      addChildGroupToParentGroup_result result = new addChildGroupToParentGroup_result();
+      receiveBase(result, "addChildGroupToParentGroup");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.gre != null) {
+        throw result.gre;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "addChildGroupToParentGroup failed: unknown result");
+    }
+
+    public boolean removeChildGroupFromParentGroup(String childId, String groupId) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    {
+      send_removeChildGroupFromParentGroup(childId, groupId);
+      return recv_removeChildGroupFromParentGroup();
+    }
+
+    public void send_removeChildGroupFromParentGroup(String childId, String groupId) throws org.apache.thrift.TException
+    {
+      removeChildGroupFromParentGroup_args args = new removeChildGroupFromParentGroup_args();
+      args.setChildId(childId);
+      args.setGroupId(groupId);
+      sendBase("removeChildGroupFromParentGroup", args);
+    }
+
+    public boolean recv_removeChildGroupFromParentGroup() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    {
+      removeChildGroupFromParentGroup_result result = new removeChildGroupFromParentGroup_result();
+      receiveBase(result, "removeChildGroupFromParentGroup");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.gre != null) {
+        throw result.gre;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "removeChildGroupFromParentGroup failed: unknown result");
+    }
+
+    public String createEntityType(org.apache.airavata.sharing.registry.models.EntityType entityType) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
       send_createEntityType(entityType);
       return recv_createEntityType();
@@ -709,7 +782,7 @@ public class GovRegistryService {
       sendBase("createEntityType", args);
     }
 
-    public boolean recv_createEntityType() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    public String recv_createEntityType() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
       createEntityType_result result = new createEntityType_result();
       receiveBase(result, "createEntityType");
@@ -800,7 +873,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getEntityType failed: unknown result");
     }
 
-    public List<org.apache.airavata.sharing.registry.models.EntityType> getEntityTypes(String domain, int offset, int limit) throws org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.EntityType> getEntityTypes(String domain, int offset, int limit) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
       send_getEntityTypes(domain, offset, limit);
       return recv_getEntityTypes();
@@ -815,40 +888,43 @@ public class GovRegistryService {
       sendBase("getEntityTypes", args);
     }
 
-    public List<org.apache.airavata.sharing.registry.models.EntityType> recv_getEntityTypes() throws org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.EntityType> recv_getEntityTypes() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
       getEntityTypes_result result = new getEntityTypes_result();
       receiveBase(result, "getEntityTypes");
       if (result.isSetSuccess()) {
         return result.success;
       }
+      if (result.gre != null) {
+        throw result.gre;
+      }
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getEntityTypes failed: unknown result");
     }
 
-    public boolean registerEntity(org.apache.airavata.sharing.registry.models.Entity entity) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    public String createEntity(org.apache.airavata.sharing.registry.models.Entity entity) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
-      send_registerEntity(entity);
-      return recv_registerEntity();
+      send_createEntity(entity);
+      return recv_createEntity();
     }
 
-    public void send_registerEntity(org.apache.airavata.sharing.registry.models.Entity entity) throws org.apache.thrift.TException
+    public void send_createEntity(org.apache.airavata.sharing.registry.models.Entity entity) throws org.apache.thrift.TException
     {
-      registerEntity_args args = new registerEntity_args();
+      createEntity_args args = new createEntity_args();
       args.setEntity(entity);
-      sendBase("registerEntity", args);
+      sendBase("createEntity", args);
     }
 
-    public boolean recv_registerEntity() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    public String recv_createEntity() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
-      registerEntity_result result = new registerEntity_result();
-      receiveBase(result, "registerEntity");
+      createEntity_result result = new createEntity_result();
+      receiveBase(result, "createEntity");
       if (result.isSetSuccess()) {
         return result.success;
       }
       if (result.gre != null) {
         throw result.gre;
       }
-      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "registerEntity failed: unknown result");
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "createEntity failed: unknown result");
     }
 
     public boolean updateEntity(org.apache.airavata.sharing.registry.models.Entity entity) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
@@ -959,20 +1035,20 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchEntities failed: unknown result");
     }
 
-    public boolean createPermissionType(org.apache.airavata.sharing.registry.models.PermissionType permisionType) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    public String createPermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
-      send_createPermissionType(permisionType);
+      send_createPermissionType(permissionType);
       return recv_createPermissionType();
     }
 
-    public void send_createPermissionType(org.apache.airavata.sharing.registry.models.PermissionType permisionType) throws org.apache.thrift.TException
+    public void send_createPermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType) throws org.apache.thrift.TException
     {
       createPermissionType_args args = new createPermissionType_args();
-      args.setPermisionType(permisionType);
+      args.setPermissionType(permissionType);
       sendBase("createPermissionType", args);
     }
 
-    public boolean recv_createPermissionType() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    public String recv_createPermissionType() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
       createPermissionType_result result = new createPermissionType_result();
       receiveBase(result, "createPermissionType");
@@ -985,16 +1061,16 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "createPermissionType failed: unknown result");
     }
 
-    public boolean updatePermissionType(org.apache.airavata.sharing.registry.models.PermissionType permisionType) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    public boolean updatePermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
-      send_updatePermissionType(permisionType);
+      send_updatePermissionType(permissionType);
       return recv_updatePermissionType();
     }
 
-    public void send_updatePermissionType(org.apache.airavata.sharing.registry.models.PermissionType permisionType) throws org.apache.thrift.TException
+    public void send_updatePermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType) throws org.apache.thrift.TException
     {
       updatePermissionType_args args = new updatePermissionType_args();
-      args.setPermisionType(permisionType);
+      args.setPermissionType(permissionType);
       sendBase("updatePermissionType", args);
     }
 
@@ -1037,16 +1113,16 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "deletePermissionType failed: unknown result");
     }
 
-    public org.apache.airavata.sharing.registry.models.PermissionType getPermissionType(String permisionTypeId) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
+    public org.apache.airavata.sharing.registry.models.PermissionType getPermissionType(String permissionTypeId) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
-      send_getPermissionType(permisionTypeId);
+      send_getPermissionType(permissionTypeId);
       return recv_getPermissionType();
     }
 
-    public void send_getPermissionType(String permisionTypeId) throws org.apache.thrift.TException
+    public void send_getPermissionType(String permissionTypeId) throws org.apache.thrift.TException
     {
       getPermissionType_args args = new getPermissionType_args();
-      args.setPermisionTypeId(permisionTypeId);
+      args.setPermissionTypeId(permissionTypeId);
       sendBase("getPermissionType", args);
     }
 
@@ -1131,7 +1207,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
+      public String getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1262,7 +1338,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public List<org.apache.airavata.sharing.registry.models.Domain> getResult() throws org.apache.thrift.TException {
+      public List<org.apache.airavata.sharing.registry.models.Domain> getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1272,35 +1348,35 @@ public class GovRegistryService {
       }
     }
 
-    public void registerUser(org.apache.airavata.sharing.registry.models.User user, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void createUser(org.apache.airavata.sharing.registry.models.User user, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      registerUser_call method_call = new registerUser_call(user, resultHandler, this, ___protocolFactory, ___transport);
+      createUser_call method_call = new createUser_call(user, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
-    public static class registerUser_call extends org.apache.thrift.async.TAsyncMethodCall {
+    public static class createUser_call extends org.apache.thrift.async.TAsyncMethodCall {
       private org.apache.airavata.sharing.registry.models.User user;
-      public registerUser_call(org.apache.airavata.sharing.registry.models.User user, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      public createUser_call(org.apache.airavata.sharing.registry.models.User user, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.user = user;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("registerUser", org.apache.thrift.protocol.TMessageType.CALL, 0));
-        registerUser_args args = new registerUser_args();
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("createUser", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        createUser_args args = new createUser_args();
         args.setUser(user);
         args.write(prot);
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
+      public String getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
         org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
         org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-        return (new Client(prot)).recv_registerUser();
+        return (new Client(prot)).recv_createUser();
       }
     }
 
@@ -1428,7 +1504,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public List<org.apache.airavata.sharing.registry.models.User> getResult() throws org.apache.thrift.TException {
+      public List<org.apache.airavata.sharing.registry.models.User> getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1460,7 +1536,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
+      public String getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1674,29 +1750,35 @@ public class GovRegistryService {
       }
     }
 
-    public void getGroupMembers(String groupId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void getGroupMembers(String groupId, int offset, int limit, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      getGroupMembers_call method_call = new getGroupMembers_call(groupId, resultHandler, this, ___protocolFactory, ___transport);
+      getGroupMembers_call method_call = new getGroupMembers_call(groupId, offset, limit, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class getGroupMembers_call extends org.apache.thrift.async.TAsyncMethodCall {
       private String groupId;
-      public getGroupMembers_call(String groupId, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private int offset;
+      private int limit;
+      public getGroupMembers_call(String groupId, int offset, int limit, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.groupId = groupId;
+        this.offset = offset;
+        this.limit = limit;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getGroupMembers", org.apache.thrift.protocol.TMessageType.CALL, 0));
         getGroupMembers_args args = new getGroupMembers_args();
         args.setGroupId(groupId);
+        args.setOffset(offset);
+        args.setLimit(limit);
         args.write(prot);
         prot.writeMessageEnd();
       }
 
-      public Map<String,org.apache.airavata.sharing.registry.models.GroupType> getResult() throws org.apache.thrift.TException {
+      public Map<String,org.apache.airavata.sharing.registry.models.GroupChildType> getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1706,6 +1788,76 @@ public class GovRegistryService {
       }
     }
 
+    public void addChildGroupToParentGroup(String childId, String groupId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      addChildGroupToParentGroup_call method_call = new addChildGroupToParentGroup_call(childId, groupId, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class addChildGroupToParentGroup_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String childId;
+      private String groupId;
+      public addChildGroupToParentGroup_call(String childId, String groupId, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.childId = childId;
+        this.groupId = groupId;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("addChildGroupToParentGroup", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        addChildGroupToParentGroup_args args = new addChildGroupToParentGroup_args();
+        args.setChildId(childId);
+        args.setGroupId(groupId);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public boolean getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_addChildGroupToParentGroup();
+      }
+    }
+
+    public void removeChildGroupFromParentGroup(String childId, String groupId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      removeChildGroupFromParentGroup_call method_call = new removeChildGroupFromParentGroup_call(childId, groupId, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class removeChildGroupFromParentGroup_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String childId;
+      private String groupId;
+      public removeChildGroupFromParentGroup_call(String childId, String groupId, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.childId = childId;
+        this.groupId = groupId;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("removeChildGroupFromParentGroup", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        removeChildGroupFromParentGroup_args args = new removeChildGroupFromParentGroup_args();
+        args.setChildId(childId);
+        args.setGroupId(groupId);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public boolean getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_removeChildGroupFromParentGroup();
+      }
+    }
+
     public void createEntityType(org.apache.airavata.sharing.registry.models.EntityType entityType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
       createEntityType_call method_call = new createEntityType_call(entityType, resultHandler, this, ___protocolFactory, ___transport);
@@ -1728,7 +1880,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
+      public String getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1862,7 +2014,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public List<org.apache.airavata.sharing.registry.models.EntityType> getResult() throws org.apache.thrift.TException {
+      public List<org.apache.airavata.sharing.registry.models.EntityType> getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1872,35 +2024,35 @@ public class GovRegistryService {
       }
     }
 
-    public void registerEntity(org.apache.airavata.sharing.registry.models.Entity entity, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void createEntity(org.apache.airavata.sharing.registry.models.Entity entity, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      registerEntity_call method_call = new registerEntity_call(entity, resultHandler, this, ___protocolFactory, ___transport);
+      createEntity_call method_call = new createEntity_call(entity, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
-    public static class registerEntity_call extends org.apache.thrift.async.TAsyncMethodCall {
+    public static class createEntity_call extends org.apache.thrift.async.TAsyncMethodCall {
       private org.apache.airavata.sharing.registry.models.Entity entity;
-      public registerEntity_call(org.apache.airavata.sharing.registry.models.Entity entity, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      public createEntity_call(org.apache.airavata.sharing.registry.models.Entity entity, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.entity = entity;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("registerEntity", org.apache.thrift.protocol.TMessageType.CALL, 0));
-        registerEntity_args args = new registerEntity_args();
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("createEntity", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        createEntity_args args = new createEntity_args();
         args.setEntity(entity);
         args.write(prot);
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
+      public String getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
         org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
         org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-        return (new Client(prot)).recv_registerEntity();
+        return (new Client(prot)).recv_createEntity();
       }
     }
 
@@ -2044,29 +2196,29 @@ public class GovRegistryService {
       }
     }
 
-    public void createPermissionType(org.apache.airavata.sharing.registry.models.PermissionType permisionType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void createPermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      createPermissionType_call method_call = new createPermissionType_call(permisionType, resultHandler, this, ___protocolFactory, ___transport);
+      createPermissionType_call method_call = new createPermissionType_call(permissionType, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class createPermissionType_call extends org.apache.thrift.async.TAsyncMethodCall {
-      private org.apache.airavata.sharing.registry.models.PermissionType permisionType;
-      public createPermissionType_call(org.apache.airavata.sharing.registry.models.PermissionType permisionType, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private org.apache.airavata.sharing.registry.models.PermissionType permissionType;
+      public createPermissionType_call(org.apache.airavata.sharing.registry.models.PermissionType permissionType, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
-        this.permisionType = permisionType;
+        this.permissionType = permissionType;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("createPermissionType", org.apache.thrift.protocol.TMessageType.CALL, 0));
         createPermissionType_args args = new createPermissionType_args();
-        args.setPermisionType(permisionType);
+        args.setPermissionType(permissionType);
         args.write(prot);
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
+      public String getResult() throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2076,24 +2228,24 @@ public class GovRegistryService {
       }
     }
 
-    public void updatePermissionType(org.apache.airavata.sharing.registry.models.PermissionType permisionType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void updatePermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      updatePermissionType_call method_call = new updatePermissionType_call(permisionType, resultHandler, this, ___protocolFactory, ___transport);
+      updatePermissionType_call method_call = new updatePermissionType_call(permissionType, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class updatePermissionType_call extends org.apache.thrift.async.TAsyncMethodCall {
-      private org.apache.airavata.sharing.registry.models.PermissionType permisionType;
-      public updatePermissionType_call(org.apache.airavata.sharing.registry.models.PermissionType permisionType, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private org.apache.airavata.sharing.registry.models.PermissionType permissionType;
+      public updatePermissionType_call(org.apache.airavata.sharing.registry.models.PermissionType permissionType, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
-        this.permisionType = permisionType;
+        this.permissionType = permissionType;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("updatePermissionType", org.apache.thrift.protocol.TMessageType.CALL, 0));
         updatePermissionType_args args = new updatePermissionType_args();
-        args.setPermisionType(permisionType);
+        args.setPermissionType(permissionType);
         args.write(prot);
         prot.writeMessageEnd();
       }
@@ -2140,24 +2292,24 @@ public class GovRegistryService {
       }
     }
 
-    public void getPermissionType(String permisionTypeId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void getPermissionType(String permissionTypeId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      getPermissionType_call method_call = new getPermissionType_call(permisionTypeId, resultHandler, this, ___protocolFactory, ___transport);
+      getPermissionType_call method_call = new getPermissionType_call(permissionTypeId, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class getPermissionType_call extends org.apache.thrift.async.TAsyncMethodCall {
-      private String permisionTypeId;
-      public getPermissionType_call(String permisionTypeId, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private String permissionTypeId;
+      public getPermissionType_call(String permissionTypeId, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
-        this.permisionTypeId = permisionTypeId;
+        this.permissionTypeId = permissionTypeId;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getPermissionType", org.apache.thrift.protocol.TMessageType.CALL, 0));
         getPermissionType_args args = new getPermissionType_args();
-        args.setPermisionTypeId(permisionTypeId);
+        args.setPermissionTypeId(permissionTypeId);
         args.write(prot);
         prot.writeMessageEnd();
       }
@@ -2228,7 +2380,7 @@ public class GovRegistryService {
       processMap.put("deleteDomain", new deleteDomain());
       processMap.put("getDomain", new getDomain());
       processMap.put("getDomains", new getDomains());
-      processMap.put("registerUser", new registerUser());
+      processMap.put("createUser", new createUser());
       processMap.put("updatedUser", new updatedUser());
       processMap.put("deleteUser", new deleteUser());
       processMap.put("getUser", new getUser());
@@ -2241,12 +2393,14 @@ public class GovRegistryService {
       processMap.put("addUsersToGroup", new addUsersToGroup());
       processMap.put("removeUsersFromGroup", new removeUsersFromGroup());
       processMap.put("getGroupMembers", new getGroupMembers());
+      processMap.put("addChildGroupToParentGroup", new addChildGroupToParentGroup());
+      processMap.put("removeChildGroupFromParentGroup", new removeChildGroupFromParentGroup());
       processMap.put("createEntityType", new createEntityType());
       processMap.put("updateEntityType", new updateEntityType());
       processMap.put("deleteEntityType", new deleteEntityType());
       processMap.put("getEntityType", new getEntityType());
       processMap.put("getEntityTypes", new getEntityTypes());
-      processMap.put("registerEntity", new registerEntity());
+      processMap.put("createEntity", new createEntity());
       processMap.put("updateEntity", new updateEntity());
       processMap.put("deleteEntity", new deleteEntity());
       processMap.put("getEntity", new getEntity());
@@ -2276,7 +2430,6 @@ public class GovRegistryService {
         createDomain_result result = new createDomain_result();
         try {
           result.success = iface.createDomain(args.domain);
-          result.setSuccessIsSet(true);
         } catch (org.apache.airavata.sharing.registry.models.GovRegistryException gre) {
           result.gre = gre;
         }
@@ -2373,29 +2526,32 @@ public class GovRegistryService {
 
       public getDomains_result getResult(I iface, getDomains_args args) throws org.apache.thrift.TException {
         getDomains_result result = new getDomains_result();
-        result.success = iface.getDomains(args.offset, args.limit);
+        try {
+          result.success = iface.getDomains(args.offset, args.limit);
+        } catch (org.apache.airavata.sharing.registry.models.GovRegistryException gre) {
+          result.gre = gre;
+        }
         return result;
       }
     }
 
-    public static class registerUser<I extends Iface> extends org.apache.thrift.ProcessFunction<I, registerUser_args> {
-      public registerUser() {
-        super("registerUser");
+    public static class createUser<I extends Iface> extends org.apache.thrift.ProcessFunction<I, createUser_args> {
+      public createUser() {
+        super("createUser");
       }
 
-      public registerUser_args getEmptyArgsInstance() {
-        return new registerUser_args();
+      public createUser_args getEmptyArgsInstance() {
+        return new createUser_args();
       }
 
       protected boolean isOneway() {
         return false;
       }
 
-      public registerUser_result getResult(I iface, registerUser_args args) throws org.apache.thrift.TException {
-        registerUser_result result = new registerUser_result();
+      public createUser_result getResult(I iface, createUser_args args) throws org.apache.thrift.TException {
+        createUser_result result = new createUser_result();
         try {
-          result.success = iface.registerUser(args.user);
-          result.setSuccessIsSet(true);
+          result.success = iface.createUser(args.user);
         } catch (org.apache.airavata.sharing.registry.models.GovRegistryException gre) {
           result.gre = gre;
         }
@@ -2492,7 +2648,11 @@ public class GovRegistryService {
 
       public getUsers_result getResult(I iface, getUsers_args args) throws org.apache.thrift.TException {
         getUsers_result result = new getUsers_result();
-        result.success = iface.getUsers(args.domain, args.offset, args.limit);
+        try {
+          result.success = iface.getUsers(args.domain, args.offset, args.limit);
+        } catch (org.apache.airavata.sharing.registry.models.GovRegistryException gre) {
+          result.gre = gre;
+        }
         return result;
       }
     }
@@ -2514,7 +2674,6 @@ public class GovRegistryService {
         createGroup_result result = new createGroup_result();
         try {
           result.success = iface.createGroup(args.group);
-          result.setSuccessIsSet(true);
         } catch (org.apache.airavata.sharing.registry.models.GovRegistryException gre) {
           result.gre = gre;
         }
@@ -2681,7 +2840,61 @@ public class GovRegistryService {
 
       public getGroupMembers_result getResult(I iface, getGroupMembers_args args) throws org.apache.thrift.TException {
         getGroupMembers_result result = new getGroupMembers_result();
-        result.success = iface.getGroupMembers(args.groupId);
+        try {
+          result.success = iface.getGroupMembers(args.groupId, args.offset, args.limit);
+        } catch (org.apache.airavata.sharing.registry.models.GovRegistryException gre) {
+          result.gre = gre;
+        }
+        return result;
+      }
+    }
+
+    public static class addChildGroupToParentGroup<I extends Iface> extends org.apache.thrift.ProcessFunction<I, addChildGroupToParentGroup_args> {
+      public addChildGroupToParentGroup() {
+        super("addChildGroupToParentGroup");
+      }
+
+      public addChildGroupToParentGroup_args getEmptyArgsInstance() {
+        return new addChildGroupToParentGroup_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public addChildGroupToParentGroup_result getResult(I iface, addChildGroupToParentGroup_args args) throws org.apache.thrift.TException {
+        addChildGroupToParentGroup_result result = new addChildGroupToParentGroup_result();
+        try {
+          result.success = iface.addChildGroupToParentGroup(args.childId, args.groupId);
+          result.setSuccessIsSet(true);
+        } catch (org.apache.airavata.sharing.registry.models.GovRegistryException gre) {
+          result.gre = gre;
+        }
+        return result;
+      }
+    }
+
+    public static class removeChildGroupFromParentGroup<I extends Iface> extends org.apache.thrift.ProcessFunction<I, removeChildGroupFromParentGroup_args> {
+      public removeChildGroupFromParentGroup() {
+        super("removeChildGroupFromParentGroup");
+      }
+
+      public removeChildGroupFromParentGroup_args getEmptyArgsInstance() {
+        return new removeChildGroupFromParentGroup_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public removeChildGroupFromParentGroup_result getResult(I iface, removeChildGroupFromParentGroup_args args) throws org.apache.thrift.TException {
+        removeChildGroupFromParentGroup_result result = new removeChildGroupFromParentGroup_result();
+        try {
+          result.success = iface.removeChildGroupFromParentGroup(args.childId, args.groupId);
+          result.setSuccessIsSet(true);
+        } catch (org.apache.airavata.sharing.registry.models.GovRegistryException gre) {
+          result.gre = gre;
+        }
         return result;
       }
     }
@@ -2703,7 +2916,6 @@ public class GovRegistryService {
         createEntityType_result result = new createEntityType_result();
         try {
           result.success = iface.createEntityType(args.entityType);
-          result.setSuccessIsSet(true);
         } catch (org.apache.airavata.sharing.registry.models.GovRegistryException gre) {
           result.gre = gre;
         }
@@ -2800,29 +3012,32 @@ public class GovRegistryService {
 
       public getEntityTypes_result getResult(I iface, getEntityTypes_args args) throws org.apache.thrift.TException {
         getEntityTypes_result result = new getEntityTypes_result();
-        result.success = iface.getEntityTypes(args.domain, args.offset, args.limit);
+        try {
+          result.success = iface.getEntityTypes(args.domain, args.offset, args.limit);
+        } catch (org.apache.airavata.sharing.registry.models.GovRegistryException gre) {
+          result.gre = gre;
+        }
         return result;
       }
     }
 
-    public static class registerEntity<I extends Iface> extends org.apache.thrift.ProcessFunction<I, registerEntity_args> {
-      public registerEntity() {
-        super("registerEntity");
+    public static class createEntity<I extends Iface> extends org.apache.thrift.ProcessFunction<I, createEntity_args> {
+      public createEntity() {
+        super("createEntity");
       }
 
-      public registerEntity_args getEmptyArgsInstance() {
-        return new registerEntity_args();
+      public createEntity_args getEmptyArgsInstance() {
+        return new createEntity_args();
       }
 
       protected boolean isOneway() {
         return false;
       }
 
-      public registerEntity_result getResult(I iface, registerEntity_args args) throws org.apache.thrift.TException {
-        registerEntity_result result = new registerEntity_result();
+      public createEntity_result getResult(I iface, createEntity_args args) throws org.apache.thrift.TException {
+        createEntity_result result = new createEntity_result();
         try {
-          result.success = iface.registerEntity(args.entity);
-          result.setSuccessIsSet(true);
+          result.success = iface.createEntity(args.entity);
         } catch (org.apache.airavata.sharing.registry.models.GovRegistryException gre) {
           result.gre = gre;
         }
@@ -2944,8 +3159,7 @@ public class GovRegistryService {
       public createPermissionType_result getResult(I iface, createPermissionType_args args) throws org.apache.thrift.TException {
         createPermissionType_result result = new createPermissionType_result();
         try {
-          result.success = iface.createPermissionType(args.permisionType);
-          result.setSuccessIsSet(true);
+          result.success = iface.createPermissionType(args.permissionType);
         } catch (org.apache.airavata.sharing.registry.models.GovRegistryException gre) {
           result.gre = gre;
         }
@@ -2969,7 +3183,7 @@ public class GovRegistryService {
       public updatePermissionType_result getResult(I iface, updatePermissionType_args args) throws org.apache.thrift.TException {
         updatePermissionType_result result = new updatePermissionType_result();
         try {
-          result.success = iface.updatePermissionType(args.permisionType);
+          result.success = iface.updatePermissionType(args.permissionType);
           result.setSuccessIsSet(true);
         } catch (org.apache.airavata.sharing.registry.models.GovRegistryException gre) {
           result.gre = gre;
@@ -3019,7 +3233,7 @@ public class GovRegistryService {
       public getPermissionType_result getResult(I iface, getPermissionType_args args) throws org.apache.thrift.TException {
         getPermissionType_result result = new getPermissionType_result();
         try {
-          result.success = iface.getPermissionType(args.permisionTypeId);
+          result.success = iface.getPermissionType(args.permissionTypeId);
         } catch (org.apache.airavata.sharing.registry.models.GovRegistryException gre) {
           result.gre = gre;
         }
@@ -3069,7 +3283,7 @@ public class GovRegistryService {
       processMap.put("deleteDomain", new deleteDomain());
       processMap.put("getDomain", new getDomain());
       processMap.put("getDomains", new getDomains());
-      processMap.put("registerUser", new registerUser());
+      processMap.put("createUser", new createUser());
       processMap.put("updatedUser", new updatedUser());
       processMap.put("deleteUser", new deleteUser());
       processMap.put("getUser", new getUser());
@@ -3082,12 +3296,14 @@ public class GovRegistryService {
       processMap.put("addUsersToGroup", new addUsersToGroup());
       processMap.put("removeUsersFromGroup", new removeUsersFromGroup());
       processMap.put("getGroupMembers", new getGroupMembers());
+      processMap.put("addChildGroupToParentGroup", new addChildGroupToParentGroup());
+      processMap.put("removeChildGroupFromParentGroup", new removeChildGroupFromParentGroup());
       processMap.put("createEntityType", new createEntityType());
       processMap.put("updateEntityType", new updateEntityType());
       processMap.put("deleteEntityType", new deleteEntityType());
       processMap.put("getEntityType", new getEntityType());
       processMap.put("getEntityTypes", new getEntityTypes());
-      processMap.put("registerEntity", new registerEntity());
+      processMap.put("createEntity", new createEntity());
       processMap.put("updateEntity", new updateEntity());
       processMap.put("deleteEntity", new deleteEntity());
       processMap.put("getEntity", new getEntity());
@@ -3100,7 +3316,7 @@ public class GovRegistryService {
       return processMap;
     }
 
-    public static class createDomain<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, createDomain_args, Boolean> {
+    public static class createDomain<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, createDomain_args, String> {
       public createDomain() {
         super("createDomain");
       }
@@ -3109,13 +3325,12 @@ public class GovRegistryService {
         return new createDomain_args();
       }
 
-      public AsyncMethodCallback<Boolean> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+      public AsyncMethodCallback<String> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
-        return new AsyncMethodCallback<Boolean>() { 
-          public void onComplete(Boolean o) {
+        return new AsyncMethodCallback<String>() { 
+          public void onComplete(String o) {
             createDomain_result result = new createDomain_result();
             result.success = o;
-            result.setSuccessIsSet(true);
             try {
               fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
               return;
@@ -3153,7 +3368,7 @@ public class GovRegistryService {
         return false;
       }
 
-      public void start(I iface, createDomain_args args, org.apache.thrift.async.AsyncMethodCallback<Boolean> resultHandler) throws TException {
+      public void start(I iface, createDomain_args args, org.apache.thrift.async.AsyncMethodCallback<String> resultHandler) throws TException {
         iface.createDomain(args.domain,resultHandler);
       }
     }
@@ -3358,6 +3573,12 @@ public class GovRegistryService {
             byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
             org.apache.thrift.TBase msg;
             getDomains_result result = new getDomains_result();
+            if (e instanceof org.apache.airavata.sharing.registry.models.GovRegistryException) {
+                        result.gre = (org.apache.airavata.sharing.registry.models.GovRegistryException) e;
+                        result.setGreIsSet(true);
+                        msg = result;
+            }
+             else 
             {
               msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
               msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
@@ -3382,22 +3603,21 @@ public class GovRegistryService {
       }
     }
 
-    public static class registerUser<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, registerUser_args, Boolean> {
-      public registerUser() {
-        super("registerUser");
+    public static class createUser<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, createUser_args, String> {
+      public createUser() {
+        super("createUser");
       }
 
-      public registerUser_args getEmptyArgsInstance() {
-        return new registerUser_args();
+      public createUser_args getEmptyArgsInstance() {
+        return new createUser_args();
       }
 
-      public AsyncMethodCallback<Boolean> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+      public AsyncMethodCallback<String> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
-        return new AsyncMethodCallback<Boolean>() { 
-          public void onComplete(Boolean o) {
-            registerUser_result result = new registerUser_result();
+        return new AsyncMethodCallback<String>() { 
+          public void onComplete(String o) {
+            createUser_result result = new createUser_result();
             result.success = o;
-            result.setSuccessIsSet(true);
             try {
               fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
               return;
@@ -3409,7 +3629,7 @@ public class GovRegistryService {
           public void onError(Exception e) {
             byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
             org.apache.thrift.TBase msg;
-            registerUser_result result = new registerUser_result();
+            createUser_result result = new createUser_result();
             if (e instanceof org.apache.airavata.sharing.registry.models.GovRegistryException) {
                         result.gre = (org.apache.airavata.sharing.registry.models.GovRegistryException) e;
                         result.setGreIsSet(true);
@@ -3435,8 +3655,8 @@ public class GovRegistryService {
         return false;
       }
 
-      public void start(I iface, registerUser_args args, org.apache.thrift.async.AsyncMethodCallback<Boolean> resultHandler) throws TException {
-        iface.registerUser(args.user,resultHandler);
+      public void start(I iface, createUser_args args, org.apache.thrift.async.AsyncMethodCallback<String> resultHandler) throws TException {
+        iface.createUser(args.user,resultHandler);
       }
     }
 
@@ -3640,6 +3860,12 @@ public class GovRegistryService {
             byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
             org.apache.thrift.TBase msg;
             getUsers_result result = new getUsers_result();
+            if (e instanceof org.apache.airavata.sharing.registry.models.GovRegistryException) {
+                        result.gre = (org.apache.airavata.sharing.registry.models.GovRegistryException) e;
+                        result.setGreIsSet(true);
+                        msg = result;
+            }
+             else 
             {
               msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
               msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
@@ -3664,7 +3890,7 @@ public class GovRegistryService {
       }
     }
 
-    public static class createGroup<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, createGroup_args, Boolean> {
+    public static class createGroup<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, createGroup_args, String> {
       public createGroup() {
         super("createGroup");
       }
@@ -3673,13 +3899,12 @@ public class GovRegistryService {
         return new createGroup_args();
       }
 
-      public AsyncMethodCallback<Boolean> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+      public AsyncMethodCallback<String> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
-        return new AsyncMethodCallback<Boolean>() { 
-          public void onComplete(Boolean o) {
+        return new AsyncMethodCallback<String>() { 
+          public void onComplete(String o) {
             createGroup_result result = new createGroup_result();
             result.success = o;
-            result.setSuccessIsSet(true);
             try {
               fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
               return;
@@ -3717,7 +3942,7 @@ public class GovRegistryService {
         return false;
       }
 
-      public void start(I iface, createGroup_args args, org.apache.thrift.async.AsyncMethodCallback<Boolean> resultHandler) throws TException {
+      public void start(I iface, createGroup_args args, org.apache.thrift.async.AsyncMethodCallback<String> resultHandler) throws TException {
         iface.createGroup(args.group,resultHandler);
       }
     }
@@ -4062,7 +4287,7 @@ public class GovRegistryService {
       }
     }
 
-    public static class getGroupMembers<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getGroupMembers_args, Map<String,org.apache.airavata.sharing.registry.models.GroupType>> {
+    public static class getGroupMembers<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getGroupMembers_args, Map<String,org.apache.airavata.sharing.registry.models.GroupChildType>> {
       public getGroupMembers() {
         super("getGroupMembers");
       }
@@ -4071,10 +4296,10 @@ public class GovRegistryService {
         return new getGroupMembers_args();
       }
 
-      public AsyncMethodCallback<Map<String,org.apache.airavata.sharing.registry.models.GroupType>> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+      public AsyncMethodCallback<Map<String,org.apache.airavata.sharing.registry.models.GroupChildType>> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
-        return new AsyncMethodCallback<Map<String,org.apache.airavata.sharing.registry.models.GroupType>>() { 
-          public void onComplete(Map<String,org.apache.airavata.sharing.registry.models.GroupType> o) {
+        return new AsyncMethodCallback<Map<String,org.apache.airavata.sharing.registry.models.GroupChildType>>() { 
+          public void onComplete(Map<String,org.apache.airavata.sharing.registry.models.GroupChildType> o) {
             getGroupMembers_result result = new getGroupMembers_result();
             result.success = o;
             try {
@@ -4089,58 +4314,6 @@ public class GovRegistryService {
             byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
             org.apache.thrift.TBase msg;
             getGroupMembers_result result = new getGroupMembers_result();
-            {
-              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
-              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
-            }
-            try {
-              fcall.sendResponse(fb,msg,msgType,seqid);
-              return;
-            } catch (Exception ex) {
-              LOGGER.error("Exception writing to internal frame buffer", ex);
-            }
-            fb.close();
-          }
-        };
-      }
-
-      protected boolean isOneway() {
-        return false;
-      }
-
-      public void start(I iface, getGroupMembers_args args, org.apache.thrift.async.AsyncMethodCallback<Map<String,org.apache.airavata.sharing.registry.models.GroupType>> resultHandler) throws TException {
-        iface.getGroupMembers(args.groupId,resultHandler);
-      }
-    }
-
-    public static class createEntityType<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, createEntityType_args, Boolean> {
-      public createEntityType() {
-        super("createEntityType");
-      }
-
-      public createEntityType_args getEmptyArgsInstance() {
-        return new createEntityType_args();
-      }
-
-      public AsyncMethodCallback<Boolean> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
-        final org.apache.thrift.AsyncProcessFunction fcall = this;
-        return new AsyncMethodCallback<Boolean>() { 
-          public void onComplete(Boolean o) {
-            createEntityType_result result = new createEntityType_result();
-            result.success = o;
-            result.setSuccessIsSet(true);
-            try {
-              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
-              return;
-            } catch (Exception e) {
-              LOGGER.error("Exception writing to internal frame buffer", e);
-            }
-            fb.close();
-          }
-          public void onError(Exception e) {
-            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
-            org.apache.thrift.TBase msg;
-            createEntityType_result result = new createEntityType_result();
             if (e instanceof org.apache.airavata.sharing.registry.models.GovRegistryException) {
                         result.gre = (org.apache.airavata.sharing.registry.models.GovRegistryException) e;
                         result.setGreIsSet(true);
@@ -4166,25 +4339,25 @@ public class GovRegistryService {
         return false;
       }
 
-      public void start(I iface, createEntityType_args args, org.apache.thrift.async.AsyncMethodCallback<Boolean> resultHandler) throws TException {
-        iface.createEntityType(args.entityType,resultHandler);
+      public void start(I iface, getGroupMembers_args args, org.apache.thrift.async.AsyncMethodCallback<Map<String,org.apache.airavata.sharing.registry.models.GroupChildType>> resultHandler) throws TException {
+        iface.getGroupMembers(args.groupId, args.offset, args.limit,resultHandler);
       }
     }
 
-    public static class updateEntityType<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, updateEntityType_args, Boolean> {
-      public updateEntityType() {
-        super("updateEntityType");
+    public static class addChildGroupToParentGroup<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, addChildGroupToParentGroup_args, Boolean> {
+      public addChildGroupToParentGroup() {
+        super("addChildGroupToParentGroup");
       }
 
-      public updateEntityType_args getEmptyArgsInstance() {
-        return new updateEntityType_args();
+      public addChildGroupToParentGroup_args getEmptyArgsInstance() {
+        return new addChildGroupToParentGroup_args();
       }
 
       public AsyncMethodCallback<Boolean> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
         return new AsyncMethodCallback<Boolean>() { 
           public void onComplete(Boolean o) {
-            updateEntityType_result result = new updateEntityType_result();
+            addChildGroupToParentGroup_result result = new addChildGroupToParentGroup_result();
             result.success = o;
             result.setSuccessIsSet(true);
             try {
@@ -4198,7 +4371,7 @@ public class GovRegistryService {
           public void onError(Exception e) {
             byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
             org.apache.thrift.TBase msg;
-            updateEntityType_result result = new updateEntityType_result();
+            addChildGroupToParentGroup_result result = new addChildGroupToParentGroup_result();
             if (e instanceof org.apache.airavata.sharing.registry.models.GovRegistryException) {
                         result.gre = (org.apache.airavata.sharing.registry.models.GovRegistryException) e;
                         result.setGreIsSet(true);
@@ -4224,25 +4397,25 @@ public class GovRegistryService {
         return false;
       }
 
-      public void start(I iface, updateEntityType_args args, org.apache.thrift.async.AsyncMethodCallback<Boolean> resultHandler) throws TException {
-        iface.updateEntityType(args.entityType,resultHandler);
+      public void start(I iface, addChildGroupToParentGroup_args args, org.apache.thrift.async.AsyncMethodCallback<Boolean> resultHandler) throws TException {
+        iface.addChildGroupToParentGroup(args.childId, args.groupId,resultHandler);
       }
     }
 
-    public static class deleteEntityT

<TRUNCATED>