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/12 20:42:50 UTC

[1/3] airavata git commit: adding search criteria as a new struct

Repository: airavata
Updated Branches:
  refs/heads/develop 6250ff1dc -> bff76559e


http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/modules/sharing-registry/thrift_models/sharing_cpi.thrift
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/thrift_models/sharing_cpi.thrift b/modules/sharing-registry/thrift_models/sharing_cpi.thrift
index 3b26a27..02a7768 100644
--- a/modules/sharing-registry/thrift_models/sharing_cpi.thrift
+++ b/modules/sharing-registry/thrift_models/sharing_cpi.thrift
@@ -73,8 +73,7 @@ service GovRegistryService {
     bool updateEntity(1: required sharing_models.Entity entity) throws (1: sharing_models.SharingRegistryException gre)
     bool deleteEntity(1: required string entityId) throws (1: sharing_models.SharingRegistryException gre)
     sharing_models.Entity getEntity(1: required string entityId) throws (1: sharing_models.SharingRegistryException 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.SharingRegistryException gre)
+    list<sharing_models.Entity> searchEntities(1: required string userId, 2: required string entityTypeId, 3: required list<sharing_models.SearchCriteria> filters, 4: required i32 offset, 5: required i32 limit) throws (1: sharing_models.SharingRegistryException gre)
     list<sharing_models.User> getListOfSharedUsers(1: required string entityId, 2: required string permissionTypeId) throws (1: sharing_models.SharingRegistryException gre)
     list<sharing_models.UserGroup> getListOfSharedGroups(1: required string entityId, 2: required string permissionTypeId) throws (1: sharing_models.SharingRegistryException gre)
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/modules/sharing-registry/thrift_models/sharing_models.thrift
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/thrift_models/sharing_models.thrift b/modules/sharing-registry/thrift_models/sharing_models.thrift
index 8e78143..79bb564 100644
--- a/modules/sharing-registry/thrift_models/sharing_models.thrift
+++ b/modules/sharing-registry/thrift_models/sharing_models.thrift
@@ -78,12 +78,27 @@ struct EntityType {
     6: optional i64 updatedTime
 }
 
-enum EntitySearchFields {
+enum EntitySearchField {
     NAME,
     DESCRIPTION,
-    FULL_TEXT
+    FULL_TEXT,
+    PRRENT_ENTITY_ID,
+    CREATED_TIME,
+    UPDATED_TIME
 }
 
+enum SearchCondition {
+    EQUAL,
+    LIKE,
+    GTE,
+    LTE
+}
+
+struct SearchCriteria {
+    1: optional EntitySearchField searchField,
+    2: optional string value,
+    3: optional SearchCondition searchCondition
+}
 
 struct Entity {
     1: optional string entityId = DO_NOT_SET_AT_CLIENTS_ID,


[3/3] airavata git commit: adding search criteria as a new struct

Posted by sc...@apache.org.
adding search criteria as a new struct


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

Branch: refs/heads/develop
Commit: bff76559ecdb0a49250404aab4c57a5e41630d1c
Parents: 6250ff1
Author: scnakandala <su...@gmail.com>
Authored: Wed Oct 12 16:42:40 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Oct 12 16:42:45 2016 -0400

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |    6 +-
 modules/sharing-registry/README.md              |    2 +-
 .../sharing/registry/AiravataDataMigrator.java  |  166 ++
 .../airavata/sharing/registry/DataMigrator.java |  166 --
 .../db/repositories/EntityRepository.java       |   35 +-
 .../sharing/registry/db/utils/DBConstants.java  |   18 +-
 .../server/SharingRegistryServerHandler.java    |    2 +-
 .../SharingRegistryServerHandlerTest.java       |    9 +-
 .../sharing-registry-stubs/pom.xml              |   14 +
 .../sharing/registry/models/Domain.java         |    2 +-
 .../sharing/registry/models/Entity.java         |    2 +-
 .../registry/models/EntitySearchField.java      |   53 +
 .../registry/models/EntitySearchFields.java     |   48 -
 .../sharing/registry/models/EntityType.java     |    2 +-
 .../registry/models/GroupMembership.java        |    2 +-
 .../sharing/registry/models/PermissionType.java |    2 +-
 .../registry/models/SearchCondition.java        |   51 +
 .../sharing/registry/models/SearchCriteria.java |  642 +++++++
 .../sharing/registry/models/Sharing.java        |    2 +-
 .../models/SharingRegistryException.java        |   36 +-
 .../airavata/sharing/registry/models/User.java  |    2 +-
 .../sharing/registry/models/UserGroup.java      |    2 +-
 .../service/cpi/GovRegistryService.java         | 1609 +++++++++---------
 .../thrift_models/sharing_cpi.thrift            |    3 +-
 .../thrift_models/sharing_models.thrift         |   19 +-
 25 files changed, 1829 insertions(+), 1066 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index a0a563c..f0c0559 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -756,7 +756,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                 // user projects + user accessible projects
                 List<String> accessibleProjectIds = new ArrayList<>();
                 sharingRegistryServerHandler.searchEntities(userName+"@"+gatewayId , gatewayId+":PROJECT",
-                        new HashMap<>(), offset, limit).stream().forEach(p->accessibleProjectIds.add(p.entityId));
+                        new ArrayList<>(), offset, limit).stream().forEach(p->accessibleProjectIds.add(p.entityId));
                 return getRegistryServiceClient().searchProjects(gatewayId, userName, accessibleProjectIds, new HashMap<>(), limit, offset);
             }else{
                 return getRegistryServiceClient().getUserProjects(gatewayId, userName, limit, offset);
@@ -801,7 +801,7 @@ public class AiravataServerHandler implements Airavata.Iface {
 
             if(ServerSettings.isEnableSharing())
                 sharingRegistryServerHandler.searchEntities(userName+"@"+gatewayId, gatewayId+":PROJECT",
-                        new HashMap<>(), 0, -1).stream().forEach(e->accessibleProjIds.add(e.entityId));
+                        new ArrayList<>(), 0, -1).stream().forEach(e->accessibleProjIds.add(e.entityId));
 
             return getRegistryServiceClient().searchProjects(gatewayId, userName, accessibleProjIds, filters, limit, offset);
         }catch (Exception e) {
@@ -838,7 +838,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             List<String> accessibleExpIds = new ArrayList<>();
             if(ServerSettings.isEnableSharing())
                 sharingRegistryServerHandler.searchEntities(userName+"@"+gatewayId, gatewayId+":EXPERIMENT",
-                        new HashMap<>(), 0, -1).forEach(e->accessibleExpIds.add(e.entityId));
+                        new ArrayList<>(), 0, -1).forEach(e->accessibleExpIds.add(e.entityId));
             return getRegistryServiceClient().searchExperiments(gatewayId, userName, accessibleExpIds, filters, limit, offset);
         }catch (Exception e) {
             logger.error("Error while retrieving experiments", e);

http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/modules/sharing-registry/README.md
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/README.md b/modules/sharing-registry/README.md
index 299e7b4..524a36b 100644
--- a/modules/sharing-registry/README.md
+++ b/modules/sharing-registry/README.md
@@ -1,3 +1,3 @@
-## Airavata Governance Registry
+## Airavata Sharing Registry
 
 * This module implements a generic service for access controlling to resources and to provide group based resource sharing
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/modules/sharing-registry/sharing-data-migrator/src/main/java/org/apache/airavata/sharing/registry/AiravataDataMigrator.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-data-migrator/src/main/java/org/apache/airavata/sharing/registry/AiravataDataMigrator.java b/modules/sharing-registry/sharing-data-migrator/src/main/java/org/apache/airavata/sharing/registry/AiravataDataMigrator.java
new file mode 100644
index 0000000..1a80683
--- /dev/null
+++ b/modules/sharing-registry/sharing-data-migrator/src/main/java/org/apache/airavata/sharing/registry/AiravataDataMigrator.java
@@ -0,0 +1,166 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.sharing.registry;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.sharing.registry.models.*;
+import org.apache.airavata.sharing.registry.server.SharingRegistryServerHandler;
+import org.apache.thrift.TException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.HashMap;
+import java.util.Map;
+
+public class AiravataDataMigrator {
+    private final static Logger logger = LoggerFactory.getLogger(AiravataDataMigrator.class);
+
+    public static void main(String[] args) throws SQLException, ClassNotFoundException, TException, ApplicationSettingsException {
+        Connection expCatConnection = ConnectionFactory.getInstance().getExpCatConnection();
+
+        SharingRegistryServerHandler govRegistryServerHandler = new SharingRegistryServerHandler();
+
+        String query = "SELECT * FROM GATEWAY";
+        Statement statement = expCatConnection.createStatement();
+        ResultSet rs = statement.executeQuery(query);
+
+        while (rs.next()) {
+            //Creating domain entries
+            Domain domain = new Domain();
+            domain.setDomainId(rs.getString("GATEWAY_ID"));
+            if(rs.getString("GATEWAY_NAME") != null)
+                domain.setName(rs.getString("GATEWAY_NAME"));
+            else
+                domain.setName(rs.getString("GATEWAY_ID"));
+            domain.setDescription("Domain entry for " + domain.name);
+
+            govRegistryServerHandler.createDomain(domain);
+
+            //Creating Entity Types for each domain
+            EntityType entityType = new EntityType();
+            entityType.setEntityTypeId(domain.domainId+":PROJECT");
+            entityType.setDomainId(domain.domainId);
+            entityType.setName("PROJECT");
+            entityType.setDescription("Project entity type");
+            govRegistryServerHandler.createEntityType(entityType);
+
+            entityType = new EntityType();
+            entityType.setEntityTypeId(domain.domainId+":EXPERIMENT");
+            entityType.setDomainId(domain.domainId);
+            entityType.setName("EXPERIMENT");
+            entityType.setDescription("Experiment entity type");
+            govRegistryServerHandler.createEntityType(entityType);
+
+            entityType = new EntityType();
+            entityType.setEntityTypeId(domain.domainId+":FILE");
+            entityType.setDomainId(domain.domainId);
+            entityType.setName("FILE");
+            entityType.setDescription("File entity type");
+            govRegistryServerHandler.createEntityType(entityType);
+
+            //Creating Permission Types for each domain
+            PermissionType permissionType = new PermissionType();
+            permissionType.setPermissionTypeId(domain.domainId+":READ");
+            permissionType.setDomainId(domain.domainId);
+            permissionType.setName("READ");
+            permissionType.setDescription("Read permission type");
+            govRegistryServerHandler.createPermissionType(permissionType);
+
+            permissionType = new PermissionType();
+            permissionType.setPermissionTypeId(domain.domainId+":WRITE");
+            permissionType.setDomainId(domain.domainId);
+            permissionType.setName("WRITE");
+            permissionType.setDescription("Write permission type");
+            govRegistryServerHandler.createPermissionType(permissionType);
+        }
+
+        //Creating user entries
+        query = "SELECT * FROM USERS";
+        statement = expCatConnection.createStatement();
+        rs = statement.executeQuery(query);
+        while(rs.next()){
+            User user = new User();
+            user.setUserId(rs.getString("AIRAVATA_INTERNAL_USER_ID"));
+            user.setDomainId(rs.getString("GATEWAY_ID"));
+            user.setUserName(rs.getString("USER_NAME"));
+
+            govRegistryServerHandler.createUser(user);
+        }
+
+        //Creating project entries
+        query = "SELECT * FROM PROJECT";
+        statement = expCatConnection.createStatement();
+        rs = statement.executeQuery(query);
+        while(rs.next()){
+            Entity entity = new Entity();
+            entity.setEntityId(rs.getString("PROJECT_ID"));
+            entity.setDomainId(rs.getString("GATEWAY_ID"));
+            entity.setEntityTypeId(rs.getString("GATEWAY_ID") + ":PROJECT");
+            entity.setOwnerId(rs.getString("USER_NAME") + "@" + rs.getString("GATEWAY_ID"));
+            entity.setName(rs.getString("PROJECT_NAME"));
+            entity.setDescription(rs.getString("DESCRIPTION"));
+            if(entity.getDescription() == null)
+                entity.setFullText(entity.getName());
+            else
+                entity.setFullText(entity.getName() + " " + entity.getDescription());
+            Map<String, String> metadata = new HashMap<>();
+            metadata.put("CREATION_TIME", rs.getDate("CREATION_TIME").toString());
+
+            govRegistryServerHandler.createEntity(entity);
+        }
+
+        //Creating experiment entries
+        query = "SELECT * FROM EXPERIMENT";
+        statement = expCatConnection.createStatement();
+        rs = statement.executeQuery(query);
+        while(rs.next()){
+            Entity entity = new Entity();
+            entity.setEntityId(rs.getString("EXPERIMENT_ID"));
+            entity.setDomainId(rs.getString("GATEWAY_ID"));
+            entity.setEntityTypeId(rs.getString("GATEWAY_ID") + ":EXPERIMENT");
+            entity.setOwnerId(rs.getString("USER_NAME") + "@" + rs.getString("GATEWAY_ID"));
+            entity.setParentEntityId(rs.getString("PROJECT_ID"));
+            entity.setName(rs.getString("EXPERIMENT_NAME"));
+            entity.setDescription(rs.getString("DESCRIPTION"));
+            if(entity.getDescription() == null)
+                entity.setFullText(entity.getName());
+            else
+                entity.setFullText(entity.getName() + " " + entity.getDescription());
+            Map<String, String> metadata = new HashMap<>();
+            metadata.put("CREATION_TIME", rs.getDate("CREATION_TIME").toString());
+            metadata.put("EXPERIMENT_TYPE", rs.getString("EXPERIMENT_TYPE"));
+            metadata.put("EXECUTION_ID", rs.getString("EXECUTION_ID"));
+            metadata.put("GATEWAY_EXECUTION_ID", rs.getString("GATEWAY_EXECUTION_ID"));
+            metadata.put("ENABLE_EMAIL_NOTIFICATION", rs.getString("ENABLE_EMAIL_NOTIFICATION"));
+            metadata.put("EMAIL_ADDRESSES", rs.getString("EMAIL_ADDRESSES"));
+            metadata.put("GATEWAY_INSTANCE_ID", rs.getString("GATEWAY_INSTANCE_ID"));
+            metadata.put("ARCHIVE", rs.getString("ARCHIVE"));
+
+            govRegistryServerHandler.createEntity(entity);
+        }
+
+        expCatConnection.close();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/modules/sharing-registry/sharing-data-migrator/src/main/java/org/apache/airavata/sharing/registry/DataMigrator.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-data-migrator/src/main/java/org/apache/airavata/sharing/registry/DataMigrator.java b/modules/sharing-registry/sharing-data-migrator/src/main/java/org/apache/airavata/sharing/registry/DataMigrator.java
deleted file mode 100644
index ea23042..0000000
--- a/modules/sharing-registry/sharing-data-migrator/src/main/java/org/apache/airavata/sharing/registry/DataMigrator.java
+++ /dev/null
@@ -1,166 +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;
-
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.sharing.registry.models.*;
-import org.apache.airavata.sharing.registry.server.SharingRegistryServerHandler;
-import org.apache.thrift.TException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.HashMap;
-import java.util.Map;
-
-public class DataMigrator {
-    private final static Logger logger = LoggerFactory.getLogger(DataMigrator.class);
-
-    public static void main(String[] args) throws SQLException, ClassNotFoundException, TException, ApplicationSettingsException {
-        Connection expCatConnection = ConnectionFactory.getInstance().getExpCatConnection();
-
-        SharingRegistryServerHandler govRegistryServerHandler = new SharingRegistryServerHandler();
-
-        String query = "SELECT * FROM GATEWAY";
-        Statement statement = expCatConnection.createStatement();
-        ResultSet rs = statement.executeQuery(query);
-
-        while (rs.next()) {
-            //Creating domain entries
-            Domain domain = new Domain();
-            domain.setDomainId(rs.getString("GATEWAY_ID"));
-            if(rs.getString("GATEWAY_NAME") != null)
-                domain.setName(rs.getString("GATEWAY_NAME"));
-            else
-                domain.setName(rs.getString("GATEWAY_ID"));
-            domain.setDescription("Domain entry for " + domain.name);
-
-            govRegistryServerHandler.createDomain(domain);
-
-            //Creating Entity Types for each domain
-            EntityType entityType = new EntityType();
-            entityType.setEntityTypeId(domain.domainId+":PROJECT");
-            entityType.setDomainId(domain.domainId);
-            entityType.setName("PROJECT");
-            entityType.setDescription("Project entity type");
-            govRegistryServerHandler.createEntityType(entityType);
-
-            entityType = new EntityType();
-            entityType.setEntityTypeId(domain.domainId+":EXPERIMENT");
-            entityType.setDomainId(domain.domainId);
-            entityType.setName("EXPERIMENT");
-            entityType.setDescription("Experiment entity type");
-            govRegistryServerHandler.createEntityType(entityType);
-
-            entityType = new EntityType();
-            entityType.setEntityTypeId(domain.domainId+":FILE");
-            entityType.setDomainId(domain.domainId);
-            entityType.setName("FILE");
-            entityType.setDescription("File entity type");
-            govRegistryServerHandler.createEntityType(entityType);
-
-            //Creating Permission Types for each domain
-            PermissionType permissionType = new PermissionType();
-            permissionType.setPermissionTypeId(domain.domainId+":READ");
-            permissionType.setDomainId(domain.domainId);
-            permissionType.setName("READ");
-            permissionType.setDescription("Read permission type");
-            govRegistryServerHandler.createPermissionType(permissionType);
-
-            permissionType = new PermissionType();
-            permissionType.setPermissionTypeId(domain.domainId+":WRITE");
-            permissionType.setDomainId(domain.domainId);
-            permissionType.setName("WRITE");
-            permissionType.setDescription("Write permission type");
-            govRegistryServerHandler.createPermissionType(permissionType);
-        }
-
-        //Creating user entries
-        query = "SELECT * FROM USERS";
-        statement = expCatConnection.createStatement();
-        rs = statement.executeQuery(query);
-        while(rs.next()){
-            User user = new User();
-            user.setUserId(rs.getString("AIRAVATA_INTERNAL_USER_ID"));
-            user.setDomainId(rs.getString("GATEWAY_ID"));
-            user.setUserName(rs.getString("USER_NAME"));
-
-            govRegistryServerHandler.createUser(user);
-        }
-
-        //Creating project entries
-        query = "SELECT * FROM PROJECT";
-        statement = expCatConnection.createStatement();
-        rs = statement.executeQuery(query);
-        while(rs.next()){
-            Entity entity = new Entity();
-            entity.setEntityId(rs.getString("PROJECT_ID"));
-            entity.setDomainId(rs.getString("GATEWAY_ID"));
-            entity.setEntityTypeId(rs.getString("GATEWAY_ID") + ":PROJECT");
-            entity.setOwnerId(rs.getString("USER_NAME") + "@" + rs.getString("GATEWAY_ID"));
-            entity.setName(rs.getString("PROJECT_NAME"));
-            entity.setDescription(rs.getString("DESCRIPTION"));
-            if(entity.getDescription() == null)
-                entity.setFullText(entity.getName());
-            else
-                entity.setFullText(entity.getName() + " " + entity.getDescription());
-            Map<String, String> metadata = new HashMap<>();
-            metadata.put("CREATION_TIME", rs.getDate("CREATION_TIME").toString());
-
-            govRegistryServerHandler.createEntity(entity);
-        }
-
-        //Creating experiment entries
-        query = "SELECT * FROM EXPERIMENT";
-        statement = expCatConnection.createStatement();
-        rs = statement.executeQuery(query);
-        while(rs.next()){
-            Entity entity = new Entity();
-            entity.setEntityId(rs.getString("EXPERIMENT_ID"));
-            entity.setDomainId(rs.getString("GATEWAY_ID"));
-            entity.setEntityTypeId(rs.getString("GATEWAY_ID") + ":EXPERIMENT");
-            entity.setOwnerId(rs.getString("USER_NAME") + "@" + rs.getString("GATEWAY_ID"));
-            entity.setParentEntityId(rs.getString("PROJECT_ID"));
-            entity.setName(rs.getString("EXPERIMENT_NAME"));
-            entity.setDescription(rs.getString("DESCRIPTION"));
-            if(entity.getDescription() == null)
-                entity.setFullText(entity.getName());
-            else
-                entity.setFullText(entity.getName() + " " + entity.getDescription());
-            Map<String, String> metadata = new HashMap<>();
-            metadata.put("CREATION_TIME", rs.getDate("CREATION_TIME").toString());
-            metadata.put("EXPERIMENT_TYPE", rs.getString("EXPERIMENT_TYPE"));
-            metadata.put("EXECUTION_ID", rs.getString("EXECUTION_ID"));
-            metadata.put("GATEWAY_EXECUTION_ID", rs.getString("GATEWAY_EXECUTION_ID"));
-            metadata.put("ENABLE_EMAIL_NOTIFICATION", rs.getString("ENABLE_EMAIL_NOTIFICATION"));
-            metadata.put("EMAIL_ADDRESSES", rs.getString("EMAIL_ADDRESSES"));
-            metadata.put("GATEWAY_INSTANCE_ID", rs.getString("GATEWAY_INSTANCE_ID"));
-            metadata.put("ARCHIVE", rs.getString("ARCHIVE"));
-
-            govRegistryServerHandler.createEntity(entity);
-        }
-
-        expCatConnection.close();
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/modules/sharing-registry/sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityRepository.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityRepository.java b/modules/sharing-registry/sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityRepository.java
index bc726f6..b7137d2 100644
--- a/modules/sharing-registry/sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityRepository.java
+++ b/modules/sharing-registry/sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityRepository.java
@@ -23,15 +23,12 @@ 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.SharingRegistryException;
+import org.apache.airavata.sharing.registry.models.*;
 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);
@@ -46,7 +43,7 @@ public class EntityRepository extends AbstractRepository<Entity, EntityEntity, S
         return select(filters, 0, -1);
     }
 
-    public List<Entity> searchEntities(List<String> groupIds, String entityTypeId, Map<EntitySearchFields, String> filters,
+    public List<Entity> searchEntities(List<String> groupIds, String entityTypeId, List<SearchCriteria> filters,
                                        int offset, int limit) throws SharingRegistryException {
         String groupIdString = "'";
         for(String groupId : groupIds)
@@ -58,13 +55,27 @@ public class EntityRepository extends AbstractRepository<Entity, EntityEntity, S
                 "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 ";
+        for(SearchCriteria searchCriteria : filters){
+            if(searchCriteria.getSearchField().equals(EntitySearchField.NAME)){
+                query += "E." + DBConstants.EntityTable.NAME + " LIKE '%" + searchCriteria.getValue() + "%' AND ";
+            }else if(searchCriteria.getSearchField().equals(EntitySearchField.DESCRIPTION)){
+                query += "E." + DBConstants.EntityTable.DESCRIPTION + " LIKE '%" + searchCriteria.getValue() + "%' AND ";
+            }else if(searchCriteria.getSearchField().equals(EntitySearchField.FULL_TEXT)){
+                query += "E." + DBConstants.EntityTable.FULL_TEXT + " LIKE '%" + searchCriteria.getValue() + "%' AND ";
+            }else if(searchCriteria.getSearchField().equals(EntitySearchField.PRRENT_ENTITY_ID)){
+                query += "E." + DBConstants.EntityTable.PARENT_ENTITY_ID + " = '" + searchCriteria.getValue() + "' AND ";
+            }else if(searchCriteria.getSearchField().equals(EntitySearchField.CREATED_TIME)){
+                if(searchCriteria.getSearchCondition().equals(SearchCondition.GTE)){
+                    query += "E." + DBConstants.EntityTable.CREATED_TIME + " >= " + Integer.parseInt(searchCriteria.getValue().trim()) + " AND ";
+                }else{
+                    query += "E." + DBConstants.EntityTable.CREATED_TIME + " <= " + Integer.parseInt(searchCriteria.getValue().trim()) + " AND ";
+                }
+            }else if(searchCriteria.getSearchField().equals(EntitySearchField.UPDATED_TIME)){
+                if(searchCriteria.getSearchCondition().equals(SearchCondition.GTE)){
+                    query += "E." + DBConstants.EntityTable.UPDATED_TIME + " >= " + Integer.parseInt(searchCriteria.getValue().trim()) + " AND ";
+                }else{
+                    query += "E." + DBConstants.EntityTable.UPDATED_TIME + " <= " + Integer.parseInt(searchCriteria.getValue().trim()) + " AND ";
+                }
             }
         }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/modules/sharing-registry/sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/utils/DBConstants.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/utils/DBConstants.java b/modules/sharing-registry/sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/utils/DBConstants.java
index f963de2..387e0e5 100644
--- a/modules/sharing-registry/sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/utils/DBConstants.java
+++ b/modules/sharing-registry/sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/db/utils/DBConstants.java
@@ -26,18 +26,22 @@ import org.slf4j.LoggerFactory;
 public class DBConstants {
     private final static Logger logger = LoggerFactory.getLogger(DBConstants.class);
 
-    public static int SELECT_MAX_ROWS = 10000;
+    public static int SELECT_MAX_ROWS = 1000;
 
     public static class DomainTable {
         public static String DOMAIN_ID = "domainId";
         public static String NAME = "name";
         public static String DESCRIPTION = "description";
+        public static final String CREATED_TIME = "createdTime";
+        public static final String UPDATED_TIME = "updatedTime";
     }
 
     public static class UserTable {
         public static String USER_ID = "userId";
         public static String DOMAIN_ID = "domainId";
         public static String USER_NAME = "userName";
+        public static final String CREATED_TIME = "createdTime";
+        public static final String UPDATED_TIME = "updatedTime";
     }
 
     public static class UserGroupTable {
@@ -47,23 +51,31 @@ public class DBConstants {
         public static String DESCRIPTION = "description";
         public static String OWNER_ID = "ownerId";
         public static String GROUP_TYPE = "groupType";
+        public static final String CREATED_TIME = "createdTime";
+        public static final String UPDATED_TIME = "updatedTime";
     }
 
     public static class GroupMembershipTable {
         public static String PARENT_ID = "parentId";
         public static String CHILD_ID = "childId";
         public static String CHILD_TYPE = "childType";
+        public static final String CREATED_TIME = "createdTime";
+        public static final String UPDATED_TIME = "updatedTime";
     }
 
     public static class EntityTypeTable {
         public static String ENTITY_TYPE_ID = "entityTypeId";
         public static String DOMAIN_ID = "domainId";
+        public static final String CREATED_TIME = "createdTime";
+        public static final String UPDATED_TIME = "updatedTime";
     }
 
     public static class PermissionTypeTable {
         public static String ENTITY_TYPE_ID = "permissionTypeId";
         public static String DOMAIN_ID = "domainId";
         public static String NAME = "name";
+        public static final String CREATED_TIME = "createdTime";
+        public static final String UPDATED_TIME = "updatedTime";
     }
 
     public static class EntityTable {
@@ -73,6 +85,8 @@ public class DBConstants {
         public static String NAME = "name";
         public static String DESCRIPTION = "description";
         public static String FULL_TEXT = "fullText";
+        public static final String CREATED_TIME = "createdTime";
+        public static final String UPDATED_TIME = "updatedTime";
     }
 
     public static class SharingTable {
@@ -81,5 +95,7 @@ public class DBConstants {
         public static String GROUP_ID = "groupId";
         public static String INHERITED_PARENT_ID = "inheritedParentId";
         public static final String SHARING_TYPE = "sharingType";
+        public static final String CREATED_TIME = "createdTime";
+        public static final String UPDATED_TIME = "updatedTime";
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/modules/sharing-registry/sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/server/SharingRegistryServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/server/SharingRegistryServerHandler.java b/modules/sharing-registry/sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/server/SharingRegistryServerHandler.java
index 1c7714f..7f2eb32 100644
--- a/modules/sharing-registry/sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/server/SharingRegistryServerHandler.java
+++ b/modules/sharing-registry/sharing-registry-core/src/main/java/org/apache/airavata/sharing/registry/server/SharingRegistryServerHandler.java
@@ -435,7 +435,7 @@ public class SharingRegistryServerHandler implements GovRegistryService.Iface{
     }
 
     @Override
-    public List<Entity> searchEntities(String userId, String entityTypeId, Map<EntitySearchFields, String> filters,
+    public List<Entity> searchEntities(String userId, String entityTypeId, List<SearchCriteria> filters,
                                        int offset, int limit) throws SharingRegistryException, TException {
         List<String> groupIds = new ArrayList<>();
         groupIds.add(userId);

http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/modules/sharing-registry/sharing-registry-core/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-core/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java b/modules/sharing-registry/sharing-registry-core/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java
index 09e98ca..cf92856 100644
--- a/modules/sharing-registry/sharing-registry-core/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java
+++ b/modules/sharing-registry/sharing-registry-core/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java
@@ -32,6 +32,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.sql.SQLException;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
@@ -272,8 +273,12 @@ public class SharingRegistryServerHandlerTest {
         Assert.assertTrue(sharingRegistryServerHandler.userHasAccess(domainId, userId1, entityId4, permissionTypeId1));
         Assert.assertFalse(sharingRegistryServerHandler.userHasAccess(domainId, userId3, entityId1, permissionTypeId1));
 
-        HashMap<EntitySearchFields, String> filters = new HashMap<>();
-        filters.put(EntitySearchFields.NAME, "Input");
+        ArrayList<SearchCriteria> filters = new ArrayList<>();
+        SearchCriteria searchCriteria = new SearchCriteria();
+        searchCriteria.setSearchCondition(SearchCondition.LIKE);
+        searchCriteria.setValue("Input");
+        searchCriteria.setSearchField(EntitySearchField.NAME);
+        filters.add(searchCriteria);
         Assert.assertTrue(sharingRegistryServerHandler.searchEntities(userId1, entityTypeId3, filters, 0, -1).size() > 0);
 
         Assert.assertNotNull(sharingRegistryServerHandler.getListOfSharedUsers(entityId1, permissionTypeId1));

http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/modules/sharing-registry/sharing-registry-stubs/pom.xml
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-stubs/pom.xml b/modules/sharing-registry/sharing-registry-stubs/pom.xml
index f0a46ef..eb47dc9 100644
--- a/modules/sharing-registry/sharing-registry-stubs/pom.xml
+++ b/modules/sharing-registry/sharing-registry-stubs/pom.xml
@@ -20,5 +20,19 @@
         </dependency>
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.5.1</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
 
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java
index eb30e38..f3b5d25 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java
+++ b/modules/sharing-registry/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-06")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-12")
 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/bff76559/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Entity.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Entity.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Entity.java
index 0818b70..6f169aa 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Entity.java
+++ b/modules/sharing-registry/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-06")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-12")
 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/bff76559/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntitySearchField.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntitySearchField.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntitySearchField.java
new file mode 100644
index 0000000..8a88f01
--- /dev/null
+++ b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntitySearchField.java
@@ -0,0 +1,53 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.sharing.registry.models;
+
+
+public enum EntitySearchField implements org.apache.thrift.TEnum {
+  NAME(0),
+  DESCRIPTION(1),
+  FULL_TEXT(2),
+  PRRENT_ENTITY_ID(3),
+  CREATED_TIME(4),
+  UPDATED_TIME(5);
+
+  private final int value;
+
+  private EntitySearchField(int value) {
+    this.value = value;
+  }
+
+  /**
+   * Get the integer value of this enum value, as defined in the Thrift IDL.
+   */
+  public int getValue() {
+    return value;
+  }
+
+  /**
+   * Find a the enum type by its integer value, as defined in the Thrift IDL.
+   * @return null if the value is not found.
+   */
+  public static EntitySearchField findByValue(int value) { 
+    switch (value) {
+      case 0:
+        return NAME;
+      case 1:
+        return DESCRIPTION;
+      case 2:
+        return FULL_TEXT;
+      case 3:
+        return PRRENT_ENTITY_ID;
+      case 4:
+        return CREATED_TIME;
+      case 5:
+        return UPDATED_TIME;
+      default:
+        return null;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntitySearchFields.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntitySearchFields.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntitySearchFields.java
deleted file mode 100644
index 6832191..0000000
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntitySearchFields.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * Autogenerated by Thrift Compiler (0.9.3)
- *
- * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
- *  @generated
- */
-package org.apache.airavata.sharing.registry.models;
-
-
-import java.util.Map;
-import java.util.HashMap;
-import org.apache.thrift.TEnum;
-
-public enum EntitySearchFields implements org.apache.thrift.TEnum {
-  NAME(0),
-  DESCRIPTION(1),
-  FULL_TEXT(2);
-
-  private final int value;
-
-  private EntitySearchFields(int value) {
-    this.value = value;
-  }
-
-  /**
-   * Get the integer value of this enum value, as defined in the Thrift IDL.
-   */
-  public int getValue() {
-    return value;
-  }
-
-  /**
-   * Find a the enum type by its integer value, as defined in the Thrift IDL.
-   * @return null if the value is not found.
-   */
-  public static EntitySearchFields findByValue(int value) { 
-    switch (value) {
-      case 0:
-        return NAME;
-      case 1:
-        return DESCRIPTION;
-      case 2:
-        return FULL_TEXT;
-      default:
-        return null;
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntityType.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntityType.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntityType.java
index 4244502..95220e3 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntityType.java
+++ b/modules/sharing-registry/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-06")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-12")
 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/bff76559/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupMembership.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupMembership.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupMembership.java
index 5ec148f..784ae02 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupMembership.java
+++ b/modules/sharing-registry/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-06")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-12")
 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/bff76559/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/PermissionType.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/PermissionType.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/PermissionType.java
index 806c15b..bb3c945 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/PermissionType.java
+++ b/modules/sharing-registry/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-06")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-12")
 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/bff76559/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SearchCondition.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SearchCondition.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SearchCondition.java
new file mode 100644
index 0000000..a111c6a
--- /dev/null
+++ b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SearchCondition.java
@@ -0,0 +1,51 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.sharing.registry.models;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import org.apache.thrift.TEnum;
+
+public enum SearchCondition implements org.apache.thrift.TEnum {
+  EQUAL(0),
+  LIKE(1),
+  GTE(2),
+  LTE(3);
+
+  private final int value;
+
+  private SearchCondition(int value) {
+    this.value = value;
+  }
+
+  /**
+   * Get the integer value of this enum value, as defined in the Thrift IDL.
+   */
+  public int getValue() {
+    return value;
+  }
+
+  /**
+   * Find a the enum type by its integer value, as defined in the Thrift IDL.
+   * @return null if the value is not found.
+   */
+  public static SearchCondition findByValue(int value) { 
+    switch (value) {
+      case 0:
+        return EQUAL;
+      case 1:
+        return LIKE;
+      case 2:
+        return GTE;
+      case 3:
+        return LTE;
+      default:
+        return null;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SearchCriteria.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SearchCriteria.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SearchCriteria.java
new file mode 100644
index 0000000..3693a19
--- /dev/null
+++ b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SearchCriteria.java
@@ -0,0 +1,642 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.sharing.registry.models;
+
+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.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 org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-12")
+public class SearchCriteria implements org.apache.thrift.TBase<SearchCriteria, SearchCriteria._Fields>, java.io.Serializable, Cloneable, Comparable<SearchCriteria> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("SearchCriteria");
+
+  private static final org.apache.thrift.protocol.TField SEARCH_FIELD_FIELD_DESC = new org.apache.thrift.protocol.TField("searchField", org.apache.thrift.protocol.TType.I32, (short)1);
+  private static final org.apache.thrift.protocol.TField VALUE_FIELD_DESC = new org.apache.thrift.protocol.TField("value", org.apache.thrift.protocol.TType.STRING, (short)2);
+  private static final org.apache.thrift.protocol.TField SEARCH_CONDITION_FIELD_DESC = new org.apache.thrift.protocol.TField("searchCondition", org.apache.thrift.protocol.TType.I32, (short)3);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new SearchCriteriaStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new SearchCriteriaTupleSchemeFactory());
+  }
+
+  /**
+   * 
+   * @see EntitySearchField
+   */
+  public EntitySearchField searchField; // optional
+  public String value; // optional
+  /**
+   * 
+   * @see SearchCondition
+   */
+  public SearchCondition searchCondition; // optional
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    /**
+     * 
+     * @see EntitySearchField
+     */
+    SEARCH_FIELD((short)1, "searchField"),
+    VALUE((short)2, "value"),
+    /**
+     * 
+     * @see SearchCondition
+     */
+    SEARCH_CONDITION((short)3, "searchCondition");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // SEARCH_FIELD
+          return SEARCH_FIELD;
+        case 2: // VALUE
+          return VALUE;
+        case 3: // SEARCH_CONDITION
+          return SEARCH_CONDITION;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  private static final _Fields optionals[] = {_Fields.SEARCH_FIELD,_Fields.VALUE,_Fields.SEARCH_CONDITION};
+  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.SEARCH_FIELD, new org.apache.thrift.meta_data.FieldMetaData("searchField", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, EntitySearchField.class)));
+    tmpMap.put(_Fields.VALUE, new org.apache.thrift.meta_data.FieldMetaData("value", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.SEARCH_CONDITION, new org.apache.thrift.meta_data.FieldMetaData("searchCondition", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, SearchCondition.class)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(SearchCriteria.class, metaDataMap);
+  }
+
+  public SearchCriteria() {
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public SearchCriteria(SearchCriteria other) {
+    if (other.isSetSearchField()) {
+      this.searchField = other.searchField;
+    }
+    if (other.isSetValue()) {
+      this.value = other.value;
+    }
+    if (other.isSetSearchCondition()) {
+      this.searchCondition = other.searchCondition;
+    }
+  }
+
+  public SearchCriteria deepCopy() {
+    return new SearchCriteria(this);
+  }
+
+  @Override
+  public void clear() {
+    this.searchField = null;
+    this.value = null;
+    this.searchCondition = null;
+  }
+
+  /**
+   * 
+   * @see EntitySearchField
+   */
+  public EntitySearchField getSearchField() {
+    return this.searchField;
+  }
+
+  /**
+   * 
+   * @see EntitySearchField
+   */
+  public SearchCriteria setSearchField(EntitySearchField searchField) {
+    this.searchField = searchField;
+    return this;
+  }
+
+  public void unsetSearchField() {
+    this.searchField = null;
+  }
+
+  /** Returns true if field searchField is set (has been assigned a value) and false otherwise */
+  public boolean isSetSearchField() {
+    return this.searchField != null;
+  }
+
+  public void setSearchFieldIsSet(boolean value) {
+    if (!value) {
+      this.searchField = null;
+    }
+  }
+
+  public String getValue() {
+    return this.value;
+  }
+
+  public SearchCriteria setValue(String value) {
+    this.value = value;
+    return this;
+  }
+
+  public void unsetValue() {
+    this.value = null;
+  }
+
+  /** Returns true if field value is set (has been assigned a value) and false otherwise */
+  public boolean isSetValue() {
+    return this.value != null;
+  }
+
+  public void setValueIsSet(boolean value) {
+    if (!value) {
+      this.value = null;
+    }
+  }
+
+  /**
+   * 
+   * @see SearchCondition
+   */
+  public SearchCondition getSearchCondition() {
+    return this.searchCondition;
+  }
+
+  /**
+   * 
+   * @see SearchCondition
+   */
+  public SearchCriteria setSearchCondition(SearchCondition searchCondition) {
+    this.searchCondition = searchCondition;
+    return this;
+  }
+
+  public void unsetSearchCondition() {
+    this.searchCondition = null;
+  }
+
+  /** Returns true if field searchCondition is set (has been assigned a value) and false otherwise */
+  public boolean isSetSearchCondition() {
+    return this.searchCondition != null;
+  }
+
+  public void setSearchConditionIsSet(boolean value) {
+    if (!value) {
+      this.searchCondition = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case SEARCH_FIELD:
+      if (value == null) {
+        unsetSearchField();
+      } else {
+        setSearchField((EntitySearchField)value);
+      }
+      break;
+
+    case VALUE:
+      if (value == null) {
+        unsetValue();
+      } else {
+        setValue((String)value);
+      }
+      break;
+
+    case SEARCH_CONDITION:
+      if (value == null) {
+        unsetSearchCondition();
+      } else {
+        setSearchCondition((SearchCondition)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case SEARCH_FIELD:
+      return getSearchField();
+
+    case VALUE:
+      return getValue();
+
+    case SEARCH_CONDITION:
+      return getSearchCondition();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case SEARCH_FIELD:
+      return isSetSearchField();
+    case VALUE:
+      return isSetValue();
+    case SEARCH_CONDITION:
+      return isSetSearchCondition();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof SearchCriteria)
+      return this.equals((SearchCriteria)that);
+    return false;
+  }
+
+  public boolean equals(SearchCriteria that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_searchField = true && this.isSetSearchField();
+    boolean that_present_searchField = true && that.isSetSearchField();
+    if (this_present_searchField || that_present_searchField) {
+      if (!(this_present_searchField && that_present_searchField))
+        return false;
+      if (!this.searchField.equals(that.searchField))
+        return false;
+    }
+
+    boolean this_present_value = true && this.isSetValue();
+    boolean that_present_value = true && that.isSetValue();
+    if (this_present_value || that_present_value) {
+      if (!(this_present_value && that_present_value))
+        return false;
+      if (!this.value.equals(that.value))
+        return false;
+    }
+
+    boolean this_present_searchCondition = true && this.isSetSearchCondition();
+    boolean that_present_searchCondition = true && that.isSetSearchCondition();
+    if (this_present_searchCondition || that_present_searchCondition) {
+      if (!(this_present_searchCondition && that_present_searchCondition))
+        return false;
+      if (!this.searchCondition.equals(that.searchCondition))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_searchField = true && (isSetSearchField());
+    list.add(present_searchField);
+    if (present_searchField)
+      list.add(searchField.getValue());
+
+    boolean present_value = true && (isSetValue());
+    list.add(present_value);
+    if (present_value)
+      list.add(value);
+
+    boolean present_searchCondition = true && (isSetSearchCondition());
+    list.add(present_searchCondition);
+    if (present_searchCondition)
+      list.add(searchCondition.getValue());
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(SearchCriteria other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetSearchField()).compareTo(other.isSetSearchField());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetSearchField()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.searchField, other.searchField);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetValue()).compareTo(other.isSetValue());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetValue()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.value, other.value);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetSearchCondition()).compareTo(other.isSetSearchCondition());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetSearchCondition()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.searchCondition, other.searchCondition);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("SearchCriteria(");
+    boolean first = true;
+
+    if (isSetSearchField()) {
+      sb.append("searchField:");
+      if (this.searchField == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.searchField);
+      }
+      first = false;
+    }
+    if (isSetValue()) {
+      if (!first) sb.append(", ");
+      sb.append("value:");
+      if (this.value == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.value);
+      }
+      first = false;
+    }
+    if (isSetSearchCondition()) {
+      if (!first) sb.append(", ");
+      sb.append("searchCondition:");
+      if (this.searchCondition == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.searchCondition);
+      }
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class SearchCriteriaStandardSchemeFactory implements SchemeFactory {
+    public SearchCriteriaStandardScheme getScheme() {
+      return new SearchCriteriaStandardScheme();
+    }
+  }
+
+  private static class SearchCriteriaStandardScheme extends StandardScheme<SearchCriteria> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, SearchCriteria struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // SEARCH_FIELD
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.searchField = org.apache.airavata.sharing.registry.models.EntitySearchField.findByValue(iprot.readI32());
+              struct.setSearchFieldIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // VALUE
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.value = iprot.readString();
+              struct.setValueIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // SEARCH_CONDITION
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.searchCondition = org.apache.airavata.sharing.registry.models.SearchCondition.findByValue(iprot.readI32());
+              struct.setSearchConditionIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, SearchCriteria struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.searchField != null) {
+        if (struct.isSetSearchField()) {
+          oprot.writeFieldBegin(SEARCH_FIELD_FIELD_DESC);
+          oprot.writeI32(struct.searchField.getValue());
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.value != null) {
+        if (struct.isSetValue()) {
+          oprot.writeFieldBegin(VALUE_FIELD_DESC);
+          oprot.writeString(struct.value);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.searchCondition != null) {
+        if (struct.isSetSearchCondition()) {
+          oprot.writeFieldBegin(SEARCH_CONDITION_FIELD_DESC);
+          oprot.writeI32(struct.searchCondition.getValue());
+          oprot.writeFieldEnd();
+        }
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class SearchCriteriaTupleSchemeFactory implements SchemeFactory {
+    public SearchCriteriaTupleScheme getScheme() {
+      return new SearchCriteriaTupleScheme();
+    }
+  }
+
+  private static class SearchCriteriaTupleScheme extends TupleScheme<SearchCriteria> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, SearchCriteria struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetSearchField()) {
+        optionals.set(0);
+      }
+      if (struct.isSetValue()) {
+        optionals.set(1);
+      }
+      if (struct.isSetSearchCondition()) {
+        optionals.set(2);
+      }
+      oprot.writeBitSet(optionals, 3);
+      if (struct.isSetSearchField()) {
+        oprot.writeI32(struct.searchField.getValue());
+      }
+      if (struct.isSetValue()) {
+        oprot.writeString(struct.value);
+      }
+      if (struct.isSetSearchCondition()) {
+        oprot.writeI32(struct.searchCondition.getValue());
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, SearchCriteria struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(3);
+      if (incoming.get(0)) {
+        struct.searchField = org.apache.airavata.sharing.registry.models.EntitySearchField.findByValue(iprot.readI32());
+        struct.setSearchFieldIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.value = iprot.readString();
+        struct.setValueIsSet(true);
+      }
+      if (incoming.get(2)) {
+        struct.searchCondition = org.apache.airavata.sharing.registry.models.SearchCondition.findByValue(iprot.readI32());
+        struct.setSearchConditionIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Sharing.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Sharing.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Sharing.java
index c2ddf18..ba914cd 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Sharing.java
+++ b/modules/sharing-registry/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-06")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-12")
 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/bff76559/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SharingRegistryException.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SharingRegistryException.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SharingRegistryException.java
index 83d0c00..97917d8 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SharingRegistryException.java
+++ b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SharingRegistryException.java
@@ -12,19 +12,29 @@ import org.apache.thrift.scheme.StandardScheme;
 
 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 org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-06")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-12")
 public class SharingRegistryException extends TException implements org.apache.thrift.TBase<SharingRegistryException, SharingRegistryException._Fields>, java.io.Serializable, Cloneable, Comparable<SharingRegistryException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("SharingRegistryException");
 
@@ -32,8 +42,8 @@ public class SharingRegistryException extends TException implements org.apache.t
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
-    schemes.put(StandardScheme.class, new GovRegistryExceptionStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new GovRegistryExceptionTupleSchemeFactory());
+    schemes.put(StandardScheme.class, new SharingRegistryExceptionStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new SharingRegistryExceptionTupleSchemeFactory());
   }
 
   public String message; // required
@@ -110,7 +120,7 @@ public class SharingRegistryException extends TException implements org.apache.t
   }
 
   public SharingRegistryException(
-          String message)
+    String message)
   {
     this();
     this.message = message;
@@ -303,13 +313,13 @@ public class SharingRegistryException extends TException implements org.apache.t
     }
   }
 
-  private static class GovRegistryExceptionStandardSchemeFactory implements SchemeFactory {
-    public GovRegistryExceptionStandardScheme getScheme() {
-      return new GovRegistryExceptionStandardScheme();
+  private static class SharingRegistryExceptionStandardSchemeFactory implements SchemeFactory {
+    public SharingRegistryExceptionStandardScheme getScheme() {
+      return new SharingRegistryExceptionStandardScheme();
     }
   }
 
-  private static class GovRegistryExceptionStandardScheme extends StandardScheme<SharingRegistryException> {
+  private static class SharingRegistryExceptionStandardScheme extends StandardScheme<SharingRegistryException> {
 
     public void read(org.apache.thrift.protocol.TProtocol iprot, SharingRegistryException struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
@@ -355,13 +365,13 @@ public class SharingRegistryException extends TException implements org.apache.t
 
   }
 
-  private static class GovRegistryExceptionTupleSchemeFactory implements SchemeFactory {
-    public GovRegistryExceptionTupleScheme getScheme() {
-      return new GovRegistryExceptionTupleScheme();
+  private static class SharingRegistryExceptionTupleSchemeFactory implements SchemeFactory {
+    public SharingRegistryExceptionTupleScheme getScheme() {
+      return new SharingRegistryExceptionTupleScheme();
     }
   }
 
-  private static class GovRegistryExceptionTupleScheme extends TupleScheme<SharingRegistryException> {
+  private static class SharingRegistryExceptionTupleScheme extends TupleScheme<SharingRegistryException> {
 
     @Override
     public void write(org.apache.thrift.protocol.TProtocol prot, SharingRegistryException struct) throws org.apache.thrift.TException {

http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/User.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/User.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/User.java
index d37ff2a..91649ca 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/User.java
+++ b/modules/sharing-registry/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-06")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-12")
 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/bff76559/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/UserGroup.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/UserGroup.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/UserGroup.java
index f3a9a02..f121e63 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/UserGroup.java
+++ b/modules/sharing-registry/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-06")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-12")
 public class UserGroup implements org.apache.thrift.TBase<UserGroup, UserGroup._Fields>, java.io.Serializable, Cloneable, Comparable<UserGroup> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UserGroup");
 


[2/3] airavata git commit: adding search criteria as a new struct

Posted by sc...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/bff76559/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/service/cpi/GovRegistryService.java
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/service/cpi/GovRegistryService.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/service/cpi/GovRegistryService.java
index e041fd5..c355c7e 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/service/cpi/GovRegistryService.java
+++ b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/service/cpi/GovRegistryService.java
@@ -6,13 +6,13 @@
  */
 package org.apache.airavata.sharing.registry.service.cpi;
 
-import org.apache.airavata.sharing.registry.models.SharingRegistryException;
 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.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
 import org.apache.thrift.EncodingUtils;
 import org.apache.thrift.TException;
 import org.apache.thrift.async.AsyncMethodCallback;
@@ -22,15 +22,19 @@ 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 org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-06")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-10-12")
 public class GovRegistryService {
 
   public interface Iface {
@@ -41,15 +45,15 @@ public class GovRegistryService {
      * 
      * @param domain
      */
-    public String createDomain(org.apache.airavata.sharing.registry.models.Domain domain) throws SharingRegistryException, org.apache.thrift.TException;
+    public String createDomain(org.apache.airavata.sharing.registry.models.Domain domain) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean updateDomain(org.apache.airavata.sharing.registry.models.Domain domain) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean updateDomain(org.apache.airavata.sharing.registry.models.Domain domain) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean deleteDomain(String domainId) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean deleteDomain(String domainId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public org.apache.airavata.sharing.registry.models.Domain getDomain(String domainId) throws SharingRegistryException, org.apache.thrift.TException;
+    public org.apache.airavata.sharing.registry.models.Domain getDomain(String domainId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public List<org.apache.airavata.sharing.registry.models.Domain> getDomains(int offset, int limit) throws SharingRegistryException, org.apache.thrift.TException;
+    public List<org.apache.airavata.sharing.registry.models.Domain> getDomains(int offset, int limit) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
     /**
      *  * User Operations
@@ -57,15 +61,15 @@ public class GovRegistryService {
      * 
      * @param user
      */
-    public String createUser(org.apache.airavata.sharing.registry.models.User user) throws SharingRegistryException, org.apache.thrift.TException;
+    public String createUser(org.apache.airavata.sharing.registry.models.User user) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean updatedUser(org.apache.airavata.sharing.registry.models.User user) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean updatedUser(org.apache.airavata.sharing.registry.models.User user) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean deleteUser(String userId) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean deleteUser(String userId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public org.apache.airavata.sharing.registry.models.User getUser(String userId) throws SharingRegistryException, org.apache.thrift.TException;
+    public org.apache.airavata.sharing.registry.models.User getUser(String userId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public List<org.apache.airavata.sharing.registry.models.User> getUsers(String domain, int offset, int limit) throws SharingRegistryException, org.apache.thrift.TException;
+    public List<org.apache.airavata.sharing.registry.models.User> getUsers(String domain, int offset, int limit) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
     /**
      *  * Group Operations
@@ -73,25 +77,25 @@ public class GovRegistryService {
      * 
      * @param group
      */
-    public String createGroup(org.apache.airavata.sharing.registry.models.UserGroup group) throws SharingRegistryException, org.apache.thrift.TException;
+    public String createGroup(org.apache.airavata.sharing.registry.models.UserGroup group) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean updateGroup(org.apache.airavata.sharing.registry.models.UserGroup group) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean updateGroup(org.apache.airavata.sharing.registry.models.UserGroup group) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean deleteGroup(String groupId) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean deleteGroup(String groupId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public org.apache.airavata.sharing.registry.models.UserGroup getGroup(String groupId) throws SharingRegistryException, org.apache.thrift.TException;
+    public org.apache.airavata.sharing.registry.models.UserGroup getGroup(String groupId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
     public List<org.apache.airavata.sharing.registry.models.UserGroup> getGroups(String domain, int offset, int limit) throws org.apache.thrift.TException;
 
-    public boolean addUsersToGroup(List<String> userIds, String groupId) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean addUsersToGroup(List<String> userIds, String groupId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean removeUsersFromGroup(List<String> userIds, String groupId) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean removeUsersFromGroup(List<String> userIds, String groupId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public Map<String,org.apache.airavata.sharing.registry.models.GroupChildType> getGroupMembers(String groupId, int offset, int limit) throws SharingRegistryException, org.apache.thrift.TException;
+    public Map<String,org.apache.airavata.sharing.registry.models.GroupChildType> getGroupMembers(String groupId, int offset, int limit) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean addChildGroupToParentGroup(String childId, String groupId) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean addChildGroupToParentGroup(String childId, String groupId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean removeChildGroupFromParentGroup(String childId, String groupId) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean removeChildGroupFromParentGroup(String childId, String groupId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
     /**
      *  * EntityType Operations
@@ -99,15 +103,15 @@ public class GovRegistryService {
      * 
      * @param entityType
      */
-    public String createEntityType(org.apache.airavata.sharing.registry.models.EntityType entityType) throws SharingRegistryException, org.apache.thrift.TException;
+    public String createEntityType(org.apache.airavata.sharing.registry.models.EntityType entityType) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean updateEntityType(org.apache.airavata.sharing.registry.models.EntityType entityType) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean updateEntityType(org.apache.airavata.sharing.registry.models.EntityType entityType) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean deleteEntityType(String entityTypeId) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean deleteEntityType(String entityTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public org.apache.airavata.sharing.registry.models.EntityType getEntityType(String entityTypeId) throws SharingRegistryException, org.apache.thrift.TException;
+    public org.apache.airavata.sharing.registry.models.EntityType getEntityType(String entityTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public List<org.apache.airavata.sharing.registry.models.EntityType> getEntityTypes(String domain, int offset, int limit) throws SharingRegistryException, org.apache.thrift.TException;
+    public List<org.apache.airavata.sharing.registry.models.EntityType> getEntityTypes(String domain, int offset, int limit) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
     /**
      *  * Entity Operations
@@ -115,19 +119,19 @@ public class GovRegistryService {
      * 
      * @param entity
      */
-    public String createEntity(org.apache.airavata.sharing.registry.models.Entity entity) throws SharingRegistryException, org.apache.thrift.TException;
+    public String createEntity(org.apache.airavata.sharing.registry.models.Entity entity) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean updateEntity(org.apache.airavata.sharing.registry.models.Entity entity) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean updateEntity(org.apache.airavata.sharing.registry.models.Entity entity) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean deleteEntity(String entityId) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean deleteEntity(String entityId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public org.apache.airavata.sharing.registry.models.Entity getEntity(String entityId) throws SharingRegistryException, org.apache.thrift.TException;
+    public org.apache.airavata.sharing.registry.models.Entity getEntity(String entityId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, 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 SharingRegistryException, org.apache.thrift.TException;
+    public List<org.apache.airavata.sharing.registry.models.Entity> searchEntities(String userId, String entityTypeId, List<org.apache.airavata.sharing.registry.models.SearchCriteria> filters, int offset, int limit) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public List<org.apache.airavata.sharing.registry.models.User> getListOfSharedUsers(String entityId, String permissionTypeId) throws SharingRegistryException, org.apache.thrift.TException;
+    public List<org.apache.airavata.sharing.registry.models.User> getListOfSharedUsers(String entityId, String permissionTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public List<org.apache.airavata.sharing.registry.models.UserGroup> getListOfSharedGroups(String entityId, String permissionTypeId) throws SharingRegistryException, org.apache.thrift.TException;
+    public List<org.apache.airavata.sharing.registry.models.UserGroup> getListOfSharedGroups(String entityId, String permissionTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
     /**
      *  * Permission Operations
@@ -135,15 +139,15 @@ public class GovRegistryService {
      * 
      * @param permissionType
      */
-    public String createPermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType) throws SharingRegistryException, org.apache.thrift.TException;
+    public String createPermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean updatePermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean updatePermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean deletePermissionType(String entityTypeId) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean deletePermissionType(String entityTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public org.apache.airavata.sharing.registry.models.PermissionType getPermissionType(String permissionTypeId) throws SharingRegistryException, org.apache.thrift.TException;
+    public org.apache.airavata.sharing.registry.models.PermissionType getPermissionType(String permissionTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public List<org.apache.airavata.sharing.registry.models.PermissionType> getPermissionTypes(String domain, int offset, int limit) throws SharingRegistryException, org.apache.thrift.TException;
+    public List<org.apache.airavata.sharing.registry.models.PermissionType> getPermissionTypes(String domain, int offset, int limit) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
     /**
      *  * Sharing Entity with Users and Groups
@@ -154,15 +158,15 @@ public class GovRegistryService {
      * @param perssionTypeId
      * @param cascadePermission
      */
-    public boolean shareEntityWithUsers(String entityId, List<String> userList, String perssionTypeId, boolean cascadePermission) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean shareEntityWithUsers(String entityId, List<String> userList, String perssionTypeId, boolean cascadePermission) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean revokeEntitySharingFromUsers(String entityId, List<String> userList, String perssionTypeId) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean revokeEntitySharingFromUsers(String entityId, List<String> userList, String perssionTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean shareEntityWithGroups(String entityId, List<String> groupList, String perssionTypeId, boolean cascadePermission) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean shareEntityWithGroups(String entityId, List<String> groupList, String perssionTypeId, boolean cascadePermission) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean revokeEntitySharingFromGroups(String entityId, List<String> groupList, String perssionTypeId) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean revokeEntitySharingFromGroups(String entityId, List<String> groupList, String perssionTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
-    public boolean userHasAccess(String domainId, String userId, String entityId, String permissionTypeId) throws SharingRegistryException, org.apache.thrift.TException;
+    public boolean userHasAccess(String domainId, String userId, String entityId, String permissionTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException;
 
   }
 
@@ -226,7 +230,7 @@ public class GovRegistryService {
 
     public void getEntity(String entityId, 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 searchEntities(String userId, String entityTypeId, List<org.apache.airavata.sharing.registry.models.SearchCriteria> filters, int offset, int limit, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void getListOfSharedUsers(String entityId, String permissionTypeId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
@@ -274,7 +278,7 @@ public class GovRegistryService {
       super(iprot, oprot);
     }
 
-    public String createDomain(org.apache.airavata.sharing.registry.models.Domain domain) throws SharingRegistryException, org.apache.thrift.TException
+    public String createDomain(org.apache.airavata.sharing.registry.models.Domain domain) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_createDomain(domain);
       return recv_createDomain();
@@ -287,7 +291,7 @@ public class GovRegistryService {
       sendBase("createDomain", args);
     }
 
-    public String recv_createDomain() throws SharingRegistryException, org.apache.thrift.TException
+    public String recv_createDomain() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       createDomain_result result = new createDomain_result();
       receiveBase(result, "createDomain");
@@ -300,7 +304,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "createDomain failed: unknown result");
     }
 
-    public boolean updateDomain(org.apache.airavata.sharing.registry.models.Domain domain) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean updateDomain(org.apache.airavata.sharing.registry.models.Domain domain) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_updateDomain(domain);
       return recv_updateDomain();
@@ -313,7 +317,7 @@ public class GovRegistryService {
       sendBase("updateDomain", args);
     }
 
-    public boolean recv_updateDomain() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_updateDomain() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       updateDomain_result result = new updateDomain_result();
       receiveBase(result, "updateDomain");
@@ -326,7 +330,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "updateDomain failed: unknown result");
     }
 
-    public boolean deleteDomain(String domainId) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean deleteDomain(String domainId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_deleteDomain(domainId);
       return recv_deleteDomain();
@@ -339,7 +343,7 @@ public class GovRegistryService {
       sendBase("deleteDomain", args);
     }
 
-    public boolean recv_deleteDomain() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_deleteDomain() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       deleteDomain_result result = new deleteDomain_result();
       receiveBase(result, "deleteDomain");
@@ -352,7 +356,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "deleteDomain failed: unknown result");
     }
 
-    public org.apache.airavata.sharing.registry.models.Domain getDomain(String domainId) throws SharingRegistryException, org.apache.thrift.TException
+    public org.apache.airavata.sharing.registry.models.Domain getDomain(String domainId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_getDomain(domainId);
       return recv_getDomain();
@@ -365,7 +369,7 @@ public class GovRegistryService {
       sendBase("getDomain", args);
     }
 
-    public org.apache.airavata.sharing.registry.models.Domain recv_getDomain() throws SharingRegistryException, org.apache.thrift.TException
+    public org.apache.airavata.sharing.registry.models.Domain recv_getDomain() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       getDomain_result result = new getDomain_result();
       receiveBase(result, "getDomain");
@@ -378,7 +382,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getDomain failed: unknown result");
     }
 
-    public List<org.apache.airavata.sharing.registry.models.Domain> getDomains(int offset, int limit) throws SharingRegistryException, org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.Domain> getDomains(int offset, int limit) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_getDomains(offset, limit);
       return recv_getDomains();
@@ -392,7 +396,7 @@ public class GovRegistryService {
       sendBase("getDomains", args);
     }
 
-    public List<org.apache.airavata.sharing.registry.models.Domain> recv_getDomains() throws SharingRegistryException, org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.Domain> recv_getDomains() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       getDomains_result result = new getDomains_result();
       receiveBase(result, "getDomains");
@@ -405,7 +409,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getDomains failed: unknown result");
     }
 
-    public String createUser(org.apache.airavata.sharing.registry.models.User user) throws SharingRegistryException, org.apache.thrift.TException
+    public String createUser(org.apache.airavata.sharing.registry.models.User user) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_createUser(user);
       return recv_createUser();
@@ -418,7 +422,7 @@ public class GovRegistryService {
       sendBase("createUser", args);
     }
 
-    public String recv_createUser() throws SharingRegistryException, org.apache.thrift.TException
+    public String recv_createUser() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       createUser_result result = new createUser_result();
       receiveBase(result, "createUser");
@@ -431,7 +435,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "createUser failed: unknown result");
     }
 
-    public boolean updatedUser(org.apache.airavata.sharing.registry.models.User user) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean updatedUser(org.apache.airavata.sharing.registry.models.User user) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_updatedUser(user);
       return recv_updatedUser();
@@ -444,7 +448,7 @@ public class GovRegistryService {
       sendBase("updatedUser", args);
     }
 
-    public boolean recv_updatedUser() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_updatedUser() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       updatedUser_result result = new updatedUser_result();
       receiveBase(result, "updatedUser");
@@ -457,7 +461,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "updatedUser failed: unknown result");
     }
 
-    public boolean deleteUser(String userId) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean deleteUser(String userId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_deleteUser(userId);
       return recv_deleteUser();
@@ -470,7 +474,7 @@ public class GovRegistryService {
       sendBase("deleteUser", args);
     }
 
-    public boolean recv_deleteUser() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_deleteUser() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       deleteUser_result result = new deleteUser_result();
       receiveBase(result, "deleteUser");
@@ -483,7 +487,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "deleteUser failed: unknown result");
     }
 
-    public org.apache.airavata.sharing.registry.models.User getUser(String userId) throws SharingRegistryException, org.apache.thrift.TException
+    public org.apache.airavata.sharing.registry.models.User getUser(String userId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_getUser(userId);
       return recv_getUser();
@@ -496,7 +500,7 @@ public class GovRegistryService {
       sendBase("getUser", args);
     }
 
-    public org.apache.airavata.sharing.registry.models.User recv_getUser() throws SharingRegistryException, org.apache.thrift.TException
+    public org.apache.airavata.sharing.registry.models.User recv_getUser() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       getUser_result result = new getUser_result();
       receiveBase(result, "getUser");
@@ -509,7 +513,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getUser failed: unknown result");
     }
 
-    public List<org.apache.airavata.sharing.registry.models.User> getUsers(String domain, int offset, int limit) throws SharingRegistryException, org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.User> getUsers(String domain, int offset, int limit) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_getUsers(domain, offset, limit);
       return recv_getUsers();
@@ -524,7 +528,7 @@ public class GovRegistryService {
       sendBase("getUsers", args);
     }
 
-    public List<org.apache.airavata.sharing.registry.models.User> recv_getUsers() throws SharingRegistryException, org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.User> recv_getUsers() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       getUsers_result result = new getUsers_result();
       receiveBase(result, "getUsers");
@@ -537,7 +541,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getUsers failed: unknown result");
     }
 
-    public String createGroup(org.apache.airavata.sharing.registry.models.UserGroup group) throws SharingRegistryException, org.apache.thrift.TException
+    public String createGroup(org.apache.airavata.sharing.registry.models.UserGroup group) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_createGroup(group);
       return recv_createGroup();
@@ -550,7 +554,7 @@ public class GovRegistryService {
       sendBase("createGroup", args);
     }
 
-    public String recv_createGroup() throws SharingRegistryException, org.apache.thrift.TException
+    public String recv_createGroup() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       createGroup_result result = new createGroup_result();
       receiveBase(result, "createGroup");
@@ -563,7 +567,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "createGroup failed: unknown result");
     }
 
-    public boolean updateGroup(org.apache.airavata.sharing.registry.models.UserGroup group) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean updateGroup(org.apache.airavata.sharing.registry.models.UserGroup group) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_updateGroup(group);
       return recv_updateGroup();
@@ -576,7 +580,7 @@ public class GovRegistryService {
       sendBase("updateGroup", args);
     }
 
-    public boolean recv_updateGroup() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_updateGroup() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       updateGroup_result result = new updateGroup_result();
       receiveBase(result, "updateGroup");
@@ -589,7 +593,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "updateGroup failed: unknown result");
     }
 
-    public boolean deleteGroup(String groupId) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean deleteGroup(String groupId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_deleteGroup(groupId);
       return recv_deleteGroup();
@@ -602,7 +606,7 @@ public class GovRegistryService {
       sendBase("deleteGroup", args);
     }
 
-    public boolean recv_deleteGroup() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_deleteGroup() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       deleteGroup_result result = new deleteGroup_result();
       receiveBase(result, "deleteGroup");
@@ -615,7 +619,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "deleteGroup failed: unknown result");
     }
 
-    public org.apache.airavata.sharing.registry.models.UserGroup getGroup(String groupId) throws SharingRegistryException, org.apache.thrift.TException
+    public org.apache.airavata.sharing.registry.models.UserGroup getGroup(String groupId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_getGroup(groupId);
       return recv_getGroup();
@@ -628,7 +632,7 @@ public class GovRegistryService {
       sendBase("getGroup", args);
     }
 
-    public org.apache.airavata.sharing.registry.models.UserGroup recv_getGroup() throws SharingRegistryException, org.apache.thrift.TException
+    public org.apache.airavata.sharing.registry.models.UserGroup recv_getGroup() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       getGroup_result result = new getGroup_result();
       receiveBase(result, "getGroup");
@@ -666,7 +670,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getGroups failed: unknown result");
     }
 
-    public boolean addUsersToGroup(List<String> userIds, String groupId) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean addUsersToGroup(List<String> userIds, String groupId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_addUsersToGroup(userIds, groupId);
       return recv_addUsersToGroup();
@@ -680,7 +684,7 @@ public class GovRegistryService {
       sendBase("addUsersToGroup", args);
     }
 
-    public boolean recv_addUsersToGroup() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_addUsersToGroup() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       addUsersToGroup_result result = new addUsersToGroup_result();
       receiveBase(result, "addUsersToGroup");
@@ -693,7 +697,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "addUsersToGroup failed: unknown result");
     }
 
-    public boolean removeUsersFromGroup(List<String> userIds, String groupId) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean removeUsersFromGroup(List<String> userIds, String groupId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_removeUsersFromGroup(userIds, groupId);
       return recv_removeUsersFromGroup();
@@ -707,7 +711,7 @@ public class GovRegistryService {
       sendBase("removeUsersFromGroup", args);
     }
 
-    public boolean recv_removeUsersFromGroup() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_removeUsersFromGroup() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       removeUsersFromGroup_result result = new removeUsersFromGroup_result();
       receiveBase(result, "removeUsersFromGroup");
@@ -720,7 +724,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "removeUsersFromGroup failed: unknown result");
     }
 
-    public Map<String,org.apache.airavata.sharing.registry.models.GroupChildType> getGroupMembers(String groupId, int offset, int limit) throws SharingRegistryException, org.apache.thrift.TException
+    public Map<String,org.apache.airavata.sharing.registry.models.GroupChildType> getGroupMembers(String groupId, int offset, int limit) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_getGroupMembers(groupId, offset, limit);
       return recv_getGroupMembers();
@@ -735,7 +739,7 @@ public class GovRegistryService {
       sendBase("getGroupMembers", args);
     }
 
-    public Map<String,org.apache.airavata.sharing.registry.models.GroupChildType> recv_getGroupMembers() throws SharingRegistryException, org.apache.thrift.TException
+    public Map<String,org.apache.airavata.sharing.registry.models.GroupChildType> recv_getGroupMembers() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       getGroupMembers_result result = new getGroupMembers_result();
       receiveBase(result, "getGroupMembers");
@@ -748,7 +752,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getGroupMembers failed: unknown result");
     }
 
-    public boolean addChildGroupToParentGroup(String childId, String groupId) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean addChildGroupToParentGroup(String childId, String groupId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_addChildGroupToParentGroup(childId, groupId);
       return recv_addChildGroupToParentGroup();
@@ -762,7 +766,7 @@ public class GovRegistryService {
       sendBase("addChildGroupToParentGroup", args);
     }
 
-    public boolean recv_addChildGroupToParentGroup() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_addChildGroupToParentGroup() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       addChildGroupToParentGroup_result result = new addChildGroupToParentGroup_result();
       receiveBase(result, "addChildGroupToParentGroup");
@@ -775,7 +779,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "addChildGroupToParentGroup failed: unknown result");
     }
 
-    public boolean removeChildGroupFromParentGroup(String childId, String groupId) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean removeChildGroupFromParentGroup(String childId, String groupId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_removeChildGroupFromParentGroup(childId, groupId);
       return recv_removeChildGroupFromParentGroup();
@@ -789,7 +793,7 @@ public class GovRegistryService {
       sendBase("removeChildGroupFromParentGroup", args);
     }
 
-    public boolean recv_removeChildGroupFromParentGroup() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_removeChildGroupFromParentGroup() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       removeChildGroupFromParentGroup_result result = new removeChildGroupFromParentGroup_result();
       receiveBase(result, "removeChildGroupFromParentGroup");
@@ -802,7 +806,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "removeChildGroupFromParentGroup failed: unknown result");
     }
 
-    public String createEntityType(org.apache.airavata.sharing.registry.models.EntityType entityType) throws SharingRegistryException, org.apache.thrift.TException
+    public String createEntityType(org.apache.airavata.sharing.registry.models.EntityType entityType) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_createEntityType(entityType);
       return recv_createEntityType();
@@ -815,7 +819,7 @@ public class GovRegistryService {
       sendBase("createEntityType", args);
     }
 
-    public String recv_createEntityType() throws SharingRegistryException, org.apache.thrift.TException
+    public String recv_createEntityType() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       createEntityType_result result = new createEntityType_result();
       receiveBase(result, "createEntityType");
@@ -828,7 +832,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "createEntityType failed: unknown result");
     }
 
-    public boolean updateEntityType(org.apache.airavata.sharing.registry.models.EntityType entityType) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean updateEntityType(org.apache.airavata.sharing.registry.models.EntityType entityType) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_updateEntityType(entityType);
       return recv_updateEntityType();
@@ -841,7 +845,7 @@ public class GovRegistryService {
       sendBase("updateEntityType", args);
     }
 
-    public boolean recv_updateEntityType() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_updateEntityType() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       updateEntityType_result result = new updateEntityType_result();
       receiveBase(result, "updateEntityType");
@@ -854,7 +858,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "updateEntityType failed: unknown result");
     }
 
-    public boolean deleteEntityType(String entityTypeId) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean deleteEntityType(String entityTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_deleteEntityType(entityTypeId);
       return recv_deleteEntityType();
@@ -867,7 +871,7 @@ public class GovRegistryService {
       sendBase("deleteEntityType", args);
     }
 
-    public boolean recv_deleteEntityType() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_deleteEntityType() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       deleteEntityType_result result = new deleteEntityType_result();
       receiveBase(result, "deleteEntityType");
@@ -880,7 +884,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "deleteEntityType failed: unknown result");
     }
 
-    public org.apache.airavata.sharing.registry.models.EntityType getEntityType(String entityTypeId) throws SharingRegistryException, org.apache.thrift.TException
+    public org.apache.airavata.sharing.registry.models.EntityType getEntityType(String entityTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_getEntityType(entityTypeId);
       return recv_getEntityType();
@@ -893,7 +897,7 @@ public class GovRegistryService {
       sendBase("getEntityType", args);
     }
 
-    public org.apache.airavata.sharing.registry.models.EntityType recv_getEntityType() throws SharingRegistryException, org.apache.thrift.TException
+    public org.apache.airavata.sharing.registry.models.EntityType recv_getEntityType() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       getEntityType_result result = new getEntityType_result();
       receiveBase(result, "getEntityType");
@@ -906,7 +910,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getEntityType failed: unknown result");
     }
 
-    public List<org.apache.airavata.sharing.registry.models.EntityType> getEntityTypes(String domain, int offset, int limit) throws SharingRegistryException, org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.EntityType> getEntityTypes(String domain, int offset, int limit) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_getEntityTypes(domain, offset, limit);
       return recv_getEntityTypes();
@@ -921,7 +925,7 @@ public class GovRegistryService {
       sendBase("getEntityTypes", args);
     }
 
-    public List<org.apache.airavata.sharing.registry.models.EntityType> recv_getEntityTypes() throws SharingRegistryException, org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.EntityType> recv_getEntityTypes() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       getEntityTypes_result result = new getEntityTypes_result();
       receiveBase(result, "getEntityTypes");
@@ -934,7 +938,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getEntityTypes failed: unknown result");
     }
 
-    public String createEntity(org.apache.airavata.sharing.registry.models.Entity entity) throws SharingRegistryException, org.apache.thrift.TException
+    public String createEntity(org.apache.airavata.sharing.registry.models.Entity entity) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_createEntity(entity);
       return recv_createEntity();
@@ -947,7 +951,7 @@ public class GovRegistryService {
       sendBase("createEntity", args);
     }
 
-    public String recv_createEntity() throws SharingRegistryException, org.apache.thrift.TException
+    public String recv_createEntity() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       createEntity_result result = new createEntity_result();
       receiveBase(result, "createEntity");
@@ -960,7 +964,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "createEntity failed: unknown result");
     }
 
-    public boolean updateEntity(org.apache.airavata.sharing.registry.models.Entity entity) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean updateEntity(org.apache.airavata.sharing.registry.models.Entity entity) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_updateEntity(entity);
       return recv_updateEntity();
@@ -973,7 +977,7 @@ public class GovRegistryService {
       sendBase("updateEntity", args);
     }
 
-    public boolean recv_updateEntity() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_updateEntity() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       updateEntity_result result = new updateEntity_result();
       receiveBase(result, "updateEntity");
@@ -986,7 +990,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "updateEntity failed: unknown result");
     }
 
-    public boolean deleteEntity(String entityId) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean deleteEntity(String entityId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_deleteEntity(entityId);
       return recv_deleteEntity();
@@ -999,7 +1003,7 @@ public class GovRegistryService {
       sendBase("deleteEntity", args);
     }
 
-    public boolean recv_deleteEntity() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_deleteEntity() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       deleteEntity_result result = new deleteEntity_result();
       receiveBase(result, "deleteEntity");
@@ -1012,7 +1016,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "deleteEntity failed: unknown result");
     }
 
-    public org.apache.airavata.sharing.registry.models.Entity getEntity(String entityId) throws SharingRegistryException, org.apache.thrift.TException
+    public org.apache.airavata.sharing.registry.models.Entity getEntity(String entityId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_getEntity(entityId);
       return recv_getEntity();
@@ -1025,7 +1029,7 @@ public class GovRegistryService {
       sendBase("getEntity", args);
     }
 
-    public org.apache.airavata.sharing.registry.models.Entity recv_getEntity() throws SharingRegistryException, org.apache.thrift.TException
+    public org.apache.airavata.sharing.registry.models.Entity recv_getEntity() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       getEntity_result result = new getEntity_result();
       receiveBase(result, "getEntity");
@@ -1038,13 +1042,13 @@ 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 userId, String entityTypeId, Map<org.apache.airavata.sharing.registry.models.EntitySearchFields,String> filters, int offset, int limit) throws SharingRegistryException, org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.Entity> searchEntities(String userId, String entityTypeId, List<org.apache.airavata.sharing.registry.models.SearchCriteria> filters, int offset, int limit) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_searchEntities(userId, entityTypeId, filters, offset, limit);
       return recv_searchEntities();
     }
 
-    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
+    public void send_searchEntities(String userId, String entityTypeId, List<org.apache.airavata.sharing.registry.models.SearchCriteria> filters, int offset, int limit) throws org.apache.thrift.TException
     {
       searchEntities_args args = new searchEntities_args();
       args.setUserId(userId);
@@ -1055,7 +1059,7 @@ public class GovRegistryService {
       sendBase("searchEntities", args);
     }
 
-    public List<org.apache.airavata.sharing.registry.models.Entity> recv_searchEntities() throws SharingRegistryException, org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.Entity> recv_searchEntities() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       searchEntities_result result = new searchEntities_result();
       receiveBase(result, "searchEntities");
@@ -1068,7 +1072,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchEntities failed: unknown result");
     }
 
-    public List<org.apache.airavata.sharing.registry.models.User> getListOfSharedUsers(String entityId, String permissionTypeId) throws SharingRegistryException, org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.User> getListOfSharedUsers(String entityId, String permissionTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_getListOfSharedUsers(entityId, permissionTypeId);
       return recv_getListOfSharedUsers();
@@ -1082,7 +1086,7 @@ public class GovRegistryService {
       sendBase("getListOfSharedUsers", args);
     }
 
-    public List<org.apache.airavata.sharing.registry.models.User> recv_getListOfSharedUsers() throws SharingRegistryException, org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.User> recv_getListOfSharedUsers() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       getListOfSharedUsers_result result = new getListOfSharedUsers_result();
       receiveBase(result, "getListOfSharedUsers");
@@ -1095,7 +1099,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getListOfSharedUsers failed: unknown result");
     }
 
-    public List<org.apache.airavata.sharing.registry.models.UserGroup> getListOfSharedGroups(String entityId, String permissionTypeId) throws SharingRegistryException, org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.UserGroup> getListOfSharedGroups(String entityId, String permissionTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_getListOfSharedGroups(entityId, permissionTypeId);
       return recv_getListOfSharedGroups();
@@ -1109,7 +1113,7 @@ public class GovRegistryService {
       sendBase("getListOfSharedGroups", args);
     }
 
-    public List<org.apache.airavata.sharing.registry.models.UserGroup> recv_getListOfSharedGroups() throws SharingRegistryException, org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.UserGroup> recv_getListOfSharedGroups() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       getListOfSharedGroups_result result = new getListOfSharedGroups_result();
       receiveBase(result, "getListOfSharedGroups");
@@ -1122,7 +1126,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getListOfSharedGroups failed: unknown result");
     }
 
-    public String createPermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType) throws SharingRegistryException, org.apache.thrift.TException
+    public String createPermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_createPermissionType(permissionType);
       return recv_createPermissionType();
@@ -1135,7 +1139,7 @@ public class GovRegistryService {
       sendBase("createPermissionType", args);
     }
 
-    public String recv_createPermissionType() throws SharingRegistryException, org.apache.thrift.TException
+    public String recv_createPermissionType() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       createPermissionType_result result = new createPermissionType_result();
       receiveBase(result, "createPermissionType");
@@ -1148,7 +1152,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "createPermissionType failed: unknown result");
     }
 
-    public boolean updatePermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean updatePermissionType(org.apache.airavata.sharing.registry.models.PermissionType permissionType) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_updatePermissionType(permissionType);
       return recv_updatePermissionType();
@@ -1161,7 +1165,7 @@ public class GovRegistryService {
       sendBase("updatePermissionType", args);
     }
 
-    public boolean recv_updatePermissionType() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_updatePermissionType() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       updatePermissionType_result result = new updatePermissionType_result();
       receiveBase(result, "updatePermissionType");
@@ -1174,7 +1178,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "updatePermissionType failed: unknown result");
     }
 
-    public boolean deletePermissionType(String entityTypeId) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean deletePermissionType(String entityTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_deletePermissionType(entityTypeId);
       return recv_deletePermissionType();
@@ -1187,7 +1191,7 @@ public class GovRegistryService {
       sendBase("deletePermissionType", args);
     }
 
-    public boolean recv_deletePermissionType() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_deletePermissionType() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       deletePermissionType_result result = new deletePermissionType_result();
       receiveBase(result, "deletePermissionType");
@@ -1200,7 +1204,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "deletePermissionType failed: unknown result");
     }
 
-    public org.apache.airavata.sharing.registry.models.PermissionType getPermissionType(String permissionTypeId) throws SharingRegistryException, org.apache.thrift.TException
+    public org.apache.airavata.sharing.registry.models.PermissionType getPermissionType(String permissionTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_getPermissionType(permissionTypeId);
       return recv_getPermissionType();
@@ -1213,7 +1217,7 @@ public class GovRegistryService {
       sendBase("getPermissionType", args);
     }
 
-    public org.apache.airavata.sharing.registry.models.PermissionType recv_getPermissionType() throws SharingRegistryException, org.apache.thrift.TException
+    public org.apache.airavata.sharing.registry.models.PermissionType recv_getPermissionType() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       getPermissionType_result result = new getPermissionType_result();
       receiveBase(result, "getPermissionType");
@@ -1226,7 +1230,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getPermissionType failed: unknown result");
     }
 
-    public List<org.apache.airavata.sharing.registry.models.PermissionType> getPermissionTypes(String domain, int offset, int limit) throws SharingRegistryException, org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.PermissionType> getPermissionTypes(String domain, int offset, int limit) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_getPermissionTypes(domain, offset, limit);
       return recv_getPermissionTypes();
@@ -1241,7 +1245,7 @@ public class GovRegistryService {
       sendBase("getPermissionTypes", args);
     }
 
-    public List<org.apache.airavata.sharing.registry.models.PermissionType> recv_getPermissionTypes() throws SharingRegistryException, org.apache.thrift.TException
+    public List<org.apache.airavata.sharing.registry.models.PermissionType> recv_getPermissionTypes() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       getPermissionTypes_result result = new getPermissionTypes_result();
       receiveBase(result, "getPermissionTypes");
@@ -1254,7 +1258,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getPermissionTypes failed: unknown result");
     }
 
-    public boolean shareEntityWithUsers(String entityId, List<String> userList, String perssionTypeId, boolean cascadePermission) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean shareEntityWithUsers(String entityId, List<String> userList, String perssionTypeId, boolean cascadePermission) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_shareEntityWithUsers(entityId, userList, perssionTypeId, cascadePermission);
       return recv_shareEntityWithUsers();
@@ -1270,7 +1274,7 @@ public class GovRegistryService {
       sendBase("shareEntityWithUsers", args);
     }
 
-    public boolean recv_shareEntityWithUsers() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_shareEntityWithUsers() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       shareEntityWithUsers_result result = new shareEntityWithUsers_result();
       receiveBase(result, "shareEntityWithUsers");
@@ -1283,7 +1287,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "shareEntityWithUsers failed: unknown result");
     }
 
-    public boolean revokeEntitySharingFromUsers(String entityId, List<String> userList, String perssionTypeId) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean revokeEntitySharingFromUsers(String entityId, List<String> userList, String perssionTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_revokeEntitySharingFromUsers(entityId, userList, perssionTypeId);
       return recv_revokeEntitySharingFromUsers();
@@ -1298,7 +1302,7 @@ public class GovRegistryService {
       sendBase("revokeEntitySharingFromUsers", args);
     }
 
-    public boolean recv_revokeEntitySharingFromUsers() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_revokeEntitySharingFromUsers() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       revokeEntitySharingFromUsers_result result = new revokeEntitySharingFromUsers_result();
       receiveBase(result, "revokeEntitySharingFromUsers");
@@ -1311,7 +1315,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "revokeEntitySharingFromUsers failed: unknown result");
     }
 
-    public boolean shareEntityWithGroups(String entityId, List<String> groupList, String perssionTypeId, boolean cascadePermission) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean shareEntityWithGroups(String entityId, List<String> groupList, String perssionTypeId, boolean cascadePermission) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_shareEntityWithGroups(entityId, groupList, perssionTypeId, cascadePermission);
       return recv_shareEntityWithGroups();
@@ -1327,7 +1331,7 @@ public class GovRegistryService {
       sendBase("shareEntityWithGroups", args);
     }
 
-    public boolean recv_shareEntityWithGroups() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_shareEntityWithGroups() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       shareEntityWithGroups_result result = new shareEntityWithGroups_result();
       receiveBase(result, "shareEntityWithGroups");
@@ -1340,7 +1344,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "shareEntityWithGroups failed: unknown result");
     }
 
-    public boolean revokeEntitySharingFromGroups(String entityId, List<String> groupList, String perssionTypeId) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean revokeEntitySharingFromGroups(String entityId, List<String> groupList, String perssionTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_revokeEntitySharingFromGroups(entityId, groupList, perssionTypeId);
       return recv_revokeEntitySharingFromGroups();
@@ -1355,7 +1359,7 @@ public class GovRegistryService {
       sendBase("revokeEntitySharingFromGroups", args);
     }
 
-    public boolean recv_revokeEntitySharingFromGroups() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_revokeEntitySharingFromGroups() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       revokeEntitySharingFromGroups_result result = new revokeEntitySharingFromGroups_result();
       receiveBase(result, "revokeEntitySharingFromGroups");
@@ -1368,7 +1372,7 @@ public class GovRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "revokeEntitySharingFromGroups failed: unknown result");
     }
 
-    public boolean userHasAccess(String domainId, String userId, String entityId, String permissionTypeId) throws SharingRegistryException, org.apache.thrift.TException
+    public boolean userHasAccess(String domainId, String userId, String entityId, String permissionTypeId) throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       send_userHasAccess(domainId, userId, entityId, permissionTypeId);
       return recv_userHasAccess();
@@ -1384,7 +1388,7 @@ public class GovRegistryService {
       sendBase("userHasAccess", args);
     }
 
-    public boolean recv_userHasAccess() throws SharingRegistryException, org.apache.thrift.TException
+    public boolean recv_userHasAccess() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException
     {
       userHasAccess_result result = new userHasAccess_result();
       receiveBase(result, "userHasAccess");
@@ -1437,7 +1441,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public String getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public String getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1469,7 +1473,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public boolean getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1501,7 +1505,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public boolean getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1533,7 +1537,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public org.apache.airavata.sharing.registry.models.Domain getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public org.apache.airavata.sharing.registry.models.Domain getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1568,7 +1572,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public List<org.apache.airavata.sharing.registry.models.Domain> getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public List<org.apache.airavata.sharing.registry.models.Domain> getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1600,7 +1604,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public String getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public String getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1632,7 +1636,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public boolean getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1664,7 +1668,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public boolean getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1696,7 +1700,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public org.apache.airavata.sharing.registry.models.User getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public org.apache.airavata.sharing.registry.models.User getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1734,7 +1738,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public List<org.apache.airavata.sharing.registry.models.User> getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public List<org.apache.airavata.sharing.registry.models.User> getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1766,7 +1770,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public String getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public String getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1798,7 +1802,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public boolean getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1830,7 +1834,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public boolean getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1862,7 +1866,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public org.apache.airavata.sharing.registry.models.UserGroup getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public org.apache.airavata.sharing.registry.models.UserGroup getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1935,7 +1939,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public boolean getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1970,7 +1974,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public boolean getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2008,7 +2012,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public Map<String,org.apache.airavata.sharing.registry.models.GroupChildType> getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public Map<String,org.apache.airavata.sharing.registry.models.GroupChildType> getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2043,7 +2047,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public boolean getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2078,7 +2082,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public boolean getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2110,7 +2114,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public String getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public String getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2142,7 +2146,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public boolean getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2174,7 +2178,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public boolean getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2206,7 +2210,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public org.apache.airavata.sharing.registry.models.EntityType getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public org.apache.airavata.sharing.registry.models.EntityType getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2244,7 +2248,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public List<org.apache.airavata.sharing.registry.models.EntityType> getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public List<org.apache.airavata.sharing.registry.models.EntityType> getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2276,7 +2280,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public String getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public String getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2308,7 +2312,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public boolean getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2340,7 +2344,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public boolean getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2372,7 +2376,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public org.apache.airavata.sharing.registry.models.Entity getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public org.apache.airavata.sharing.registry.models.Entity getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2382,7 +2386,7 @@ public class GovRegistryService {
       }
     }
 
-    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 searchEntities(String userId, String entityTypeId, List<org.apache.airavata.sharing.registry.models.SearchCriteria> filters, int offset, int limit, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
       searchEntities_call method_call = new searchEntities_call(userId, entityTypeId, filters, offset, limit, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
@@ -2392,10 +2396,10 @@ public class GovRegistryService {
     public static class searchEntities_call extends org.apache.thrift.async.TAsyncMethodCall {
       private String userId;
       private String entityTypeId;
-      private Map<org.apache.airavata.sharing.registry.models.EntitySearchFields,String> filters;
+      private List<org.apache.airavata.sharing.registry.models.SearchCriteria> filters;
       private int offset;
       private int limit;
-      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 {
+      public searchEntities_call(String userId, String entityTypeId, List<org.apache.airavata.sharing.registry.models.SearchCriteria> 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.userId = userId;
         this.entityTypeId = entityTypeId;
@@ -2416,7 +2420,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public List<org.apache.airavata.sharing.registry.models.Entity> getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public List<org.apache.airavata.sharing.registry.models.Entity> getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2451,7 +2455,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public List<org.apache.airavata.sharing.registry.models.User> getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public List<org.apache.airavata.sharing.registry.models.User> getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2486,7 +2490,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public List<org.apache.airavata.sharing.registry.models.UserGroup> getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public List<org.apache.airavata.sharing.registry.models.UserGroup> getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2518,7 +2522,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public String getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public String getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2550,7 +2554,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() throws SharingRegistryException, org.apache.thrift.TException {
+      public boolean getResult() throws org.apache.airavata.sharing.registry.models.SharingRegistryException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2582,7 +2586,7 @@ public class GovRegistryService {
         prot.writeMessageEnd();
       }
 
-      public boolean getResult() thro

<TRUNCATED>