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/05 06:18:22 UTC

airavata git commit: implementing search entities

Repository: airavata
Updated Branches:
  refs/heads/airavata-gov-registry 81c812b9a -> e775f252f


implementing search entities


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

Branch: refs/heads/airavata-gov-registry
Commit: e775f252f6ecb7804c1213a2bf6e3e5e20e5c8e0
Parents: 81c812b
Author: scnakandala <su...@gmail.com>
Authored: Wed Oct 5 02:18:13 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Oct 5 02:18:13 2016 -0400

----------------------------------------------------------------------
 .../db/repositories/EntityRepository.java       |  30 ++
 .../sharing/registry/db/utils/DBConstants.java  |   4 +
 .../server/GovRegistryServerHandler.java        |   8 +-
 .../src/main/resources/gov-registry.sql         |   2 +
 .../registry/GovRegistryServerHandlerTest.java  |   4 +
 .../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        |   2 +-
 .../airavata/sharing/registry/models/User.java  |   2 +-
 .../sharing/registry/models/UserGroup.java      |   2 +-
 .../service/cpi/GovRegistryService.java         | 313 ++++++++++---------
 .../thrift_models/sharing_cpi.thrift            |   4 +-
 .../thrift_models/sharing_models.thrift         |   6 +
 17 files changed, 225 insertions(+), 164 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/e775f252/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 86708c3..20e0fd9 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,17 @@
 package org.apache.airavata.sharing.registry.db.repositories;
 
 import org.apache.airavata.sharing.registry.db.entities.EntityEntity;
+import org.apache.airavata.sharing.registry.db.entities.SharingEntity;
 import org.apache.airavata.sharing.registry.db.utils.DBConstants;
 import org.apache.airavata.sharing.registry.models.Entity;
+import org.apache.airavata.sharing.registry.models.EntitySearchFields;
 import org.apache.airavata.sharing.registry.models.GovRegistryException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 public class EntityRepository extends AbstractRepository<Entity, EntityEntity, String> {
     private final static Logger logger = LoggerFactory.getLogger(EntityRepository.class);
@@ -42,4 +45,31 @@ public class EntityRepository extends AbstractRepository<Entity, EntityEntity, S
         filters.put(DBConstants.EntityTable.PARENT_ENTITY_ID, parentId);
         return select(filters, 0, -1);
     }
+
+    public List<Entity> searchEntities(List<String> groupIds, String entityTypeId, Map<EntitySearchFields, String> filters,
+                                       int offset, int limit) throws GovRegistryException {
+        String groupIdString = "'";
+        for(String groupId : groupIds)
+            groupIdString += groupId + "','";
+        groupIdString = groupIdString.substring(0, groupIdString.length()-2);
+
+        String query = "SELECT E FROM " + EntityEntity.class.getSimpleName() + " E, " + SharingEntity.class.getSimpleName() + " S WHERE " +
+                "E." + DBConstants.EntityTable.ENTITY_ID + " = S." + DBConstants.SharingTable.ENTITY_ID + " AND " +
+                "S." + DBConstants.SharingTable.GROUP_ID + " IN(" + groupIdString + ") AND E." + DBConstants.EntityTable.ENTITY_TYPE_ID + "='" +
+                entityTypeId + "' AND ";
+
+        for(Map.Entry<EntitySearchFields, String> mapEntry : filters.entrySet()){
+            if(mapEntry.getKey().equals(EntitySearchFields.NAME)){
+                query += "E." + DBConstants.EntityTable.NAME + " LIKE '%" + mapEntry.getValue() + "%' AND ";
+            }else if(mapEntry.getKey().equals(EntitySearchFields.DESCRIPTION)){
+                query += "E." + DBConstants.EntityTable.DESCRIPTION + " LIKE '%" + mapEntry.getValue() + "%' AND ";
+            }else if(mapEntry.getKey().equals(EntitySearchFields.FULL_TEXT)){
+                query += "E." + DBConstants.EntityTable.FULL_TEXT + " LIKE '%" + mapEntry.getValue() + "%' AND ";
+            }
+        }
+
+        query = query.substring(0, query.length() - 5);
+        return select(query, offset, limit);
+
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e775f252/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 1ba558e..f963de2 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
@@ -69,6 +69,10 @@ public class DBConstants {
     public static class EntityTable {
         public static String ENTITY_ID = "entityId";
         public static String PARENT_ENTITY_ID = "parentEntityId";
+        public static String ENTITY_TYPE_ID = "entityTypeId";
+        public static String NAME = "name";
+        public static String DESCRIPTION = "description";
+        public static String FULL_TEXT = "fullText";
     }
 
     public static class SharingTable {

http://git-wip-us.apache.org/repos/asf/airavata/blob/e775f252/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 657a3ee..9684c74 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
@@ -422,8 +422,12 @@ public class GovRegistryServerHandler implements GovRegistryService.Iface{
     }
 
     @Override
-    public List<Entity> searchEntities(String domain, String entityType, Map<String, String> filters, int offset, int limit) throws GovRegistryException, TException {
-        return null;
+    public List<Entity> searchEntities(String userId, String entityTypeId, Map<EntitySearchFields, String> filters,
+                                       int offset, int limit) throws GovRegistryException, TException {
+        List<String> groupIds = new ArrayList<>();
+        groupIds.add(userId);
+        groupMembershipRepository.getAllParentMembershipsForChild(userId).stream().forEach(gm->groupIds.add(gm.parentId));
+        return entityRepository.searchEntities(groupIds, entityTypeId, filters, offset, limit);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/airavata/blob/e775f252/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 617f6e8..4b046ce 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
@@ -104,6 +104,8 @@ CREATE TABLE ENTITY (
   FOREIGN KEY (PARENT_ENTITY_ID) REFERENCES ENTITY(ENTITY_ID) ON DELETE CASCADE ON UPDATE CASCADE
 );
 
+ALTER TABLE ENTITY ADD FULLTEXT FULL_TEXT_INDEX(FULL_TEXT);
+
 CREATE TABLE ENTITY_METADATA (
   ENTITY_ID VARCHAR (255) NOT NULL,
   META_KEY VARCHAR (255) NOT NULL,

http://git-wip-us.apache.org/repos/asf/airavata/blob/e775f252/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 ff6a08c..32c6a17 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
@@ -262,6 +262,10 @@ public class GovRegistryServerHandlerTest {
         Assert.assertTrue(govRegistryServerHandler.userHasAccess(domainId, userId1, entityId4, permissionTypeId1));
         Assert.assertFalse(govRegistryServerHandler.userHasAccess(domainId, userId3, entityId1, permissionTypeId1));
 
+        HashMap<EntitySearchFields, String> filters = new HashMap<>();
+        filters.put(EntitySearchFields.NAME, "Input");
+        Assert.assertTrue(govRegistryServerHandler.searchEntities(userId1, entityTypeId3, filters, 0, -1).size() > 0);
+
 //        govRegistryServerHandler.revokeEntitySharingFromUsers(entityId1, Arrays.asList(userId2), permissionTypeId1);
 //        govRegistryServerHandler.revokeEntitySharingFromGroups(entityId3, Arrays.asList(groupId2), permissionTypeId1);
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/e775f252/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 9887b68..367e04f 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-04")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-05")
 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/e775f252/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 f025dcb..462d892 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-04")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-05")
 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/e775f252/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 7fbaace..d2ddffa 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-04")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-05")
 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/e775f252/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 063dc99..7df20a7 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-04")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-05")
 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/e775f252/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 4090776..00843aa 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-04")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-05")
 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/e775f252/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 316735a..91645ce 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-04")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-05")
 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/e775f252/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 ef2d0be..5106eab 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-10-04")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-05")
 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/e775f252/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 6217a72..69be6e7 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-04")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-05")
 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/e775f252/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 15f09a9..0c481bb 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-04")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-05")
 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");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/e775f252/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 067450b..efcbab5 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-10-04")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-05")
 public class GovRegistryService {
 
   public interface Iface {
@@ -127,7 +127,7 @@ public class GovRegistryService {
 
     public org.apache.airavata.sharing.registry.models.Entity getEntity(String entityId) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
-    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;
+    public List<org.apache.airavata.sharing.registry.models.Entity> searchEntities(String userId, String entityTypeId, Map<org.apache.airavata.sharing.registry.models.EntitySearchFields,String> filters, int offset, int limit) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException;
 
     /**
      *  * Permission Operations
@@ -225,7 +225,7 @@ public class GovRegistryService {
 
     public void getEntity(String entityId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    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 searchEntities(String userId, String entityTypeId, Map<org.apache.airavata.sharing.registry.models.EntitySearchFields,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 permissionType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
@@ -1033,17 +1033,17 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getEntity failed: unknown result");
     }
 
-    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
+    public List<org.apache.airavata.sharing.registry.models.Entity> searchEntities(String userId, String entityTypeId, Map<org.apache.airavata.sharing.registry.models.EntitySearchFields,String> filters, int offset, int limit) throws org.apache.airavata.sharing.registry.models.GovRegistryException, org.apache.thrift.TException
     {
-      send_searchEntities(domain, entityType, filters, offset, limit);
+      send_searchEntities(userId, entityTypeId, filters, offset, limit);
       return recv_searchEntities();
     }
 
-    public void send_searchEntities(String domain, String entityType, Map<String,String> filters, int offset, int limit) throws org.apache.thrift.TException
+    public void send_searchEntities(String userId, String entityTypeId, Map<org.apache.airavata.sharing.registry.models.EntitySearchFields,String> filters, int offset, int limit) throws org.apache.thrift.TException
     {
       searchEntities_args args = new searchEntities_args();
-      args.setDomain(domain);
-      args.setEntityType(entityType);
+      args.setUserId(userId);
+      args.setEntityTypeId(entityTypeId);
       args.setFilters(filters);
       args.setOffset(offset);
       args.setLimit(limit);
@@ -2321,23 +2321,23 @@ 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 searchEntities(String userId, String entityTypeId, Map<org.apache.airavata.sharing.registry.models.EntitySearchFields,String> filters, int offset, int limit, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      searchEntities_call method_call = new searchEntities_call(domain, entityType, filters, offset, limit, resultHandler, this, ___protocolFactory, ___transport);
+      searchEntities_call method_call = new searchEntities_call(userId, entityTypeId, filters, offset, limit, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class searchEntities_call extends org.apache.thrift.async.TAsyncMethodCall {
-      private String domain;
-      private String entityType;
-      private Map<String,String> filters;
+      private String userId;
+      private String entityTypeId;
+      private Map<org.apache.airavata.sharing.registry.models.EntitySearchFields,String> filters;
       private int offset;
       private int limit;
-      public searchEntities_call(String domain, String entityType, Map<String,String> filters, 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 {
+      public searchEntities_call(String userId, String entityTypeId, Map<org.apache.airavata.sharing.registry.models.EntitySearchFields,String> filters, 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.domain = domain;
-        this.entityType = entityType;
+        this.userId = userId;
+        this.entityTypeId = entityTypeId;
         this.filters = filters;
         this.offset = offset;
         this.limit = limit;
@@ -2346,8 +2346,8 @@ public class GovRegistryService {
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("searchEntities", org.apache.thrift.protocol.TMessageType.CALL, 0));
         searchEntities_args args = new searchEntities_args();
-        args.setDomain(domain);
-        args.setEntityType(entityType);
+        args.setUserId(userId);
+        args.setEntityTypeId(entityTypeId);
         args.setFilters(filters);
         args.setOffset(offset);
         args.setLimit(limit);
@@ -3502,7 +3502,7 @@ public class GovRegistryService {
       public searchEntities_result getResult(I iface, searchEntities_args args) throws org.apache.thrift.TException {
         searchEntities_result result = new searchEntities_result();
         try {
-          result.success = iface.searchEntities(args.domain, args.entityType, args.filters, args.offset, args.limit);
+          result.success = iface.searchEntities(args.userId, args.entityTypeId, args.filters, args.offset, args.limit);
         } catch (org.apache.airavata.sharing.registry.models.GovRegistryException gre) {
           result.gre = gre;
         }
@@ -5527,7 +5527,7 @@ public class GovRegistryService {
       }
 
       public void start(I iface, searchEntities_args args, org.apache.thrift.async.AsyncMethodCallback<List<org.apache.airavata.sharing.registry.models.Entity>> resultHandler) throws TException {
-        iface.searchEntities(args.domain, args.entityType, args.filters, args.offset, args.limit,resultHandler);
+        iface.searchEntities(args.userId, args.entityTypeId, args.filters, args.offset, args.limit,resultHandler);
       }
     }
 
@@ -31579,8 +31579,8 @@ public class GovRegistryService {
   public static class searchEntities_args implements org.apache.thrift.TBase<searchEntities_args, searchEntities_args._Fields>, java.io.Serializable, Cloneable, Comparable<searchEntities_args>   {
     private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("searchEntities_args");
 
-    private static final org.apache.thrift.protocol.TField DOMAIN_FIELD_DESC = new org.apache.thrift.protocol.TField("domain", org.apache.thrift.protocol.TType.STRING, (short)1);
-    private static final org.apache.thrift.protocol.TField ENTITY_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("entityType", org.apache.thrift.protocol.TType.STRING, (short)2);
+    private static final org.apache.thrift.protocol.TField USER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("userId", org.apache.thrift.protocol.TType.STRING, (short)1);
+    private static final org.apache.thrift.protocol.TField ENTITY_TYPE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("entityTypeId", org.apache.thrift.protocol.TType.STRING, (short)2);
     private static final org.apache.thrift.protocol.TField FILTERS_FIELD_DESC = new org.apache.thrift.protocol.TField("filters", org.apache.thrift.protocol.TType.MAP, (short)3);
     private static final org.apache.thrift.protocol.TField OFFSET_FIELD_DESC = new org.apache.thrift.protocol.TField("offset", org.apache.thrift.protocol.TType.I32, (short)4);
     private static final org.apache.thrift.protocol.TField LIMIT_FIELD_DESC = new org.apache.thrift.protocol.TField("limit", org.apache.thrift.protocol.TType.I32, (short)5);
@@ -31591,16 +31591,16 @@ public class GovRegistryService {
       schemes.put(TupleScheme.class, new searchEntities_argsTupleSchemeFactory());
     }
 
-    public String domain; // required
-    public String entityType; // required
-    public Map<String,String> filters; // required
+    public String userId; // required
+    public String entityTypeId; // required
+    public Map<org.apache.airavata.sharing.registry.models.EntitySearchFields,String> filters; // required
     public int offset; // required
     public int limit; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-      DOMAIN((short)1, "domain"),
-      ENTITY_TYPE((short)2, "entityType"),
+      USER_ID((short)1, "userId"),
+      ENTITY_TYPE_ID((short)2, "entityTypeId"),
       FILTERS((short)3, "filters"),
       OFFSET((short)4, "offset"),
       LIMIT((short)5, "limit");
@@ -31618,10 +31618,10 @@ public class GovRegistryService {
        */
       public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
-          case 1: // DOMAIN
-            return DOMAIN;
-          case 2: // ENTITY_TYPE
-            return ENTITY_TYPE;
+          case 1: // USER_ID
+            return USER_ID;
+          case 2: // ENTITY_TYPE_ID
+            return ENTITY_TYPE_ID;
           case 3: // FILTERS
             return FILTERS;
           case 4: // OFFSET
@@ -31674,13 +31674,13 @@ public class GovRegistryService {
     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);
-      tmpMap.put(_Fields.DOMAIN, new org.apache.thrift.meta_data.FieldMetaData("domain", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+      tmpMap.put(_Fields.USER_ID, new org.apache.thrift.meta_data.FieldMetaData("userId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-      tmpMap.put(_Fields.ENTITY_TYPE, new org.apache.thrift.meta_data.FieldMetaData("entityType", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+      tmpMap.put(_Fields.ENTITY_TYPE_ID, new org.apache.thrift.meta_data.FieldMetaData("entityTypeId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       tmpMap.put(_Fields.FILTERS, new org.apache.thrift.meta_data.FieldMetaData("filters", org.apache.thrift.TFieldRequirementType.REQUIRED, 
           new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
-              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
+              new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, org.apache.airavata.sharing.registry.models.EntitySearchFields.class), 
               new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
       tmpMap.put(_Fields.OFFSET, new org.apache.thrift.meta_data.FieldMetaData("offset", org.apache.thrift.TFieldRequirementType.REQUIRED, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
@@ -31694,15 +31694,15 @@ public class GovRegistryService {
     }
 
     public searchEntities_args(
-      String domain,
-      String entityType,
-      Map<String,String> filters,
+      String userId,
+      String entityTypeId,
+      Map<org.apache.airavata.sharing.registry.models.EntitySearchFields,String> filters,
       int offset,
       int limit)
     {
       this();
-      this.domain = domain;
-      this.entityType = entityType;
+      this.userId = userId;
+      this.entityTypeId = entityTypeId;
       this.filters = filters;
       this.offset = offset;
       setOffsetIsSet(true);
@@ -31715,14 +31715,25 @@ public class GovRegistryService {
      */
     public searchEntities_args(searchEntities_args other) {
       __isset_bitfield = other.__isset_bitfield;
-      if (other.isSetDomain()) {
-        this.domain = other.domain;
+      if (other.isSetUserId()) {
+        this.userId = other.userId;
       }
-      if (other.isSetEntityType()) {
-        this.entityType = other.entityType;
+      if (other.isSetEntityTypeId()) {
+        this.entityTypeId = other.entityTypeId;
       }
       if (other.isSetFilters()) {
-        Map<String,String> __this__filters = new HashMap<String,String>(other.filters);
+        Map<org.apache.airavata.sharing.registry.models.EntitySearchFields,String> __this__filters = new HashMap<org.apache.airavata.sharing.registry.models.EntitySearchFields,String>(other.filters.size());
+        for (Map.Entry<org.apache.airavata.sharing.registry.models.EntitySearchFields, String> other_element : other.filters.entrySet()) {
+
+          org.apache.airavata.sharing.registry.models.EntitySearchFields other_element_key = other_element.getKey();
+          String other_element_value = other_element.getValue();
+
+          org.apache.airavata.sharing.registry.models.EntitySearchFields __this__filters_copy_key = other_element_key;
+
+          String __this__filters_copy_value = other_element_value;
+
+          __this__filters.put(__this__filters_copy_key, __this__filters_copy_value);
+        }
         this.filters = __this__filters;
       }
       this.offset = other.offset;
@@ -31735,8 +31746,8 @@ public class GovRegistryService {
 
     @Override
     public void clear() {
-      this.domain = null;
-      this.entityType = null;
+      this.userId = null;
+      this.entityTypeId = null;
       this.filters = null;
       setOffsetIsSet(false);
       this.offset = 0;
@@ -31744,51 +31755,51 @@ public class GovRegistryService {
       this.limit = 0;
     }
 
-    public String getDomain() {
-      return this.domain;
+    public String getUserId() {
+      return this.userId;
     }
 
-    public searchEntities_args setDomain(String domain) {
-      this.domain = domain;
+    public searchEntities_args setUserId(String userId) {
+      this.userId = userId;
       return this;
     }
 
-    public void unsetDomain() {
-      this.domain = null;
+    public void unsetUserId() {
+      this.userId = null;
     }
 
-    /** Returns true if field domain is set (has been assigned a value) and false otherwise */
-    public boolean isSetDomain() {
-      return this.domain != null;
+    /** Returns true if field userId is set (has been assigned a value) and false otherwise */
+    public boolean isSetUserId() {
+      return this.userId != null;
     }
 
-    public void setDomainIsSet(boolean value) {
+    public void setUserIdIsSet(boolean value) {
       if (!value) {
-        this.domain = null;
+        this.userId = null;
       }
     }
 
-    public String getEntityType() {
-      return this.entityType;
+    public String getEntityTypeId() {
+      return this.entityTypeId;
     }
 
-    public searchEntities_args setEntityType(String entityType) {
-      this.entityType = entityType;
+    public searchEntities_args setEntityTypeId(String entityTypeId) {
+      this.entityTypeId = entityTypeId;
       return this;
     }
 
-    public void unsetEntityType() {
-      this.entityType = null;
+    public void unsetEntityTypeId() {
+      this.entityTypeId = null;
     }
 
-    /** Returns true if field entityType is set (has been assigned a value) and false otherwise */
-    public boolean isSetEntityType() {
-      return this.entityType != null;
+    /** Returns true if field entityTypeId is set (has been assigned a value) and false otherwise */
+    public boolean isSetEntityTypeId() {
+      return this.entityTypeId != null;
     }
 
-    public void setEntityTypeIsSet(boolean value) {
+    public void setEntityTypeIdIsSet(boolean value) {
       if (!value) {
-        this.entityType = null;
+        this.entityTypeId = null;
       }
     }
 
@@ -31796,18 +31807,18 @@ public class GovRegistryService {
       return (this.filters == null) ? 0 : this.filters.size();
     }
 
-    public void putToFilters(String key, String val) {
+    public void putToFilters(org.apache.airavata.sharing.registry.models.EntitySearchFields key, String val) {
       if (this.filters == null) {
-        this.filters = new HashMap<String,String>();
+        this.filters = new HashMap<org.apache.airavata.sharing.registry.models.EntitySearchFields,String>();
       }
       this.filters.put(key, val);
     }
 
-    public Map<String,String> getFilters() {
+    public Map<org.apache.airavata.sharing.registry.models.EntitySearchFields,String> getFilters() {
       return this.filters;
     }
 
-    public searchEntities_args setFilters(Map<String,String> filters) {
+    public searchEntities_args setFilters(Map<org.apache.airavata.sharing.registry.models.EntitySearchFields,String> filters) {
       this.filters = filters;
       return this;
     }
@@ -31875,19 +31886,19 @@ public class GovRegistryService {
 
     public void setFieldValue(_Fields field, Object value) {
       switch (field) {
-      case DOMAIN:
+      case USER_ID:
         if (value == null) {
-          unsetDomain();
+          unsetUserId();
         } else {
-          setDomain((String)value);
+          setUserId((String)value);
         }
         break;
 
-      case ENTITY_TYPE:
+      case ENTITY_TYPE_ID:
         if (value == null) {
-          unsetEntityType();
+          unsetEntityTypeId();
         } else {
-          setEntityType((String)value);
+          setEntityTypeId((String)value);
         }
         break;
 
@@ -31895,7 +31906,7 @@ public class GovRegistryService {
         if (value == null) {
           unsetFilters();
         } else {
-          setFilters((Map<String,String>)value);
+          setFilters((Map<org.apache.airavata.sharing.registry.models.EntitySearchFields,String>)value);
         }
         break;
 
@@ -31920,11 +31931,11 @@ public class GovRegistryService {
 
     public Object getFieldValue(_Fields field) {
       switch (field) {
-      case DOMAIN:
-        return getDomain();
+      case USER_ID:
+        return getUserId();
 
-      case ENTITY_TYPE:
-        return getEntityType();
+      case ENTITY_TYPE_ID:
+        return getEntityTypeId();
 
       case FILTERS:
         return getFilters();
@@ -31946,10 +31957,10 @@ public class GovRegistryService {
       }
 
       switch (field) {
-      case DOMAIN:
-        return isSetDomain();
-      case ENTITY_TYPE:
-        return isSetEntityType();
+      case USER_ID:
+        return isSetUserId();
+      case ENTITY_TYPE_ID:
+        return isSetEntityTypeId();
       case FILTERS:
         return isSetFilters();
       case OFFSET:
@@ -31973,21 +31984,21 @@ public class GovRegistryService {
       if (that == null)
         return false;
 
-      boolean this_present_domain = true && this.isSetDomain();
-      boolean that_present_domain = true && that.isSetDomain();
-      if (this_present_domain || that_present_domain) {
-        if (!(this_present_domain && that_present_domain))
+      boolean this_present_userId = true && this.isSetUserId();
+      boolean that_present_userId = true && that.isSetUserId();
+      if (this_present_userId || that_present_userId) {
+        if (!(this_present_userId && that_present_userId))
           return false;
-        if (!this.domain.equals(that.domain))
+        if (!this.userId.equals(that.userId))
           return false;
       }
 
-      boolean this_present_entityType = true && this.isSetEntityType();
-      boolean that_present_entityType = true && that.isSetEntityType();
-      if (this_present_entityType || that_present_entityType) {
-        if (!(this_present_entityType && that_present_entityType))
+      boolean this_present_entityTypeId = true && this.isSetEntityTypeId();
+      boolean that_present_entityTypeId = true && that.isSetEntityTypeId();
+      if (this_present_entityTypeId || that_present_entityTypeId) {
+        if (!(this_present_entityTypeId && that_present_entityTypeId))
           return false;
-        if (!this.entityType.equals(that.entityType))
+        if (!this.entityTypeId.equals(that.entityTypeId))
           return false;
       }
 
@@ -32025,15 +32036,15 @@ public class GovRegistryService {
     public int hashCode() {
       List<Object> list = new ArrayList<Object>();
 
-      boolean present_domain = true && (isSetDomain());
-      list.add(present_domain);
-      if (present_domain)
-        list.add(domain);
+      boolean present_userId = true && (isSetUserId());
+      list.add(present_userId);
+      if (present_userId)
+        list.add(userId);
 
-      boolean present_entityType = true && (isSetEntityType());
-      list.add(present_entityType);
-      if (present_entityType)
-        list.add(entityType);
+      boolean present_entityTypeId = true && (isSetEntityTypeId());
+      list.add(present_entityTypeId);
+      if (present_entityTypeId)
+        list.add(entityTypeId);
 
       boolean present_filters = true && (isSetFilters());
       list.add(present_filters);
@@ -32061,22 +32072,22 @@ public class GovRegistryService {
 
       int lastComparison = 0;
 
-      lastComparison = Boolean.valueOf(isSetDomain()).compareTo(other.isSetDomain());
+      lastComparison = Boolean.valueOf(isSetUserId()).compareTo(other.isSetUserId());
       if (lastComparison != 0) {
         return lastComparison;
       }
-      if (isSetDomain()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.domain, other.domain);
+      if (isSetUserId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userId, other.userId);
         if (lastComparison != 0) {
           return lastComparison;
         }
       }
-      lastComparison = Boolean.valueOf(isSetEntityType()).compareTo(other.isSetEntityType());
+      lastComparison = Boolean.valueOf(isSetEntityTypeId()).compareTo(other.isSetEntityTypeId());
       if (lastComparison != 0) {
         return lastComparison;
       }
-      if (isSetEntityType()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.entityType, other.entityType);
+      if (isSetEntityTypeId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.entityTypeId, other.entityTypeId);
         if (lastComparison != 0) {
           return lastComparison;
         }
@@ -32131,19 +32142,19 @@ public class GovRegistryService {
       StringBuilder sb = new StringBuilder("searchEntities_args(");
       boolean first = true;
 
-      sb.append("domain:");
-      if (this.domain == null) {
+      sb.append("userId:");
+      if (this.userId == null) {
         sb.append("null");
       } else {
-        sb.append(this.domain);
+        sb.append(this.userId);
       }
       first = false;
       if (!first) sb.append(", ");
-      sb.append("entityType:");
-      if (this.entityType == null) {
+      sb.append("entityTypeId:");
+      if (this.entityTypeId == null) {
         sb.append("null");
       } else {
-        sb.append(this.entityType);
+        sb.append(this.entityTypeId);
       }
       first = false;
       if (!first) sb.append(", ");
@@ -32168,11 +32179,11 @@ public class GovRegistryService {
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
-      if (domain == null) {
-        throw new org.apache.thrift.protocol.TProtocolException("Required field 'domain' was not present! Struct: " + toString());
+      if (userId == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'userId' was not present! Struct: " + toString());
       }
-      if (entityType == null) {
-        throw new org.apache.thrift.protocol.TProtocolException("Required field 'entityType' was not present! Struct: " + toString());
+      if (entityTypeId == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'entityTypeId' was not present! Struct: " + toString());
       }
       if (filters == null) {
         throw new org.apache.thrift.protocol.TProtocolException("Required field 'filters' was not present! Struct: " + toString());
@@ -32218,18 +32229,18 @@ public class GovRegistryService {
             break;
           }
           switch (schemeField.id) {
-            case 1: // DOMAIN
+            case 1: // USER_ID
               if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-                struct.domain = iprot.readString();
-                struct.setDomainIsSet(true);
+                struct.userId = iprot.readString();
+                struct.setUserIdIsSet(true);
               } else { 
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
-            case 2: // ENTITY_TYPE
+            case 2: // ENTITY_TYPE_ID
               if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-                struct.entityType = iprot.readString();
-                struct.setEntityTypeIsSet(true);
+                struct.entityTypeId = iprot.readString();
+                struct.setEntityTypeIdIsSet(true);
               } else { 
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
@@ -32238,12 +32249,12 @@ public class GovRegistryService {
               if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                 {
                   org.apache.thrift.protocol.TMap _map58 = iprot.readMapBegin();
-                  struct.filters = new HashMap<String,String>(2*_map58.size);
-                  String _key59;
+                  struct.filters = new HashMap<org.apache.airavata.sharing.registry.models.EntitySearchFields,String>(2*_map58.size);
+                  org.apache.airavata.sharing.registry.models.EntitySearchFields _key59;
                   String _val60;
                   for (int _i61 = 0; _i61 < _map58.size; ++_i61)
                   {
-                    _key59 = iprot.readString();
+                    _key59 = org.apache.airavata.sharing.registry.models.EntitySearchFields.findByValue(iprot.readI32());
                     _val60 = iprot.readString();
                     struct.filters.put(_key59, _val60);
                   }
@@ -32291,23 +32302,23 @@ public class GovRegistryService {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
-        if (struct.domain != null) {
-          oprot.writeFieldBegin(DOMAIN_FIELD_DESC);
-          oprot.writeString(struct.domain);
+        if (struct.userId != null) {
+          oprot.writeFieldBegin(USER_ID_FIELD_DESC);
+          oprot.writeString(struct.userId);
           oprot.writeFieldEnd();
         }
-        if (struct.entityType != null) {
-          oprot.writeFieldBegin(ENTITY_TYPE_FIELD_DESC);
-          oprot.writeString(struct.entityType);
+        if (struct.entityTypeId != null) {
+          oprot.writeFieldBegin(ENTITY_TYPE_ID_FIELD_DESC);
+          oprot.writeString(struct.entityTypeId);
           oprot.writeFieldEnd();
         }
         if (struct.filters != null) {
           oprot.writeFieldBegin(FILTERS_FIELD_DESC);
           {
-            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.filters.size()));
-            for (Map.Entry<String, String> _iter62 : struct.filters.entrySet())
+            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.I32, org.apache.thrift.protocol.TType.STRING, struct.filters.size()));
+            for (Map.Entry<org.apache.airavata.sharing.registry.models.EntitySearchFields, String> _iter62 : struct.filters.entrySet())
             {
-              oprot.writeString(_iter62.getKey());
+              oprot.writeI32(_iter62.getKey().getValue());
               oprot.writeString(_iter62.getValue());
             }
             oprot.writeMapEnd();
@@ -32337,13 +32348,13 @@ public class GovRegistryService {
       @Override
       public void write(org.apache.thrift.protocol.TProtocol prot, searchEntities_args struct) throws org.apache.thrift.TException {
         TTupleProtocol oprot = (TTupleProtocol) prot;
-        oprot.writeString(struct.domain);
-        oprot.writeString(struct.entityType);
+        oprot.writeString(struct.userId);
+        oprot.writeString(struct.entityTypeId);
         {
           oprot.writeI32(struct.filters.size());
-          for (Map.Entry<String, String> _iter63 : struct.filters.entrySet())
+          for (Map.Entry<org.apache.airavata.sharing.registry.models.EntitySearchFields, String> _iter63 : struct.filters.entrySet())
           {
-            oprot.writeString(_iter63.getKey());
+            oprot.writeI32(_iter63.getKey().getValue());
             oprot.writeString(_iter63.getValue());
           }
         }
@@ -32354,18 +32365,18 @@ public class GovRegistryService {
       @Override
       public void read(org.apache.thrift.protocol.TProtocol prot, searchEntities_args struct) throws org.apache.thrift.TException {
         TTupleProtocol iprot = (TTupleProtocol) prot;
-        struct.domain = iprot.readString();
-        struct.setDomainIsSet(true);
-        struct.entityType = iprot.readString();
-        struct.setEntityTypeIsSet(true);
+        struct.userId = iprot.readString();
+        struct.setUserIdIsSet(true);
+        struct.entityTypeId = iprot.readString();
+        struct.setEntityTypeIdIsSet(true);
         {
-          org.apache.thrift.protocol.TMap _map64 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.filters = new HashMap<String,String>(2*_map64.size);
-          String _key65;
+          org.apache.thrift.protocol.TMap _map64 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.I32, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.filters = new HashMap<org.apache.airavata.sharing.registry.models.EntitySearchFields,String>(2*_map64.size);
+          org.apache.airavata.sharing.registry.models.EntitySearchFields _key65;
           String _val66;
           for (int _i67 = 0; _i67 < _map64.size; ++_i67)
           {
-            _key65 = iprot.readString();
+            _key65 = org.apache.airavata.sharing.registry.models.EntitySearchFields.findByValue(iprot.readI32());
             _val66 = iprot.readString();
             struct.filters.put(_key65, _val66);
           }

http://git-wip-us.apache.org/repos/asf/airavata/blob/e775f252/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 6f0f388..d3cc54f 100644
--- a/modules/airavata-sharing-registry/thrift_models/sharing_cpi.thrift
+++ b/modules/airavata-sharing-registry/thrift_models/sharing_cpi.thrift
@@ -73,8 +73,8 @@ service GovRegistryService {
     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)
-    list<sharing_models.Entity> searchEntities(1: required string domain, 2: required string entityType,
-            3: required map<string, string> filters, 4: required i32 offset, 5: required i32 limit) throws (1: sharing_models.GovRegistryException gre)
+    list<sharing_models.Entity> searchEntities(1: required string userId, 2: required string entityTypeId, 3: required map<sharing_models.EntitySearchFields,
+     string> filters, 4: required i32 offset, 5: required i32 limit) throws (1: sharing_models.GovRegistryException gre)
 
     /**
      * Permission Operations

http://git-wip-us.apache.org/repos/asf/airavata/blob/e775f252/modules/airavata-sharing-registry/thrift_models/sharing_models.thrift
----------------------------------------------------------------------
diff --git a/modules/airavata-sharing-registry/thrift_models/sharing_models.thrift b/modules/airavata-sharing-registry/thrift_models/sharing_models.thrift
index 8c40ae2..5670c5e 100644
--- a/modules/airavata-sharing-registry/thrift_models/sharing_models.thrift
+++ b/modules/airavata-sharing-registry/thrift_models/sharing_models.thrift
@@ -78,6 +78,12 @@ struct EntityType {
     6: optional i64 updatedTime
 }
 
+enum EntitySearchFields {
+    NAME,
+    DESCRIPTION,
+    FULL_TEXT
+}
+
 
 struct Entity {
     1: optional string entityId = DO_NOT_SET_AT_CLIENTS_ID,