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/04 19:42:08 UTC

[2/2] airavata git commit: implementing sharing and revoking

implementing sharing and revoking


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

Branch: refs/heads/airavata-gov-registry
Commit: 244e8416ede08785ec1be3c71240883622c314d7
Parents: a99f766
Author: scnakandala <su...@gmail.com>
Authored: Tue Oct 4 15:41:57 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Tue Oct 4 15:41:57 2016 -0400

----------------------------------------------------------------------
 .../registry/db/entities/EntityEntity.java      |  22 -
 .../registry/db/entities/EntityTypeEntity.java  |  11 -
 .../db/entities/PermissionTypeEntity.java       |  11 -
 .../registry/db/entities/SharingEntity.java     |  34 +-
 .../registry/db/entities/UserEntity.java        |  11 -
 .../registry/db/entities/UserGroupEntity.java   |  22 -
 .../db/repositories/EntityRepository.java       |  11 +
 .../db/repositories/SharingRepository.java      |  24 +-
 .../sharing/registry/db/utils/DBConstants.java  |  13 +
 .../server/GovRegistryServerHandler.java        | 160 +++--
 .../src/main/resources/gov-registry.sql         |   4 +-
 .../registry/GovRegistryServerHandlerTest.java  |  45 +-
 .../sharing/registry/db/RepositoriesTest.java   | 355 -----------
 .../sharing/registry/models/Domain.java         |   2 +-
 .../sharing/registry/models/Entity.java         |   2 +-
 .../sharing/registry/models/EntityType.java     |   2 +-
 .../registry/models/GovRegistryException.java   |   2 +-
 .../registry/models/GroupMembership.java        |   2 +-
 .../sharing/registry/models/PermissionType.java |   2 +-
 .../sharing/registry/models/Sharing.java        | 139 +++--
 .../airavata/sharing/registry/models/User.java  |   2 +-
 .../sharing/registry/models/UserGroup.java      |   2 +-
 .../service/cpi/GovRegistryService.java         | 592 +++++++++----------
 .../thrift_models/sharing_cpi.thrift            |   8 +-
 .../thrift_models/sharing_models.thrift         |   2 +-
 25 files changed, 598 insertions(+), 882 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/244e8416/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityEntity.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityEntity.java b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityEntity.java
index 2658caa..de8abf4 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityEntity.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityEntity.java
@@ -41,8 +41,6 @@ public class EntityEntity {
     private String fullText;
     private Long createdTime;
     private Long updatedTime;
-    private DomainEntity domainByDomainId;
-    private EntityEntity entityByParentEntityId;
 
     @Id
     @Column(name = "ENTITY_ID")
@@ -191,24 +189,4 @@ public class EntityEntity {
         result = 31 * result + (updatedTime != null ? updatedTime.hashCode() : 0);
         return result;
     }
-
-    @ManyToOne
-    @JoinColumn(name = "DOMAIN_ID", referencedColumnName = "DOMAIN_ID")
-    public DomainEntity getDomainByDomainId() {
-        return domainByDomainId;
-    }
-
-    public void setDomainByDomainId(DomainEntity domainByDomainId) {
-        this.domainByDomainId = domainByDomainId;
-    }
-
-    @ManyToOne
-    @JoinColumn(name = "PARENT_ENTITY_ID", referencedColumnName = "ENTITY_ID")
-    public EntityEntity getEntityByParentEntityId() {
-        return entityByParentEntityId;
-    }
-
-    public void setEntityByParentEntityId(EntityEntity entityByParentEntityId) {
-        this.entityByParentEntityId = entityByParentEntityId;
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/244e8416/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityTypeEntity.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityTypeEntity.java b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityTypeEntity.java
index 371ad77..0b789ed 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityTypeEntity.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityTypeEntity.java
@@ -35,7 +35,6 @@ public class EntityTypeEntity {
     private String description;
     private Long createdTime;
     private Long updatedTime;
-    private DomainEntity domainByDomainId;
 
     @Id
     @Column(name = "ENTITY_TYPE_ID")
@@ -123,14 +122,4 @@ public class EntityTypeEntity {
         result = 31 * result + (updatedTime != null ? updatedTime.hashCode() : 0);
         return result;
     }
-
-    @ManyToOne
-    @JoinColumn(name = "DOMAIN_ID", referencedColumnName = "DOMAIN_ID")
-    public DomainEntity getDomainByDomainId() {
-        return domainByDomainId;
-    }
-
-    public void setDomainByDomainId(DomainEntity domainByDomainId) {
-        this.domainByDomainId = domainByDomainId;
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/244e8416/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/PermissionTypeEntity.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/PermissionTypeEntity.java b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/PermissionTypeEntity.java
index 898093a..c145cbe 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/PermissionTypeEntity.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/PermissionTypeEntity.java
@@ -35,7 +35,6 @@ public class PermissionTypeEntity {
     private String description;
     private Long createdTime;
     private Long updatedTime;
-    private DomainEntity domainByDomainId;
 
     @Id
     @Column(name = "PERMISSION_TYPE_ID")
@@ -123,14 +122,4 @@ public class PermissionTypeEntity {
         result = 31 * result + (updatedTime != null ? updatedTime.hashCode() : 0);
         return result;
     }
-
-    @ManyToOne
-    @JoinColumn(name = "DOMAIN_ID", referencedColumnName = "DOMAIN_ID")
-    public DomainEntity getDomainByDomainId() {
-        return domainByDomainId;
-    }
-
-    public void setDomainByDomainId(DomainEntity domainByDomainId) {
-        this.domainByDomainId = domainByDomainId;
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/244e8416/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingEntity.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingEntity.java b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingEntity.java
index 500d622..077d7cf 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingEntity.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingEntity.java
@@ -35,11 +35,9 @@ public class SharingEntity {
     private String groupId;
     private String groupType;
     private String sharingType;
-    private String inheritedPermissionTypeId;
+    private String inheritedParentId;
     private Long createdTime;
     private Long updatedTime;
-    private PermissionTypeEntity permissionTypeByPermissionTypeId;
-    private EntityTypeEntity entityTypeByEntityTypeId;
 
     @Id
     @Column(name = "PERMISSION_TYPE_ID")
@@ -92,13 +90,13 @@ public class SharingEntity {
     }
 
     @Basic
-    @Column(name = "INHERITED_PARENT_PERMISSION_ID")
-    public String getInheritedPermissionTypeId() {
-        return inheritedPermissionTypeId;
+    @Column(name = "INHERITED_PARENT_ID")
+    public String getInheritedParentId() {
+        return inheritedParentId;
     }
 
-    public void setInheritedPermissionTypeId(String inheritedPermissionTypeId) {
-        this.inheritedPermissionTypeId = inheritedPermissionTypeId;
+    public void setInheritedParentId(String inheritedParentId) {
+        this.inheritedParentId = inheritedParentId;
     }
 
     @Basic
@@ -145,24 +143,4 @@ public class SharingEntity {
         result = 31 * result + (groupId != null ? groupId.hashCode() : 0);
         return result;
     }
-
-    @ManyToOne
-    @JoinColumn(name = "PERMISSION_TYPE_ID", referencedColumnName = "PERMISSION_TYPE_ID", nullable = false)
-    public PermissionTypeEntity getPermissionTypeByPermissionTypeId() {
-        return permissionTypeByPermissionTypeId;
-    }
-
-    public void setPermissionTypeByPermissionTypeId(PermissionTypeEntity permissionTypeByPermissionTypeId) {
-        this.permissionTypeByPermissionTypeId = permissionTypeByPermissionTypeId;
-    }
-
-    @ManyToOne
-    @JoinColumn(name = "ENTITY_TYPE_ID", referencedColumnName = "ENTITY_TYPE_ID")
-    public EntityTypeEntity getEntityTypeByEntityTypeId() {
-        return entityTypeByEntityTypeId;
-    }
-
-    public void setEntityTypeByEntityTypeId(EntityTypeEntity entityTypeByEntityTypeId) {
-        this.entityTypeByEntityTypeId = entityTypeByEntityTypeId;
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/244e8416/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserEntity.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserEntity.java b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserEntity.java
index ed88230..256d2e7 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserEntity.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserEntity.java
@@ -34,7 +34,6 @@ public class UserEntity {
     private String userName;
     private Long createdTime;
     private Long updatedTime;
-    private DomainEntity domainByDomainId;
 
     @Id
     @Column(name = "USER_ID")
@@ -110,14 +109,4 @@ public class UserEntity {
         result = 31 * result + (updatedTime != null ? updatedTime.hashCode() : 0);
         return result;
     }
-
-    @ManyToOne
-    @JoinColumn(name = "DOMAIN_ID", referencedColumnName = "DOMAIN_ID")
-    public DomainEntity getDomainByDomainId() {
-        return domainByDomainId;
-    }
-
-    public void setDomainByDomainId(DomainEntity domainByDomainId) {
-        this.domainByDomainId = domainByDomainId;
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/244e8416/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserGroupEntity.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserGroupEntity.java b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserGroupEntity.java
index 3ccd0c9..10d901a 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserGroupEntity.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserGroupEntity.java
@@ -37,8 +37,6 @@ public class UserGroupEntity {
     private String groupType;
     private Long createdTime;
     private Long updatedTime;
-    private DomainEntity domainByDomainId;
-    private UserEntity userByOwnerId;
 
     @Id
     @Column(name = "GROUP_ID")
@@ -149,24 +147,4 @@ public class UserGroupEntity {
         result = 31 * result + (updatedTime != null ? updatedTime.hashCode() : 0);
         return result;
     }
-
-    @ManyToOne
-    @JoinColumn(name = "DOMAIN_ID", referencedColumnName = "DOMAIN_ID")
-    public DomainEntity getDomainByDomainId() {
-        return domainByDomainId;
-    }
-
-    public void setDomainByDomainId(DomainEntity domainByDomainId) {
-        this.domainByDomainId = domainByDomainId;
-    }
-
-    @ManyToOne
-    @JoinColumn(name = "OWNER_ID", referencedColumnName = "USER_ID")
-    public UserEntity getUserByOwnerId() {
-        return userByOwnerId;
-    }
-
-    public void setUserByOwnerId(UserEntity userByOwnerId) {
-        this.userByOwnerId = userByOwnerId;
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/244e8416/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityRepository.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityRepository.java b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityRepository.java
index 353b006..86708c3 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityRepository.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityRepository.java
@@ -21,14 +21,25 @@
 package org.apache.airavata.sharing.registry.db.repositories;
 
 import org.apache.airavata.sharing.registry.db.entities.EntityEntity;
+import org.apache.airavata.sharing.registry.db.utils.DBConstants;
 import org.apache.airavata.sharing.registry.models.Entity;
+import org.apache.airavata.sharing.registry.models.GovRegistryException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.HashMap;
+import java.util.List;
+
 public class EntityRepository extends AbstractRepository<Entity, EntityEntity, String> {
     private final static Logger logger = LoggerFactory.getLogger(EntityRepository.class);
 
     public EntityRepository() {
         super(Entity.class, EntityEntity.class);
     }
+
+    public List<Entity> getChildEntities(String parentId) throws GovRegistryException {
+        HashMap<String, String> filters = new HashMap<>();
+        filters.put(DBConstants.EntityTable.PARENT_ENTITY_ID, parentId);
+        return select(filters, 0, -1);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/244e8416/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/SharingRepository.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/SharingRepository.java b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/SharingRepository.java
index 1c45c31..f1ad871 100644
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/SharingRepository.java
+++ b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/SharingRepository.java
@@ -21,14 +21,36 @@
 package org.apache.airavata.sharing.registry.db.repositories;
 
 import org.apache.airavata.sharing.registry.db.entities.SharingEntity;
+import org.apache.airavata.sharing.registry.db.entities.SharingEntityPK;
+import org.apache.airavata.sharing.registry.db.utils.DBConstants;
+import org.apache.airavata.sharing.registry.models.GovRegistryException;
 import org.apache.airavata.sharing.registry.models.Sharing;
+import org.apache.airavata.sharing.registry.models.SharingType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class SharingRepository extends AbstractRepository<Sharing, SharingEntity, String> {
+import java.util.HashMap;
+import java.util.List;
+
+public class SharingRepository extends AbstractRepository<Sharing, SharingEntity, SharingEntityPK> {
     private final static Logger logger = LoggerFactory.getLogger(SharingRepository.class);
 
     public SharingRepository() {
         super(Sharing.class, SharingEntity.class);
     }
+
+    public List<Sharing> getIndirectSharedChildren(String parentId, String permissionTypeId) throws GovRegistryException {
+        HashMap<String, String> filters = new HashMap<>();
+        filters.put(DBConstants.SharingTable.INHERITED_PARENT_ID, parentId);
+        filters.put(DBConstants.SharingTable.SHARING_TYPE, SharingType.INHERITED.toString());
+        filters.put(DBConstants.SharingTable.PERMISSION_TYPE_ID, permissionTypeId);
+
+        return select(filters, 0, -1);
+    }
+
+    public List<Sharing> getPermissionsForEntity(String entityId) throws GovRegistryException {
+        HashMap<String, String> filters = new HashMap<>();
+        filters.put(DBConstants.SharingTable.ENTITY_ID, entityId);
+        return select(filters, 0, -1);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/244e8416/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 f647216..c8c10b6 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
@@ -64,4 +64,17 @@ public class DBConstants {
         public static String ENTITY_TYPE_ID = "permissionTypeId";
         public static String DOMAIN_ID = "domainId";
     }
+
+    public static class EntityTable {
+        public static String ENTITY_ID = "entityId";
+        public static String PARENT_ENTITY_ID = "parentEntityId";
+    }
+
+    public static class SharingTable {
+        public static String PERMISSION_TYPE_ID = "permissionTypeId";
+        public static String ENTITY_ID = "entityId";
+        public static String GROUP_ID = "groupId";
+        public static String INHERITED_PARENT_ID = "inheritedParentId";
+        public static final String SHARING_TYPE = "sharingType";
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/244e8416/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 58b961a..41d9f29 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
@@ -21,6 +21,7 @@
 package org.apache.airavata.sharing.registry.server;
 
 import org.apache.airavata.sharing.registry.db.entities.GroupMembershipEntityPK;
+import org.apache.airavata.sharing.registry.db.entities.SharingEntityPK;
 import org.apache.airavata.sharing.registry.db.repositories.*;
 import org.apache.airavata.sharing.registry.db.utils.DBConstants;
 import org.apache.airavata.sharing.registry.models.*;
@@ -30,10 +31,7 @@ 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;
+import java.util.*;
 
 public class GovRegistryServerHandler implements GovRegistryService.Iface{
     private final static Logger logger = LoggerFactory.getLogger(GovRegistryServerHandler.class);
@@ -45,6 +43,7 @@ public class GovRegistryServerHandler implements GovRegistryService.Iface{
     private EntityTypeRepository entityTypeRepository;
     private PermissionTypeRepository permissionTypeRepository;
     private EntityRepository entityRepository;
+    private SharingRepository sharingRepository;
 
     public GovRegistryServerHandler(){
         this.domainRepository = new DomainRepository();
@@ -54,6 +53,7 @@ public class GovRegistryServerHandler implements GovRegistryService.Iface{
         this.entityTypeRepository = new EntityTypeRepository();
         this.permissionTypeRepository = new PermissionTypeRepository();
         this.entityRepository = new EntityRepository();
+        this.sharingRepository = new SharingRepository();
     }
 
     /**
@@ -62,7 +62,6 @@ public class GovRegistryServerHandler implements GovRegistryService.Iface{
      */
     @Override
     public String createDomain(Domain domain) throws GovRegistryException, TException {
-        domain.setDomainId(domain.name);
         domain.setCreatedTime(System.currentTimeMillis());
         domain.setUpdatedTime(System.currentTimeMillis());
         domainRepository.create(domain);
@@ -101,7 +100,6 @@ public class GovRegistryServerHandler implements GovRegistryService.Iface{
      */
     @Override
     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);
@@ -158,7 +156,6 @@ public class GovRegistryServerHandler implements GovRegistryService.Iface{
      */
     @Override
     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);
@@ -256,7 +253,6 @@ public class GovRegistryServerHandler implements GovRegistryService.Iface{
      */
     @Override
     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);
@@ -297,7 +293,6 @@ public class GovRegistryServerHandler implements GovRegistryService.Iface{
      */
     @Override
     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);
@@ -337,15 +332,33 @@ public class GovRegistryServerHandler implements GovRegistryService.Iface{
      */
     @Override
     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);
+
+        //creating records for inherited permissions
+        if(entity.getParentEntityId() != null && entity.getParentEntityId() != ""){
+            List<Sharing> sharings = sharingRepository.getPermissionsForEntity(entity.parentEntityId);
+            for(Sharing sharing : sharings){
+                Sharing newSharing = new Sharing();
+                newSharing.setPermissionTypeId(sharing.permissionTypeId);
+                newSharing.setEntityId(entity.entityId);
+                newSharing.setGroupId(sharing.groupId);
+                newSharing.setGroupType(sharing.groupType);
+                newSharing.setSharingType(SharingType.INHERITED);
+                newSharing.setCreatedTime(System.currentTimeMillis());
+                newSharing.setUpdatedTime(System.currentTimeMillis());
+
+                sharingRepository.create(newSharing);
+            }
+        }
+
         return entity.entityId;
     }
 
     @Override
     public boolean updateEntity(Entity entity) throws GovRegistryException, TException {
+        //TODO Check for permission changes
         entity.setUpdatedTime(System.currentTimeMillis());
         Entity oldEntity = entityRepository.get(entity.getEntityId());
         entity.setCreatedTime(oldEntity.createdTime);
@@ -356,6 +369,7 @@ public class GovRegistryServerHandler implements GovRegistryService.Iface{
 
     @Override
     public boolean deleteEntity(String entityId) throws GovRegistryException, TException {
+        //TODO Check for permission changes
         entityRepository.delete(entityId);
         return true;
     }
@@ -370,6 +384,104 @@ public class GovRegistryServerHandler implements GovRegistryService.Iface{
         return null;
     }
 
+    /**
+     * * Sharing Entity with Users and Groups
+     * *
+     *
+     * @param entityId
+     * @param userList
+     * @param permissionType
+     */
+    @Override
+    public boolean shareEntityWithUsers(String entityId, List<String> userList, String permissionTypeId) throws GovRegistryException, TException {
+        return shareEntity(entityId, userList, permissionTypeId, GroupType.SINGLE_USER);
+    }
+
+    @Override
+    public boolean shareEntityWithGroups(String entityId, List<String> groupList, String permissionTypeId) throws GovRegistryException, TException {
+        return shareEntity(entityId, groupList, permissionTypeId, GroupType.MULTI_USER);
+    }
+
+    private boolean shareEntity(String entityId, List<String> groupOrUserList, String permissionTypeId, GroupType groupType)  throws GovRegistryException, TException {
+        //Adding permission for the specified users/groups for the specified entity
+        LinkedList<Entity> temp = new LinkedList<>();
+        for(String userId : groupOrUserList){
+            Sharing sharing = new Sharing();
+            sharing.setPermissionTypeId(permissionTypeId);
+            sharing.setEntityId(entityId);
+            sharing.setGroupId(userId);
+            sharing.setGroupType(groupType);
+            sharing.setSharingType(SharingType.DIRECT);
+            sharing.setCreatedTime(System.currentTimeMillis());
+            sharing.setUpdatedTime(System.currentTimeMillis());
+
+            sharingRepository.create(sharing);
+        }
+
+        //Adding permission for the specified users/groups for all child entities
+        entityRepository.getChildEntities(entityId).stream().forEach(e-> temp.addLast(e));
+        while(temp.size() > 0){
+            Entity entity = temp.pop();
+            String childEntityId = entity.entityId;
+            String parentEntityId = entity.parentEntityId;
+            for(String userId : groupOrUserList){
+                Sharing sharing = new Sharing();
+                sharing.setPermissionTypeId(permissionTypeId);
+                sharing.setEntityId(childEntityId);
+                sharing.setGroupId(userId);
+                sharing.setGroupType(groupType);
+                sharing.setSharingType(SharingType.INHERITED);
+                sharing.setInheritedParentId(parentEntityId);
+                sharing.setCreatedTime(System.currentTimeMillis());
+                sharing.setUpdatedTime(System.currentTimeMillis());
+                sharingRepository.create(sharing);
+                entityRepository.getChildEntities(childEntityId).stream().forEach(e-> temp.addLast(e));
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public boolean revokeEntitySharingFromUsers(String entityId, List<String> userList, String permissionTypeId) throws GovRegistryException, TException {
+        return revokeEntitySharing(entityId, userList, permissionTypeId);
+    }
+
+
+    @Override
+    public boolean revokeEntitySharingFromGroups(String entityId, List<String> groupList, String permissionTypeId) throws GovRegistryException, TException {
+        return revokeEntitySharing(entityId, groupList, permissionTypeId);
+    }
+
+    public boolean revokeEntitySharing(String entityId, List<String> groupOrUserList, String permissionTypeId) throws GovRegistryException {
+        //revoking permission for the entity
+        LinkedList<Sharing> temp = new LinkedList<>();
+        sharingRepository.getIndirectSharedChildren(entityId, permissionTypeId).stream().forEach(s->temp.addLast(s));
+        for(String groupId : groupOrUserList){
+            SharingEntityPK sharingEntityPK = new SharingEntityPK();
+            sharingEntityPK.setEntityId(entityId);
+            sharingEntityPK.setGroupId(groupId);
+            sharingEntityPK.setPermissionTypeId(permissionTypeId);
+
+            sharingRepository.delete(sharingEntityPK);
+        }
+
+        //revoking permission from inheritance
+        while(temp.size() > 0){
+            Sharing sharing = temp.pop();
+            String childEntityId = sharing.entityId;
+            sharingRepository.getIndirectSharedChildren(sharing.entityId, permissionTypeId).stream().forEach(s->temp.addLast(s));
+            for(String groupId : groupOrUserList){
+                SharingEntityPK sharingEntityPK = new SharingEntityPK();
+                sharingEntityPK.setEntityId(childEntityId);
+                sharingEntityPK.setGroupId(groupId);
+                sharingEntityPK.setPermissionTypeId(permissionTypeId);
+
+                sharingRepository.delete(sharingEntityPK);
+            }
+        }
+        return true;
+    }
+
 
 
     private <T> T getUpdatedObject(T oldEntity, T newEntity) throws GovRegistryException {
@@ -413,32 +525,4 @@ public class GovRegistryServerHandler implements GovRegistryService.Iface{
         }
         return hashtable;
     }
-
-    /**
-     * * Sharing Entity with Users and Groups
-     * *
-     *
-     * @param entityId
-     * @param userList
-     * @param permissionType
-     */
-    @Override
-    public boolean shareEntityWithUsers(String entityId, List<String> userList, PermissionType perssionType) throws GovRegistryException, TException {
-        return false;
-    }
-
-    @Override
-    public boolean revokeEntitySharingFromUsers(String entityId, List<String> userList, PermissionType perssionType) throws GovRegistryException, TException {
-        return false;
-    }
-
-    @Override
-    public boolean shareEntityWithGroups(String entityId, List<String> groupList, PermissionType perssionType) throws GovRegistryException, TException {
-        return false;
-    }
-
-    @Override
-    public boolean revokeEntitySharingFromGroups(String entityId, List<String> groupList, PermissionType perssionType) throws GovRegistryException, TException {
-        return false;
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/244e8416/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 6f698f0..617f6e8 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
@@ -118,12 +118,12 @@ CREATE TABLE SHARING (
   GROUP_ID VARCHAR(255) NOT NULL,
   GROUP_TYPE VARCHAR(255) NOT NULL,
   SHARING_TYPE VARCHAR(255) NOT NULL,
-  INHERITED_PARENT_PERMISSION_ID VARCHAR(255),
+  INHERITED_PARENT_ID VARCHAR(255),
   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 (INHERITED_PARENT_PERMISSION_ID) REFERENCES SHARING(PERMISSION_TYPE_ID) ON DELETE CASCADE ON UPDATE CASCADE,
+  FOREIGN KEY (INHERITED_PARENT_ID) REFERENCES ENTITY(ENTITY_ID) ON DELETE CASCADE ON UPDATE CASCADE,
   FOREIGN KEY (GROUP_ID) REFERENCES USER_GROUP(GROUP_ID) ON DELETE CASCADE ON UPDATE CASCADE
 );
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/244e8416/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
index 49522bd..4792619 100644
--- 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
@@ -128,6 +128,7 @@ public class GovRegistryServerHandlerTest {
         //Creating permission types
         PermissionType permissionType1 = new PermissionType();
         String permissionName1 = "READ";
+        permissionType1.setPermissionTypeId(domainId+":"+permissionName1);
         permissionType1.setDomainId(domainId);
         permissionType1.setName(permissionName1);
         permissionType1.setDescription("READ description");
@@ -138,6 +139,7 @@ public class GovRegistryServerHandlerTest {
 
         PermissionType permissionType2 = new PermissionType();
         String permissionName2 = "WRITE";
+        permissionType2.setPermissionTypeId(domainId+":"+permissionName2);
         permissionType2.setDomainId(domainId);
         permissionType2.setName(permissionName2);
         permissionType2.setDescription("WRITE description");
@@ -149,6 +151,7 @@ public class GovRegistryServerHandlerTest {
         //Creating entity types
         EntityType entityType1 = new EntityType();
         String entityType1Name = "Project";
+        entityType1.setEntityTypeId(domainId+":"+entityType1Name);
         entityType1.setDomainId(domainId);
         entityType1.setName(entityType1Name);
         entityType1.setDescription("test entity type");
@@ -159,6 +162,7 @@ public class GovRegistryServerHandlerTest {
 
         EntityType entityType2 = new EntityType();
         String entityType2Name = "Experiment";
+        entityType2.setEntityTypeId(domainId+":"+entityType2Name);
         entityType2.setDomainId(domainId);
         entityType2.setName(entityType2Name);
         entityType2.setDescription("test entity type");
@@ -167,12 +171,24 @@ public class GovRegistryServerHandlerTest {
         String entityTypeId2 = govRegistryServerHandler.createEntityType(entityType2);
         Assert.assertNotNull(entityTypeId2);
 
+        EntityType entityType3 = new EntityType();
+        String entityType3Name = "FileInput";
+        entityType3.setEntityTypeId(domainId+":"+entityType3Name);
+        entityType3.setDomainId(domainId);
+        entityType3.setName(entityType3Name);
+        entityType3.setDescription("file input type");
+        entityType3.setCreatedTime(System.currentTimeMillis());
+        entityType3.setUpdatedTime(System.currentTimeMillis());
+        String entityTypeId3 = govRegistryServerHandler.createEntityType(entityType3);
+        Assert.assertNotNull(entityTypeId3);
+
         //Creating Entities
         Entity entity1 = new Entity();
+        entity1.setEntityId(domainId+":Entity1");
         entity1.setDomainId(domainId);
         entity1.setEntityTypeId(entityTypeId1);
         entity1.setOwnerId(userId1);
-        entity1.setName("Project name");
+        entity1.setName("Project name 1");
         entity1.setDescription("Project description");
         Map<String, String> metadataMap = new HashMap<>();
         metadataMap.put("key", "val");
@@ -185,6 +201,7 @@ public class GovRegistryServerHandlerTest {
         Assert.assertNotNull(entityId1);
 
         Entity entity2 = new Entity();
+        entity2.setEntityId(domainId+":Entity2");
         entity2.setDomainId(domainId);
         entity2.setEntityTypeId(entityTypeId2);
         entity2.setOwnerId(userId1);
@@ -202,6 +219,7 @@ public class GovRegistryServerHandlerTest {
         Assert.assertNotNull(entityId2);
 
         Entity entity3 = new Entity();
+        entity3.setEntityId(domainId+":Entity3");
         entity3.setDomainId(domainId);
         entity3.setEntityTypeId(entityTypeId2);
         entity3.setOwnerId(userId1);
@@ -217,5 +235,30 @@ public class GovRegistryServerHandlerTest {
 
         String entityId3 = govRegistryServerHandler.createEntity(entity3);
         Assert.assertNotNull(entityId3);
+
+        govRegistryServerHandler.shareEntityWithUsers(entityId1, Arrays.asList(userId2), permissionTypeId1);
+        govRegistryServerHandler.shareEntityWithGroups(entityId3, Arrays.asList(groupId2), permissionTypeId1);
+
+        Entity entity4 = new Entity();
+        entity4.setEntityId(domainId+":Entity4");
+        entity4.setDomainId(domainId);
+        entity4.setEntityTypeId(entityTypeId3);
+        entity4.setOwnerId(userId1);
+        entity4.setName("Input name");
+        entity4.setDescription("Input file description");
+        entity4.setParentEntityId(entityId3);
+        metadataMap = new HashMap<>();
+        metadataMap.put("key", "val");
+        entity4.setMetadata(metadataMap);
+        entity4.setFullText("Input File");
+        entity4.setCreatedTime(System.currentTimeMillis());
+        entity4.setUpdatedTime(System.currentTimeMillis());
+
+        String entityId4 = govRegistryServerHandler.createEntity(entity4);
+        Assert.assertNotNull(entityId4);
+
+
+//        govRegistryServerHandler.revokeEntitySharingFromUsers(entityId1, Arrays.asList(userId2), permissionTypeId1);
+//        govRegistryServerHandler.revokeEntitySharingFromGroups(entityId3, Arrays.asList(groupId2), permissionTypeId1);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/244e8416/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/test/java/org/apache/airavata/sharing/registry/db/RepositoriesTest.java
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/test/java/org/apache/airavata/sharing/registry/db/RepositoriesTest.java b/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/test/java/org/apache/airavata/sharing/registry/db/RepositoriesTest.java
deleted file mode 100644
index ed549fd..0000000
--- a/modules/airavata-sharing-registry/airavata-sharing-registry-core/src/test/java/org/apache/airavata/sharing/registry/db/RepositoriesTest.java
+++ /dev/null
@@ -1,355 +0,0 @@
-/*
- *
- * 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.db;
-
-import junit.framework.Assert;
-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.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
-public class RepositoriesTest {
-    private final static Logger logger = LoggerFactory.getLogger(RepositoriesTest.class);
-
-    @Test
-    public void test() throws GovRegistryException {
-
-        //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());
-
-        DomainRepository domainRepository = new DomainRepository();
-        domain = domainRepository.create(domain);
-        Assert.assertNotNull(domain);
-
-        Map<String, String> filters = new HashMap<>();
-        filters.put(DBConstants.DomainTable.DESCRIPTION, "test");
-        Assert.assertTrue(domainRepository.select(filters, 0, 10).size() > 0);
-
-
-        //Creating users
-        User user1 = new User();
-        String userName1 = "test-user." + System.currentTimeMillis();
-        String userId1 = domainId + ":" + userName1;
-        user1.setUserId(userId1);
-        user1.setUserName(userName1);
-        user1.setDomainId(domainId);
-        user1.setCreatedTime(System.currentTimeMillis());
-        user1.setUpdatedTime(System.currentTimeMillis());
-
-        UserRepository userRepository = new UserRepository();
-        user1 = userRepository.create(user1);
-        Assert.assertNotNull(user1);
-
-        User user2 = new User();
-        String userName2 = "test-user." + System.currentTimeMillis();
-        String userId2 = domainId + ":" + userName2;
-        user2.setUserId(userId2);
-        user2.setUserName(userName2);
-        user2.setDomainId(domainId);
-        user2.setCreatedTime(System.currentTimeMillis());
-        user2.setUpdatedTime(System.currentTimeMillis());
-
-        userRepository.create(user2);
-
-        User user3 = new User();
-        String userName3 = "test-user." + System.currentTimeMillis();
-        String userId3 = domainId + ":" + userName3;
-        user3.setUserId(userId3);
-        user3.setUserName(userName3);
-        user3.setDomainId(domainId);
-        user3.setCreatedTime(System.currentTimeMillis());
-        user3.setUpdatedTime(System.currentTimeMillis());
-
-        userRepository.create(user3);
-
-        filters = new HashMap<>();
-        filters.put(DBConstants.UserTable.USER_NAME, "test");
-        Assert.assertTrue(userRepository.select(filters, 0, 10).size() > 0);
-
-        // Creating user groups
-        UserGroup userGroup1 = new UserGroup();
-        String groupName1 = "test-group";
-        String groupId1 = domainId + ":" + groupName1 + "." + System.currentTimeMillis();
-        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());
-
-        UserGroupRepository userGroupRepository = new UserGroupRepository();
-        userGroup1 = userGroupRepository.create(userGroup1);
-        Assert.assertNotNull(userGroup1);
-
-        UserGroup userGroup2 = new UserGroup();
-        String groupName2 = "test-group";
-        String groupId2 = domainId + ":" + groupName2 + "." + System.currentTimeMillis();
-        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());
-
-        userGroupRepository.create(userGroup2);
-
-        UserGroup userGroup3 = new UserGroup();
-        String groupName3 = "test-group";
-        String groupId3 = domainId + ":" + groupName3 + "." + System.currentTimeMillis();
-        userGroup3.setGroupId(groupId3);
-        userGroup3.setDomainId(domainId);
-        userGroup3.setName(groupName3);
-        userGroup3.setDescription("test group description");
-        userGroup3.setOwnerId(userId3);
-        userGroup3.setGroupType(GroupType.MULTI_USER);
-        userGroup3.setCreatedTime(System.currentTimeMillis());
-        userGroup3.setUpdatedTime(System.currentTimeMillis());
-
-        userGroupRepository.create(userGroup3);
-
-        //Creating Groups for users (This is an implementation level abstract)
-        UserGroup ug1 = new UserGroup();
-        String ug1Name = "user1-group-name";
-        String ug1GroupId = userId1;
-        ug1.setGroupId(ug1GroupId);
-        ug1.setDomainId(domainId);
-        ug1.setName(ug1Name);
-        ug1.setDescription("test group description");
-        ug1.setOwnerId(userId1);
-        ug1.setGroupType(GroupType.SINGLE_USER);
-        ug1.setCreatedTime(System.currentTimeMillis());
-        ug1.setUpdatedTime(System.currentTimeMillis());
-
-        userGroupRepository.create(ug1);
-
-        UserGroup ug2 = new UserGroup();
-        String ug2Name = "user2-group-name";
-        String ug2GroupId = userId2;
-        ug2.setGroupId(ug2GroupId);
-        ug2.setDomainId(domainId);
-        ug2.setName(ug2Name);
-        ug2.setDescription("test group description");
-        ug2.setOwnerId(userId1);
-        ug2.setGroupType(GroupType.SINGLE_USER);
-        ug2.setCreatedTime(System.currentTimeMillis());
-        ug2.setUpdatedTime(System.currentTimeMillis());
-
-        userGroupRepository.create(ug2);
-
-        UserGroup ug3 = new UserGroup();
-        String ug3Name = "user1-group-name";
-        String ug3GroupId = userId3;
-        ug3.setGroupId(ug3GroupId);
-        ug3.setDomainId(domainId);
-        ug3.setName(ug3Name);
-        ug3.setDescription("test group description");
-        ug3.setOwnerId(userId1);
-        ug3.setGroupType(GroupType.SINGLE_USER);
-        ug3.setCreatedTime(System.currentTimeMillis());
-        ug3.setUpdatedTime(System.currentTimeMillis());
-
-        userGroupRepository.create(ug3);
-
-        GroupMembership grpU2ToGrp2 = new GroupMembership();
-        grpU2ToGrp2.setParentId(groupId2);
-        grpU2ToGrp2.setChildId(userId2);
-        grpU2ToGrp2.setChildType(GroupChildType.USER);
-
-        GroupMembershipRepository groupMembershipRepository = new GroupMembershipRepository();
-        grpU2ToGrp2 = groupMembershipRepository.create(grpU2ToGrp2);
-        Assert.assertNotNull(grpU2ToGrp2);
-
-        GroupMembership grpU3ToGrp2 = new GroupMembership();
-        grpU3ToGrp2.setParentId(groupId2);
-        grpU3ToGrp2.setChildId(userId3);
-        grpU3ToGrp2.setChildType(GroupChildType.USER);
-
-        groupMembershipRepository.create(grpU3ToGrp2);
-
-        GroupMembership grpU1ToGrp1 = new GroupMembership();
-        grpU1ToGrp1.setParentId(groupId1);
-        grpU1ToGrp1.setChildId(userId1);
-        grpU1ToGrp1.setChildType(GroupChildType.USER);
-
-        groupMembershipRepository.create(grpU1ToGrp1);
-
-        GroupMembership grpG2ToGrp1 = new GroupMembership();
-        grpG2ToGrp1.setParentId(groupId1);
-        grpG2ToGrp1.setChildId(groupId2);
-        grpG2ToGrp1.setChildType(GroupChildType.GROUP);
-
-        groupMembershipRepository.create(grpG2ToGrp1);
-
-        filters = new HashMap<>();
-        filters.put(DBConstants.GroupMembershipTable.PARENT_ID, groupId2);
-        Assert.assertTrue(groupMembershipRepository.select(filters, 0, 10).size() == 2);
-
-        Assert.assertTrue(groupMembershipRepository.getChildMembershipsOfGroup(groupId2).size() == 2);
-        Assert.assertTrue(groupMembershipRepository.getAllChildUsers(groupId2).size() == 2);
-        Assert.assertTrue(groupMembershipRepository.getAllChildGroups(groupId1).size() == 1);
-
-        Assert.assertTrue(groupMembershipRepository.getAllParentMembershipsForChild(userId3).size() == 2);
-        Assert.assertTrue(groupMembershipRepository.getAllParentGroupsForChild(userId3).size() == 2);
-
-        //Creating permission types
-        PermissionType permissionType1 = new PermissionType();
-        String permissionName1 = "READ";
-        String permissionType1Id = domainId + ":" + permissionName1;
-        permissionType1.setPermissionTypeId(permissionType1Id);
-        permissionType1.setDomainId(domainId);
-        permissionType1.setName(permissionName1);
-        permissionType1.setDescription("READ description");
-        permissionType1.setCreatedTime(System.currentTimeMillis());
-        permissionType1.setUpdatedTime(System.currentTimeMillis());
-
-        PermissionTypeRepository permissionTypeRepository = new PermissionTypeRepository();
-        permissionType1 = permissionTypeRepository.create(permissionType1);
-        Assert.assertNotNull(permissionType1);
-
-        PermissionType permissionType2 = new PermissionType();
-        String permissionName2 = "WRITE";
-        String permissionType2Id = domainId + ":" + permissionName2;
-        permissionType2.setPermissionTypeId(permissionType2Id);
-        permissionType2.setDomainId(domainId);
-        permissionType2.setName(permissionName2);
-        permissionType2.setDescription("WRITE description");
-        permissionType2.setCreatedTime(System.currentTimeMillis());
-        permissionType2.setUpdatedTime(System.currentTimeMillis());
-        permissionTypeRepository.create(permissionType2);
-
-        //Creating entity types
-        EntityType entityType1 = new EntityType();
-        String entityType1Name = "Project";
-        String entityTypeId1 = domainId + ":" + entityType1Name;
-        entityType1.setEntityTypeId(entityTypeId1);
-        entityType1.setDomainId(domainId);
-        entityType1.setName(entityType1Name);
-        entityType1.setDescription("test entity type");
-        entityType1.setCreatedTime(System.currentTimeMillis());
-        entityType1.setUpdatedTime(System.currentTimeMillis());
-
-        EntityTypeRepository entityTypeRepository = new EntityTypeRepository();
-        entityType1 = entityTypeRepository.create(entityType1);
-        Assert.assertNotNull(entityType1);
-
-        EntityType entityType2 = new EntityType();
-        String entityType2Name = "Experiment";
-        String entityTypeId2 = domainId + ":" + entityType2Name;
-        entityType2.setEntityTypeId(entityTypeId2);
-        entityType2.setDomainId(domainId);
-        entityType2.setName(entityType2Name);
-        entityType2.setDescription("test entity type");
-        entityType2.setCreatedTime(System.currentTimeMillis());
-        entityType2.setUpdatedTime(System.currentTimeMillis());
-        entityTypeRepository.create(entityType2);
-
-        //Creating Entities
-        String entityId1 = UUID.randomUUID().toString();
-        Entity entity1 = new Entity();
-        entity1.setEntityId(entityId1);
-        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());
-
-        EntityRepository entityRepository = new EntityRepository();
-        entity1 = entityRepository.create(entity1);
-        Assert.assertNotNull(entity1);
-
-        String entityId2 = UUID.randomUUID().toString();
-        Entity entity2 = new Entity();
-        entity2.setEntityId(entityId2);
-        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());
-
-        entityRepository.create(entity2);
-
-        String entityId3 = UUID.randomUUID().toString();
-        Entity entity3 = new Entity();
-        entity3.setEntityId(entityId3);
-        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());
-
-        entityRepository.create(entity3);
-
-        // Creating sharing entries
-        Sharing sharing1 = new Sharing();
-        sharing1.setPermissionTypeId(permissionType1Id);
-        sharing1.setEntityId(entityId1);
-        sharing1.setGroupId(userId2);
-        sharing1.setSharingType(SharingType.DIRECT);
-
-        SharingRepository sharingRepository = new SharingRepository();
-        sharing1 = sharingRepository.create(sharing1);
-        Assert.assertNotNull(sharing1);
-
-        Sharing sharing2 = new Sharing();
-        sharing2.setPermissionTypeId(permissionType1Id);
-        sharing2.setEntityId(entityId3);
-        sharing2.setGroupId(groupId2);
-        sharing2.setSharingType(SharingType.DIRECT);
-
-        sharingRepository.create(sharing2);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/244e8416/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 f6327bf..9887b68 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-10-03")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-04")
 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/244e8416/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 1e439d7..f025dcb 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-10-03")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-04")
 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/244e8416/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 d60a599..7fbaace 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-10-03")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-04")
 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/244e8416/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 78c78f7..063dc99 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-10-03")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-04")
 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/244e8416/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 d426063..4090776 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-10-03")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-04")
 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/244e8416/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 465ddfc..316735a 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-10-03")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-04")
 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/244e8416/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 43f049f..ef2d0be 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
@@ -6,18 +6,35 @@
  */
 package org.apache.airavata.sharing.registry.models;
 
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.protocol.TTupleProtocol;
 import org.apache.thrift.scheme.IScheme;
 import org.apache.thrift.scheme.SchemeFactory;
 import org.apache.thrift.scheme.StandardScheme;
-import org.apache.thrift.scheme.TupleScheme;
 
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
 import javax.annotation.Generated;
-import java.util.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-03")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-04")
 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");
 
@@ -26,7 +43,7 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
   private static final org.apache.thrift.protocol.TField GROUP_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("groupId", org.apache.thrift.protocol.TType.STRING, (short)3);
   private static final org.apache.thrift.protocol.TField GROUP_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("groupType", org.apache.thrift.protocol.TType.I32, (short)4);
   private static final org.apache.thrift.protocol.TField SHARING_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("sharingType", org.apache.thrift.protocol.TType.I32, (short)5);
-  private static final org.apache.thrift.protocol.TField INHERITED_PERMISSION_TYPE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("inheritedPermissionTypeId", org.apache.thrift.protocol.TType.STRING, (short)6);
+  private static final org.apache.thrift.protocol.TField INHERITED_PARENT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("inheritedParentId", org.apache.thrift.protocol.TType.STRING, (short)6);
   private static final org.apache.thrift.protocol.TField CREATED_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("createdTime", org.apache.thrift.protocol.TType.I64, (short)7);
   private static final org.apache.thrift.protocol.TField UPDATED_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("updatedTime", org.apache.thrift.protocol.TType.I64, (short)8);
 
@@ -49,7 +66,7 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
    * @see SharingType
    */
   public SharingType sharingType; // optional
-  public String inheritedPermissionTypeId; // optional
+  public String inheritedParentId; // optional
   public long createdTime; // optional
   public long updatedTime; // optional
 
@@ -68,7 +85,7 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
      * @see SharingType
      */
     SHARING_TYPE((short)5, "sharingType"),
-    INHERITED_PERMISSION_TYPE_ID((short)6, "inheritedPermissionTypeId"),
+    INHERITED_PARENT_ID((short)6, "inheritedParentId"),
     CREATED_TIME((short)7, "createdTime"),
     UPDATED_TIME((short)8, "updatedTime");
 
@@ -95,8 +112,8 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
           return GROUP_TYPE;
         case 5: // SHARING_TYPE
           return SHARING_TYPE;
-        case 6: // INHERITED_PERMISSION_TYPE_ID
-          return INHERITED_PERMISSION_TYPE_ID;
+        case 6: // INHERITED_PARENT_ID
+          return INHERITED_PARENT_ID;
         case 7: // CREATED_TIME
           return CREATED_TIME;
         case 8: // UPDATED_TIME
@@ -144,7 +161,7 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
   private static final int __CREATEDTIME_ISSET_ID = 0;
   private static final int __UPDATEDTIME_ISSET_ID = 1;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.PERMISSION_TYPE_ID,_Fields.ENTITY_ID,_Fields.GROUP_ID,_Fields.GROUP_TYPE,_Fields.SHARING_TYPE,_Fields.INHERITED_PERMISSION_TYPE_ID,_Fields.CREATED_TIME,_Fields.UPDATED_TIME};
+  private static final _Fields optionals[] = {_Fields.PERMISSION_TYPE_ID,_Fields.ENTITY_ID,_Fields.GROUP_ID,_Fields.GROUP_TYPE,_Fields.SHARING_TYPE,_Fields.INHERITED_PARENT_ID,_Fields.CREATED_TIME,_Fields.UPDATED_TIME};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -158,7 +175,7 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
         new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, GroupType.class)));
     tmpMap.put(_Fields.SHARING_TYPE, new org.apache.thrift.meta_data.FieldMetaData("sharingType", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, SharingType.class)));
-    tmpMap.put(_Fields.INHERITED_PERMISSION_TYPE_ID, new org.apache.thrift.meta_data.FieldMetaData("inheritedPermissionTypeId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+    tmpMap.put(_Fields.INHERITED_PARENT_ID, new org.apache.thrift.meta_data.FieldMetaData("inheritedParentId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.CREATED_TIME, new org.apache.thrift.meta_data.FieldMetaData("createdTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
@@ -191,8 +208,8 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
     if (other.isSetSharingType()) {
       this.sharingType = other.sharingType;
     }
-    if (other.isSetInheritedPermissionTypeId()) {
-      this.inheritedPermissionTypeId = other.inheritedPermissionTypeId;
+    if (other.isSetInheritedParentId()) {
+      this.inheritedParentId = other.inheritedParentId;
     }
     this.createdTime = other.createdTime;
     this.updatedTime = other.updatedTime;
@@ -209,7 +226,7 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
     this.groupId = null;
     this.groupType = null;
     this.sharingType = null;
-    this.inheritedPermissionTypeId = null;
+    this.inheritedParentId = null;
     setCreatedTimeIsSet(false);
     this.createdTime = 0;
     setUpdatedTimeIsSet(false);
@@ -352,27 +369,27 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
     }
   }
 
-  public String getInheritedPermissionTypeId() {
-    return this.inheritedPermissionTypeId;
+  public String getInheritedParentId() {
+    return this.inheritedParentId;
   }
 
-  public Sharing setInheritedPermissionTypeId(String inheritedPermissionTypeId) {
-    this.inheritedPermissionTypeId = inheritedPermissionTypeId;
+  public Sharing setInheritedParentId(String inheritedParentId) {
+    this.inheritedParentId = inheritedParentId;
     return this;
   }
 
-  public void unsetInheritedPermissionTypeId() {
-    this.inheritedPermissionTypeId = null;
+  public void unsetInheritedParentId() {
+    this.inheritedParentId = null;
   }
 
-  /** Returns true if field inheritedPermissionTypeId is set (has been assigned a value) and false otherwise */
-  public boolean isSetInheritedPermissionTypeId() {
-    return this.inheritedPermissionTypeId != null;
+  /** Returns true if field inheritedParentId is set (has been assigned a value) and false otherwise */
+  public boolean isSetInheritedParentId() {
+    return this.inheritedParentId != null;
   }
 
-  public void setInheritedPermissionTypeIdIsSet(boolean value) {
+  public void setInheritedParentIdIsSet(boolean value) {
     if (!value) {
-      this.inheritedPermissionTypeId = null;
+      this.inheritedParentId = null;
     }
   }
 
@@ -464,11 +481,11 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
       }
       break;
 
-    case INHERITED_PERMISSION_TYPE_ID:
+    case INHERITED_PARENT_ID:
       if (value == null) {
-        unsetInheritedPermissionTypeId();
+        unsetInheritedParentId();
       } else {
-        setInheritedPermissionTypeId((String)value);
+        setInheritedParentId((String)value);
       }
       break;
 
@@ -508,8 +525,8 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
     case SHARING_TYPE:
       return getSharingType();
 
-    case INHERITED_PERMISSION_TYPE_ID:
-      return getInheritedPermissionTypeId();
+    case INHERITED_PARENT_ID:
+      return getInheritedParentId();
 
     case CREATED_TIME:
       return getCreatedTime();
@@ -538,8 +555,8 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
       return isSetGroupType();
     case SHARING_TYPE:
       return isSetSharingType();
-    case INHERITED_PERMISSION_TYPE_ID:
-      return isSetInheritedPermissionTypeId();
+    case INHERITED_PARENT_ID:
+      return isSetInheritedParentId();
     case CREATED_TIME:
       return isSetCreatedTime();
     case UPDATED_TIME:
@@ -606,12 +623,12 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
         return false;
     }
 
-    boolean this_present_inheritedPermissionTypeId = true && this.isSetInheritedPermissionTypeId();
-    boolean that_present_inheritedPermissionTypeId = true && that.isSetInheritedPermissionTypeId();
-    if (this_present_inheritedPermissionTypeId || that_present_inheritedPermissionTypeId) {
-      if (!(this_present_inheritedPermissionTypeId && that_present_inheritedPermissionTypeId))
+    boolean this_present_inheritedParentId = true && this.isSetInheritedParentId();
+    boolean that_present_inheritedParentId = true && that.isSetInheritedParentId();
+    if (this_present_inheritedParentId || that_present_inheritedParentId) {
+      if (!(this_present_inheritedParentId && that_present_inheritedParentId))
         return false;
-      if (!this.inheritedPermissionTypeId.equals(that.inheritedPermissionTypeId))
+      if (!this.inheritedParentId.equals(that.inheritedParentId))
         return false;
     }
 
@@ -665,10 +682,10 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
     if (present_sharingType)
       list.add(sharingType.getValue());
 
-    boolean present_inheritedPermissionTypeId = true && (isSetInheritedPermissionTypeId());
-    list.add(present_inheritedPermissionTypeId);
-    if (present_inheritedPermissionTypeId)
-      list.add(inheritedPermissionTypeId);
+    boolean present_inheritedParentId = true && (isSetInheritedParentId());
+    list.add(present_inheritedParentId);
+    if (present_inheritedParentId)
+      list.add(inheritedParentId);
 
     boolean present_createdTime = true && (isSetCreatedTime());
     list.add(present_createdTime);
@@ -741,12 +758,12 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetInheritedPermissionTypeId()).compareTo(other.isSetInheritedPermissionTypeId());
+    lastComparison = Boolean.valueOf(isSetInheritedParentId()).compareTo(other.isSetInheritedParentId());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetInheritedPermissionTypeId()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.inheritedPermissionTypeId, other.inheritedPermissionTypeId);
+    if (isSetInheritedParentId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.inheritedParentId, other.inheritedParentId);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -840,13 +857,13 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
       }
       first = false;
     }
-    if (isSetInheritedPermissionTypeId()) {
+    if (isSetInheritedParentId()) {
       if (!first) sb.append(", ");
-      sb.append("inheritedPermissionTypeId:");
-      if (this.inheritedPermissionTypeId == null) {
+      sb.append("inheritedParentId:");
+      if (this.inheritedParentId == null) {
         sb.append("null");
       } else {
-        sb.append(this.inheritedPermissionTypeId);
+        sb.append(this.inheritedParentId);
       }
       first = false;
     }
@@ -947,10 +964,10 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 6: // INHERITED_PERMISSION_TYPE_ID
+          case 6: // INHERITED_PARENT_ID
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.inheritedPermissionTypeId = iprot.readString();
-              struct.setInheritedPermissionTypeIdIsSet(true);
+              struct.inheritedParentId = iprot.readString();
+              struct.setInheritedParentIdIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
@@ -1021,10 +1038,10 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
           oprot.writeFieldEnd();
         }
       }
-      if (struct.inheritedPermissionTypeId != null) {
-        if (struct.isSetInheritedPermissionTypeId()) {
-          oprot.writeFieldBegin(INHERITED_PERMISSION_TYPE_ID_FIELD_DESC);
-          oprot.writeString(struct.inheritedPermissionTypeId);
+      if (struct.inheritedParentId != null) {
+        if (struct.isSetInheritedParentId()) {
+          oprot.writeFieldBegin(INHERITED_PARENT_ID_FIELD_DESC);
+          oprot.writeString(struct.inheritedParentId);
           oprot.writeFieldEnd();
         }
       }
@@ -1071,7 +1088,7 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
       if (struct.isSetSharingType()) {
         optionals.set(4);
       }
-      if (struct.isSetInheritedPermissionTypeId()) {
+      if (struct.isSetInheritedParentId()) {
         optionals.set(5);
       }
       if (struct.isSetCreatedTime()) {
@@ -1096,8 +1113,8 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
       if (struct.isSetSharingType()) {
         oprot.writeI32(struct.sharingType.getValue());
       }
-      if (struct.isSetInheritedPermissionTypeId()) {
-        oprot.writeString(struct.inheritedPermissionTypeId);
+      if (struct.isSetInheritedParentId()) {
+        oprot.writeString(struct.inheritedParentId);
       }
       if (struct.isSetCreatedTime()) {
         oprot.writeI64(struct.createdTime);
@@ -1132,8 +1149,8 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
         struct.setSharingTypeIsSet(true);
       }
       if (incoming.get(5)) {
-        struct.inheritedPermissionTypeId = iprot.readString();
-        struct.setInheritedPermissionTypeIdIsSet(true);
+        struct.inheritedParentId = iprot.readString();
+        struct.setInheritedParentIdIsSet(true);
       }
       if (incoming.get(6)) {
         struct.createdTime = iprot.readI64();

http://git-wip-us.apache.org/repos/asf/airavata/blob/244e8416/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 d70b8c1..6217a72 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-10-03")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-04")
 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/244e8416/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 442e597..15f09a9 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-10-03")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-04")
 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");