You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sm...@apache.org on 2015/05/01 02:55:57 UTC

[01/19] airavata git commit: Adding more support to the registry for paginated result retrieval of project and experiment data. Renamed all *searchWithPagination methods to search* with method overloading

Repository: airavata
Updated Branches:
  refs/heads/master 20bf020d5 -> 5cc8b43d0


Adding more support to the registry for paginated result retrieval of project and experiment data. Renamed all *searchWithPagination methods to search* with method overloading


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

Branch: refs/heads/master
Commit: 9f6e30e41d2f4366d4e8cd6f253cc88661a513d2
Parents: cc40cf3
Author: Supun Nakandala <su...@gmail.com>
Authored: Mon Apr 27 20:36:08 2015 +0530
Committer: Supun Nakandala <su...@gmail.com>
Committed: Mon Apr 27 20:36:08 2015 +0530

----------------------------------------------------------------------
 .../registry/jpa/impl/ExperimentRegistry.java   | 152 ++++++++----
 .../registry/jpa/impl/LoggingRegistryImpl.java  |   7 +-
 .../registry/jpa/impl/ProjectRegistry.java      |  33 ++-
 .../registry/jpa/impl/RegistryImpl.java         |  57 ++++-
 .../registry/jpa/resources/ProjectResource.java | 119 +++++++++-
 .../registry/jpa/resources/WorkerResource.java  | 234 ++++++++++++++++---
 .../registry/jpa/utils/QueryGenerator.java      |  73 ++++--
 .../registry/jpa/RegistryUseCaseTest.java       |  15 +-
 8 files changed, 569 insertions(+), 121 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/9f6e30e4/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
index 7d47762..a0e9ecf 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
@@ -1823,6 +1823,13 @@ public class ExperimentRegistry {
         }
     }
 
+    /**
+     * Method to get matching experiment list
+     * @param fieldName
+     * @param value
+     * @return
+     * @throws RegistryException
+     */
     public List<Experiment> getExperimentList(String fieldName, Object value) throws RegistryException {
         List<Experiment> experiments = new ArrayList<Experiment>();
         try {
@@ -1830,7 +1837,6 @@ public class ExperimentRegistry {
                 WorkerResource resource = (WorkerResource) gatewayResource.create(ResourceType.GATEWAY_WORKER);
                 resource.setUser((String) value);
                 List<ExperimentResource> resources = resource.getExperiments();
-//                List<ExperimentResource> resources = resource.getExperimentsByCaching((String)value);
                 for (ExperimentResource experimentResource : resources) {
                     Experiment experiment = ThriftDataModelConversion.getExperiment(experimentResource);
                     experiments.add(experiment);
@@ -1876,6 +1882,50 @@ public class ExperimentRegistry {
         return experiments;
     }
 
+    /**
+     * Method to get matching experiment list with pagination and ordering
+     * @param fieldName
+     * @param value
+     * @param limit
+     * @param offset
+     * @param orderByIdentifier
+     * @param resultOrderType
+     * @return
+     * @throws RegistryException
+     */
+    public List<Experiment> getExperimentList(String fieldName, Object value, int limit, int offset,
+                                              Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
+        List<Experiment> experiments = new ArrayList<Experiment>();
+        try {
+            if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
+                WorkerResource resource = (WorkerResource) gatewayResource.create(ResourceType.GATEWAY_WORKER);
+                resource.setUser((String) value);
+                List<ExperimentResource> resources = resource.getExperiments(limit, offset,
+                        orderByIdentifier, resultOrderType);
+                for (ExperimentResource experimentResource : resources) {
+                    Experiment experiment = ThriftDataModelConversion.getExperiment(experimentResource);
+                    experiments.add(experiment);
+                }
+                return experiments;
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.PROJECT_ID)) {
+                ProjectResource project = workerResource.getProject((String) value);
+                List<ExperimentResource> resources = project.getExperiments(limit, offset,
+                        Constants.FieldConstants.ExperimentConstants.CREATION_TIME, ResultOrderType.DESC);
+                for (ExperimentResource resource : resources) {
+                    Experiment experiment = ThriftDataModelConversion.getExperiment(resource);
+                    experiments.add(experiment);
+                }
+                return experiments;
+            }
+            logger.error("Unsupported field name to retrieve experiment list...");
+        } catch (Exception e) {
+            logger.error("Error while getting experiment list...", e);
+            throw new RegistryException(e);
+        }
+        return experiments;
+    }
+
+
     public List<WorkflowNodeDetails> getWFNodeDetails(String fieldName, Object value) throws RegistryException {
         try {
             if (fieldName.equals(Constants.FieldConstants.WorkflowNodeConstants.EXPERIMENT_ID)) {
@@ -2810,7 +2860,7 @@ public class ExperimentRegistry {
      * @throws RegistryException
      */
     public List<ExperimentSummary> searchExperiments(Map<String, String> filters) throws RegistryException {
-        return searchExperimentsWithPagination(filters, -1, -1, null, null);
+        return searchExperiments(filters, -1, -1, null, null);
     }
 
 
@@ -2827,8 +2877,8 @@ public class ExperimentRegistry {
      * @return
      * @throws RegistryException
      */
-    public List<ExperimentSummary> searchExperimentsWithPagination(Map<String, String> filters, int limit,
-        int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
+    public List<ExperimentSummary> searchExperiments(Map<String, String> filters, int limit,
+              int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
         Map<String, String> fil = new HashMap<String, String>();
         if (filters != null && filters.size() != 0) {
             List<ExperimentSummary> experimentSummaries = new ArrayList<ExperimentSummary>();
@@ -2847,7 +2897,7 @@ public class ExperimentRegistry {
                     } else if (field.equals(Constants.FieldConstants.ExperimentConstants.APPLICATION_ID)) {
                         fil.put(AbstractResource.ExperimentConstants.APPLICATION_ID, filters.get(field));
                     } else if (field.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_STATUS)) {
-                        return searchExperimentsByStatus(ExperimentState.valueOf(filters.get(field)));
+                        fil.put(AbstractResource.StatusConstants.STATE, filters.get(field));
                     } else if (field.equals(Constants.FieldConstants.ExperimentConstants.FROM_DATE)) {
                         fromTime = Long.parseLong(filters.get(field));
                     } else if (field.equals(Constants.FieldConstants.ExperimentConstants.TO_DATE)) {
@@ -2855,13 +2905,13 @@ public class ExperimentRegistry {
                     }
                 }
                 if (fromTime != 0 && toTime != 0) {
-                    return searchExperimentsByCreationTime(new Timestamp(fromTime), new Timestamp(toTime));
-                }
-                if (fil.containsKey(AbstractResource.ExperimentConstants.APPLICATION_ID)) {
-                    return searchExperimentsByApplication(fil);
+                    return searchExperimentsByCreationTime(new Timestamp(fromTime), new Timestamp(toTime)
+                            , limit, offset, orderByIdentifier, resultOrderType);
+                } else if(fil.get(AbstractResource.StatusConstants.STATE) != null ) {
+                    return searchExperimentsByStatus(fil, limit, offset, orderByIdentifier, resultOrderType);
                 } else {
                     List<ExperimentResource> experimentResources = workerResource
-                            .searchExperimentsWithPagination(fil, limit, offset, orderByIdentifier, resultOrderType);
+                            .searchExperiments(fil, limit, offset, orderByIdentifier, resultOrderType);
                     if (experimentResources != null && !experimentResources.isEmpty()) {
                         for (ExperimentResource ex : experimentResources) {
                             experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
@@ -2878,10 +2928,33 @@ public class ExperimentRegistry {
         return null;
     }
 
-    public List<ExperimentSummary> searchExperimentsByStatus(ExperimentState experimentState) throws RegistryException {
+    /**
+     * To get list of experiments of specified state
+     * @param filters
+     * @return
+     * @throws RegistryException
+     */
+    public List<ExperimentSummary> searchExperimentsByStatus(Map<String, String> filters) throws RegistryException {
+        return searchExperimentsByStatus(filters, -1, -1, null, null);
+    }
+
+    /**
+     * To get list of experiments of specified state with pagination and ordering
+     *
+     * @param filters
+     * @param limit
+     * @param offset
+     * @param orderByIdentifier
+     * @param resultOrderType
+     * @return
+     * @throws RegistryException
+     */
+    public List<ExperimentSummary> searchExperimentsByStatus(Map<String, String> filters, int limit,
+        int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
         try {
             List<ExperimentSummary> experimentSummaries = new ArrayList<ExperimentSummary>();
-            List<ExperimentResource> experimentResources = workerResource.searchExperimentsByState(experimentState.toString());
+            List<ExperimentResource> experimentResources = workerResource.searchExperimentsByState(filters, limit, offset,
+                    orderByIdentifier, resultOrderType);
             if (experimentResources != null && !experimentResources.isEmpty()) {
                 for (ExperimentResource ex : experimentResources) {
                     experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
@@ -2895,40 +2968,37 @@ public class ExperimentRegistry {
         }
     }
 
-    public List<ExperimentSummary> searchExperimentsByApplication(Map<String, String> fil) throws RegistryException {
-        try {
-            List<ExperimentSummary> experimentSummaries = new ArrayList<ExperimentSummary>();
-            List<ExperimentResource> experimentResources = workerResource.searchExperiments(fil);
-            if (experimentResources != null && !experimentResources.isEmpty()) {
-                for (ExperimentResource ex : experimentResources) {
-                    String applicationId = ex.getApplicationId();
-                    String[] splits = applicationId.split("_");
-                    if (splits.length != 0) {
-                        for (int i = 0; i < splits.length - 1; i++) {
-                            String appId = fil.get(AbstractResource.ExperimentConstants.APPLICATION_ID);
-                            if (!appId.equals("*")) {
-                                if (splits[i].contains(appId)) {
-                                    experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
-                                }
-                            } else {
-                                experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
-                            }
-                        }
-                    }
-                }
-            }
-            return experimentSummaries;
 
-        } catch (Exception e) {
-            logger.error("Error while retrieving experiment summary from registry", e);
-            throw new RegistryException(e);
-        }
+    /**
+     * Search experiements based on creation time within specified time interval.
+     * @param fromTime
+     * @param toTime
+     * @return
+     * @throws RegistryException
+     */
+    public List<ExperimentSummary> searchExperimentsByCreationTime(Timestamp fromTime, Timestamp toTime) throws RegistryException {
+        return searchExperimentsByCreationTime(fromTime, toTime, -1, -1, null, null);
     }
 
-    public List<ExperimentSummary> searchExperimentsByCreationTime(Timestamp fromTime, Timestamp toTime) throws RegistryException {
+    /**
+     * Search experiements based on creation time within specified time interval with pagination.
+     * @param fromTime
+     * @param toTime
+     * @param limit
+     * @param offset
+     * @param orderByIdentifier
+     * @param resultOrderType
+     * @return
+     * @throws RegistryException
+     */
+    public List<ExperimentSummary> searchExperimentsByCreationTime(
+            Timestamp fromTime, Timestamp toTime, int limit,
+            int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
         try {
             List<ExperimentSummary> experimentSummaries = new ArrayList<ExperimentSummary>();
-            List<ExperimentResource> experimentResources = workerResource.searchExperimentsByCreationTime(fromTime, toTime);
+            List<ExperimentResource> experimentResources
+                    = workerResource.searchExperimentsByCreationTime(fromTime, toTime, limit, offset,
+                    orderByIdentifier, resultOrderType);
             if (experimentResources != null && !experimentResources.isEmpty()) {
                 for (ExperimentResource ex : experimentResources) {
                     experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));

http://git-wip-us.apache.org/repos/asf/airavata/blob/9f6e30e4/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/LoggingRegistryImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/LoggingRegistryImpl.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/LoggingRegistryImpl.java
index d7e9c0a..0274518 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/LoggingRegistryImpl.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/LoggingRegistryImpl.java
@@ -61,12 +61,17 @@ public class LoggingRegistryImpl implements Registry {
     }
 
     @Override
+    public List<Object> get(RegistryModelType dataType, String fieldName, Object value, int limit, int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
+        return null;
+    }
+
+    @Override
     public List<Object> search(RegistryModelType dataType, Map<String, String> filters) throws RegistryException {
         return null;
     }
 
     @Override
-    public List<Object> searchWithPagination(RegistryModelType dataType, Map<String, String> filters, int limit, int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
+    public List<Object> search(RegistryModelType dataType, Map<String, String> filters, int limit, int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
         return null;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/9f6e30e4/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ProjectRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ProjectRegistry.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ProjectRegistry.java
index 5bfcc3d..e0e2a46 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ProjectRegistry.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ProjectRegistry.java
@@ -164,7 +164,30 @@ public class ProjectRegistry {
         return null;
     }
 
+    /**
+     * Get list of projects of the user
+     * @param fieldName
+     * @param value
+     * @return
+     * @throws RegistryException
+     */
     public List<Project> getProjectList (String fieldName, Object value) throws RegistryException{
+        return getProjectList(fieldName, value, -1, -1, null, null);
+    }
+
+    /**
+     * Get projects list with pagination and result ordering
+     * @param fieldName
+     * @param value
+     * @param limit
+     * @param offset
+     * @param orderByIdentifier
+     * @param resultOrderType
+     * @return
+     * @throws RegistryException
+     */
+    public List<Project> getProjectList (String fieldName, Object value, int limit, int offset,
+                                         Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException{
         List<Project> projects = new ArrayList<Project>();
         try {
             if (fieldName.equals(Constants.FieldConstants.ProjectConstants.OWNER)){
@@ -179,7 +202,7 @@ public class ProjectRegistry {
             }
         }catch (Exception e){
             logger.error("Error while retrieving project from registry", e);
-           throw new RegistryException(e);
+            throw new RegistryException(e);
         }
         return projects;
     }
@@ -192,7 +215,7 @@ public class ProjectRegistry {
      * @throws RegistryException
      */
     public List<Project> searchProjects (Map<String, String> filters) throws RegistryException{
-        return searchProjectsWithPagination(filters, -1, -1, null, null);
+        return searchProjects(filters, -1, -1, null, null);
     }
 
     /**
@@ -208,8 +231,8 @@ public class ProjectRegistry {
      * @return
      * @throws RegistryException
      */
-    public List<Project> searchProjectsWithPagination(Map<String, String> filters, int limit,
-        int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
+    public List<Project> searchProjects(Map<String, String> filters, int limit,
+            int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
         Map<String, String> fil = new HashMap<String, String>();
         if (filters != null && filters.size() != 0){
             List<Project> projects = new ArrayList<Project>();
@@ -226,7 +249,7 @@ public class ProjectRegistry {
                     }
                 }
                 List<ProjectResource> projectResources = workerResource
-                        .searchProjectsWithPagination(fil, limit, offset, orderByIdentifier, resultOrderType);
+                        .searchProjects(fil, limit, offset, orderByIdentifier, resultOrderType);
                 if (projectResources != null && !projectResources.isEmpty()){
                     for (ProjectResource pr : projectResources){
                         projects.add(ThriftDataModelConversion.getProject(pr));

http://git-wip-us.apache.org/repos/asf/airavata/blob/9f6e30e4/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
index a2f1e11..953b11e 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
@@ -454,6 +454,51 @@ public class RegistryImpl implements Registry {
     }
 
     /**
+     * This method is to retrieve list of objects according to a given criteria with pagination and ordering
+     *
+     * @param dataType  Data type is a predefined type which the programmer should choose according to the object he
+     *                  is going to save in to registry
+     * @param fieldName FieldName is the field that filtering should be done. For example, if we want to retrieve all
+     *                  the experiments for a given user, filterBy will be "userName"
+     * @param value     value for the filtering field. In the experiment case, value for "userName" can be "admin"
+     * @param limit     Size of the results to be returned
+     * @param offset    Start position of the results to be retrieved
+     * @param orderByIdentifier     Named of the column in which the ordering is based
+     * @param resultOrderType       Type of ordering i.e ASC or DESC
+     * @return
+     * @throws RegistryException
+     */
+    @Override
+    public List<Object> get(RegistryModelType dataType, String fieldName, Object value, int limit,
+                            int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
+        try {
+            List<Object> result = new ArrayList<Object>();
+            switch (dataType) {
+                case PROJECT:
+                    List<Project> projectList = projectRegistry
+                            .getProjectList(fieldName, value, limit, offset, orderByIdentifier, resultOrderType);
+                    for (Project project : projectList ){
+                        result.add(project);
+                    }
+                    return result;
+                case EXPERIMENT:
+                    List<Experiment> experimentList = experimentRegistry.getExperimentList(fieldName, value,
+                            limit, offset, orderByIdentifier, resultOrderType);
+                    for (Experiment experiment : experimentList) {
+                        result.add(experiment);
+                    }
+                    return result;
+                default:
+                    logger.error("Unsupported data type...", new UnsupportedOperationException());
+                    throw new UnsupportedOperationException();
+            }
+        } catch (Exception e) {
+            logger.error("Error while retrieving the resource " + dataType.toString(), new RegistryException(e));
+            throw new RegistryException("Error while retrieving the resource " + dataType.toString(), e);
+        }
+    }
+
+    /**
      * This method is to retrieve list of objects according to a given criteria
      * @param dataType Data type is a predefined type which the programmer should choose according to the object he
      *                 is going to save in to registry
@@ -462,7 +507,7 @@ public class RegistryImpl implements Registry {
      */
     @Override
     public List<Object> search(RegistryModelType dataType, Map<String, String> filters) throws RegistryException {
-        return searchWithPagination(dataType, filters, -1, -1, null, null);
+        return search(dataType, filters, -1, -1, null, null);
     }
 
     /**
@@ -478,23 +523,23 @@ public class RegistryImpl implements Registry {
      * @return List of objects according to the given criteria
      */
     @Override
-    public List<Object> searchWithPagination(RegistryModelType dataType, Map<String, String> filters, int limit,
+    public List<Object> search(RegistryModelType dataType, Map<String, String> filters, int limit,
         int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
         try {
             List<Object> result = new ArrayList<Object>();
             switch (dataType) {
                 case PROJECT:
                     List<Project> projectList
-                            = projectRegistry.searchProjectsWithPagination(filters, limit, offset,
-                            orderByIdentifier, resultOrderType );
+                            = projectRegistry.searchProjects(filters, limit, offset,
+                            orderByIdentifier, resultOrderType);
                     for (Project project : projectList ){
                         result.add(project);
                     }
                     return result;
                 case EXPERIMENT:
                     List<ExperimentSummary> experimentSummaries = experimentRegistry
-                            .searchExperimentsWithPagination(filters, limit, offset, orderByIdentifier,
-                                    resultOrderType );
+                            .searchExperiments(filters, limit, offset, orderByIdentifier,
+                                    resultOrderType);
                     for (ExperimentSummary ex : experimentSummaries){
                         result.add(ex);
                     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/9f6e30e4/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ProjectResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ProjectResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ProjectResource.java
index c53b489..4dc4160 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ProjectResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ProjectResource.java
@@ -20,22 +20,23 @@
 */
 package org.apache.airavata.persistance.registry.jpa.resources;
 
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-
 import org.apache.airavata.persistance.registry.jpa.Resource;
 import org.apache.airavata.persistance.registry.jpa.ResourceType;
 import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
 import org.apache.airavata.persistance.registry.jpa.model.*;
 import org.apache.airavata.persistance.registry.jpa.utils.QueryGenerator;
 import org.apache.airavata.registry.cpi.RegistryException;
+import org.apache.airavata.registry.cpi.ResultOrderType;
+import org.apache.airavata.registry.cpi.utils.Constants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+
 public class ProjectResource extends AbstractResource {
     private final static Logger logger = LoggerFactory.getLogger(ProjectResource.class);
     private String name;
@@ -182,6 +183,7 @@ public class ProjectResource extends AbstractResource {
      * @param type child resource type
      * @return list of child resources
      */
+    @Override
     public List<Resource> get(ResourceType type) throws RegistryException{
         List<Resource> resourceList = new ArrayList<Resource>();
         EntityManager em = null;
@@ -239,6 +241,99 @@ public class ProjectResource extends AbstractResource {
     }
 
     /**
+     * Get results with pagination and ordering
+     *
+     * @param type
+     * @param limit
+     * @param offset
+     * @param orderByIdentifier
+     * @return
+     * @throws RegistryException
+     */
+    public List<Resource> get(ResourceType type, int limit, int offset, Object orderByIdentifier,
+                              ResultOrderType resultOrderType) throws RegistryException{
+        List<Resource> resourceList = new ArrayList<Resource>();
+        EntityManager em = null;
+        try {
+            if (type == ResourceType.EXPERIMENT) {
+                em = ResourceUtils.getEntityManager();
+                em.getTransaction().begin();
+                QueryGenerator generator = new QueryGenerator(EXPERIMENT);
+                generator.setParameter(ExperimentConstants.PROJECT_ID, id);
+                Query q;
+                //ordering - supported only by CREATION_TIME
+                if(orderByIdentifier != null && resultOrderType != null
+                        && orderByIdentifier.equals(Constants.FieldConstants.ExperimentConstants.CREATION_TIME)) {
+                    q = generator.selectQuery(em, ExperimentConstants.CREATION_TIME, resultOrderType);
+                }else{
+                    q = generator.selectQuery(em);
+                }
+
+                //pagination
+                if(limit>0 && offset>=0){
+                    q.setFirstResult(offset);
+                    q.setMaxResults(limit);
+                }
+                List<?> results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        Experiment experiment = (Experiment) result;
+                        ExperimentResource experimentResource = (ExperimentResource)
+                                Utils.getResource(ResourceType.EXPERIMENT, experiment);
+                        resourceList.add(experimentResource);
+                    }
+                }
+                em.getTransaction().commit();
+                em.close();
+            } else if (type == ResourceType.PROJECT_USER) {
+                em = ResourceUtils.getEntityManager();
+                em.getTransaction().begin();
+                QueryGenerator generator = new QueryGenerator(PROJECT_USER);
+                generator.setParameter(ProjectUserConstants.PROJECT_ID, id);
+                Query q;
+                //ordering - only supported only by CREATION_TIME
+                if(orderByIdentifier != null && resultOrderType != null
+                        && orderByIdentifier.equals(Constants.FieldConstants.ProjectConstants.CREATION_TIME)) {
+                    q = generator.selectQuery(em, ProjectConstants.CREATION_TIME, resultOrderType);
+                }else{
+                    q = generator.selectQuery(em);
+                }
+
+                //pagination
+                if(limit>0 && offset>=0){
+                    q.setFirstResult(offset);
+                    q.setMaxResults(limit);
+                }
+                List<?> results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        ProjectUser projectUser = (ProjectUser) result;
+                        ProjectUserResource pr = (ProjectUserResource)
+                                Utils.getResource(ResourceType.PROJECT_USER, projectUser);
+                        resourceList.add(pr);
+                    }
+                }
+                em.getTransaction().commit();
+                em.close();
+            } else {
+                logger.error("Unsupported resource type for project resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported resource type for project resource.");
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new RegistryException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return resourceList;
+    }
+
+    /**
      * save project to the database
      */
     public void save() throws RegistryException{
@@ -404,6 +499,16 @@ public class ProjectResource extends AbstractResource {
 		return result;
 	}
 
+    public List<ExperimentResource> getExperiments(int limit, int offset, Object orderByIdentifier,
+                                                   ResultOrderType resultOrderType) throws RegistryException{
+        List<Resource> list = get(ResourceType.EXPERIMENT, limit, offset, orderByIdentifier, resultOrderType);
+        List<ExperimentResource> result=new ArrayList<ExperimentResource>();
+        for (Resource resource : list) {
+            result.add((ExperimentResource) resource);
+        }
+        return result;
+    }
+
     /**
      *
      * @param experimentId experiment ID

http://git-wip-us.apache.org/repos/asf/airavata/blob/9f6e30e4/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java
index dfa887f..d3609b8 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java
@@ -21,12 +21,14 @@
 
 package org.apache.airavata.persistance.registry.jpa.resources;
 
+import org.apache.airavata.model.workspace.experiment.ExperimentState;
 import org.apache.airavata.persistance.registry.jpa.Resource;
 import org.apache.airavata.persistance.registry.jpa.ResourceType;
 import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
 import org.apache.airavata.persistance.registry.jpa.model.*;
 import org.apache.airavata.persistance.registry.jpa.utils.QueryGenerator;
 import org.apache.airavata.registry.cpi.ResultOrderType;
+import org.apache.airavata.registry.cpi.utils.Constants;
 import org.apache.airavata.registry.cpi.utils.StatusType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -220,11 +222,28 @@ public class WorkerResource extends AbstractResource {
 //	}
 
     /**
+     * Method get all results of the given child resource type
      *
      * @param type child resource type
      * @return list of child resources
      */
     public List<Resource> get(ResourceType type) throws RegistryException{
+        return get(type, -1, -1, null, null);
+    }
+
+    /**
+     * Method get all results of the given child resource type with paginaltion and ordering
+     *
+     * @param type child resource type
+     * @param limit
+     * @param offset
+     * @param orderByIdentifier
+     * @param resultOrderType
+     * @return list of child resources
+     * @throws RegistryException
+     */
+    public List<Resource> get(ResourceType type, int limit, int offset, Object orderByIdentifier,
+                              ResultOrderType resultOrderType) throws RegistryException{
         List<Resource> result = new ArrayList<Resource>();
         EntityManager em = null;
         try {
@@ -239,9 +258,21 @@ public class WorkerResource extends AbstractResource {
                     Gateway gatewayModel = em.find(Gateway.class, gateway.getGatewayId());
                     generator.setParameter("users", users);
                     generator.setParameter("gateway", gatewayModel);
-//                generator.setParameter(ProjectConstants.USERNAME, getUser());
-//                generator.setParameter(ProjectConstants.GATEWAY_NAME, gateway.getGatewayName());
-                    q = generator.selectQuery(em);
+
+                    //ordering - only supported only by CREATION_TIME
+                    if(orderByIdentifier != null && resultOrderType != null
+                            && orderByIdentifier.equals(Constants.FieldConstants.ProjectConstants.CREATION_TIME)) {
+                        q = generator.selectQuery(em, ProjectConstants.CREATION_TIME, resultOrderType);
+                    }else{
+                        q = generator.selectQuery(em);
+                    }
+
+                    //pagination
+                    if(limit>0 && offset>=0){
+                        q.setFirstResult(offset);
+                        q.setMaxResults(limit);
+                    }
+
                     for (Object o : q.getResultList()) {
                         Project project = (Project) o;
                         ProjectResource projectResource = (ProjectResource) Utils.getResource(ResourceType.PROJECT, project);
@@ -251,12 +282,26 @@ public class WorkerResource extends AbstractResource {
                 case EXPERIMENT:
                     generator = new QueryGenerator(EXPERIMENT);
                     generator.setParameter(ExperimentConstants.EXECUTION_USER, getUser());
-                    q = generator.selectQuery(em);
+
+                    //ordering - only supported only by CREATION_TIME
+                    if(orderByIdentifier != null && resultOrderType != null
+                            && orderByIdentifier.equals(Constants.FieldConstants.ProjectConstants.CREATION_TIME)) {
+                        q = generator.selectQuery(em, ExperimentConstants.CREATION_TIME, resultOrderType);
+                    }else{
+                        q = generator.selectQuery(em);
+                    }
+
+                    //pagination
+                    if(limit>0 && offset>=0){
+                        q.setFirstResult(offset);
+                        q.setMaxResults(limit);
+                    }
                     for (Object o : q.getResultList()) {
                         Experiment experiment = (Experiment) o;
                         ExperimentResource experimentResource = (ExperimentResource) Utils.getResource(ResourceType.EXPERIMENT, experiment);
                         result.add(experimentResource);
                     }
+
                     break;
                 default:
                     logger.error("Unsupported resource type for worker resource.", new IllegalArgumentException());
@@ -396,18 +441,29 @@ public class WorkerResource extends AbstractResource {
 	}
 
     /**
-     *
+     * Get projects list of user
      * @return  list of projects for the user
      */
     public List<ProjectResource> getProjects() throws RegistryException{
-		List<ProjectResource> result=new ArrayList<ProjectResource>();
-		List<Resource> list = get(ResourceType.PROJECT);
-		for (Resource resource : list) {
-			result.add((ProjectResource) resource);
-		}
-		return result;
+		return getProjects(-1, -1, null, null);
 	}
 
+
+    /**
+     * Get projects list of user with pagination and ordering
+     *
+     * @return  list of projects for the user
+     */
+    public List<ProjectResource> getProjects(int limit, int offset, Object orderByIdentifier,
+                                             ResultOrderType resultOrderType) throws RegistryException{
+        List<ProjectResource> result=new ArrayList<ProjectResource>();
+        List<Resource> list = get(ResourceType.PROJECT, limit, offset, orderByIdentifier, resultOrderType);
+        for (Resource resource : list) {
+            result.add((ProjectResource) resource);
+        }
+        return result;
+    }
+
     /**
      *
      * @param name experiment name
@@ -432,19 +488,33 @@ public class WorkerResource extends AbstractResource {
 //    }
 
     /**
-     *
+     * Method to get list of expeirments of user
      * @return list of experiments for the user
      */
 	public List<ExperimentResource> getExperiments() throws RegistryException{
-		List<ExperimentResource> result=new ArrayList<ExperimentResource>();
-		List<Resource> list = get(ResourceType.EXPERIMENT);
-		for (Resource resource : list) {
-			result.add((ExperimentResource) resource);
-		}
-		return result;
+		return getExperiments(-1, -1, null, null);
 	}
 
     /**
+     * Method to get list of experiments of user with pagination and ordering
+     * @param limit
+     * @param offset
+     * @param orderByIdentifier
+     * @param resultOrderType
+     * @return
+     * @throws RegistryException
+     */
+    public List<ExperimentResource> getExperiments(int limit, int offset, Object orderByIdentifier,
+                                                   ResultOrderType resultOrderType) throws RegistryException{
+        List<ExperimentResource> result=new ArrayList<ExperimentResource>();
+        List<Resource> list = get(ResourceType.EXPERIMENT, limit, offset, orderByIdentifier, resultOrderType);
+        for (Resource resource : list) {
+            result.add((ExperimentResource) resource);
+        }
+        return result;
+    }
+
+    /**
      *
      * @param experimentId  experiment name
      */
@@ -460,7 +530,7 @@ public class WorkerResource extends AbstractResource {
      * @throws RegistryException
      */
     public List<ProjectResource> searchProjects (Map<String, String> filters) throws RegistryException{
-        return searchProjectsWithPagination(filters, -1, -1, null, null);
+        return searchProjects(filters, -1, -1, null, null);
     }
 
     /**
@@ -477,8 +547,8 @@ public class WorkerResource extends AbstractResource {
      * @return
      * @throws RegistryException
      */
-    public List<ProjectResource> searchProjectsWithPagination(Map<String, String> filters, int limit,
-        int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
+    public List<ProjectResource> searchProjects(Map<String, String> filters, int limit,
+             int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
         List<ProjectResource> result = new ArrayList<ProjectResource>();
         EntityManager em = null;
         try {
@@ -502,7 +572,7 @@ public class WorkerResource extends AbstractResource {
 
             //ordering
             if( orderByIdentifier != null && resultOrderType != null
-                    && orderByIdentifier.equals(ProjectConstants.CREATION_TIME)){
+                    && orderByIdentifier.equals(Constants.FieldConstants.ProjectConstants.CREATION_TIME)){
                 String order = (resultOrderType == ResultOrderType.ASC) ? "ASC" : "DESC";
                 query += " ORDER BY p." + ProjectConstants.CREATION_TIME + " " + order;
             }
@@ -549,7 +619,7 @@ public class WorkerResource extends AbstractResource {
      * @throws RegistryException
      */
     public List<ExperimentResource> searchExperiments (Map<String, String> filters) throws RegistryException{
-        return searchExperimentsWithPagination(filters, -1, -1, null, null);
+        return searchExperiments(filters, -1, -1, null, null);
     }
 
     /**
@@ -565,8 +635,8 @@ public class WorkerResource extends AbstractResource {
      * @return
      * @throws RegistryException
      */
-    public List<ExperimentResource> searchExperimentsWithPagination(Map<String, String> filters, int limit,
-        int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
+    public List<ExperimentResource> searchExperiments(Map<String, String> filters, int limit,
+                                                      int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
 
         List<ExperimentResource> result = new ArrayList<ExperimentResource>();
         EntityManager em = null;
@@ -579,6 +649,8 @@ public class WorkerResource extends AbstractResource {
                         query += "e." + field + "= '" + filterVal + "' AND ";
                     }else if (field.equals(ExperimentConstants.GATEWAY_ID)) {
                         query += "e." + field + "= '" + filterVal + "' AND ";
+                    } else if (field.equals(ExperimentConstants.PROJECT_ID)) {
+                        query += "e." + field + "= '" + filterVal + "' AND ";
                     } else {
                         if (filterVal.contains("*")){
                             filterVal = filterVal.replaceAll("\\*", "");
@@ -591,7 +663,7 @@ public class WorkerResource extends AbstractResource {
 
             //ordering
             if( orderByIdentifier != null && resultOrderType != null
-                    && orderByIdentifier.equals(ExperimentConstants.CREATION_TIME)){
+                    && orderByIdentifier.equals(Constants.FieldConstants.ExperimentConstants.CREATION_TIME)){
                 String order = (resultOrderType == ResultOrderType.ASC) ? "ASC" : "DESC";
                 query += " ORDER BY e." + ExperimentConstants.CREATION_TIME + " " + order;
             }
@@ -630,17 +702,75 @@ public class WorkerResource extends AbstractResource {
         return result;
     }
 
-    public List<ExperimentResource> searchExperimentsByState (String experimentState) throws RegistryException{
+    /**
+     * Method to get experiments by state
+     * @param filters
+     * @return
+     * @throws RegistryException
+     */
+    public List<ExperimentResource> searchExperimentsByState (Map<String, String> filters) throws RegistryException{
+        return searchExperimentsByState(filters, -1, -1, null, null);
+    }
+
+    /**
+     * Method to get experiments of the given state with pagination and ordering
+     * @param filters
+     * @param limit
+     * @param offset
+     * @param orderByIdentifier
+     * @param resultOrderType
+     * @return
+     * @throws RegistryException
+     */
+    public List<ExperimentResource> searchExperimentsByState (Map<String, String> filters, int limit, int offset,
+            Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException{
         List<ExperimentResource> result = new ArrayList<ExperimentResource>();
         EntityManager em = null;
         try {
+            String experimentState = ExperimentState.valueOf(filters.get(StatusConstants.STATE)).toString();
             String query = "SELECT e FROM Status s " +
                     "JOIN s.experiment e " +
                     "WHERE s.state='" + experimentState +  "' " +
-                    "AND s.statusType='" + StatusType.EXPERIMENT + "'";
+                    "AND s.statusType='" + StatusType.EXPERIMENT + "' AND ";
+
+            filters.remove(StatusConstants.STATE);
+            if (filters.size() != 0) {
+                for (String field : filters.keySet()) {
+                    String filterVal = filters.get(field);
+                    if (field.equals(ExperimentConstants.EXECUTION_USER)) {
+                        query += "e." + field + "= '" + filterVal + "' AND ";
+                    }else if (field.equals(ExperimentConstants.GATEWAY_ID)) {
+                        query += "e." + field + "= '" + filterVal + "' AND ";
+                    } else if (field.equals(ExperimentConstants.PROJECT_ID)) {
+                        query += "e." + field + "= '" + filterVal + "' AND ";
+                    } else {
+                        if (filterVal.contains("*")){
+                            filterVal = filterVal.replaceAll("\\*", "");
+                        }
+                        query += "e." + field + " LIKE '%" + filterVal + "%' AND ";
+                    }
+                }
+            }
+            query = query.substring(0, query.length() - 5);
+
+            //ordering
+            if( orderByIdentifier != null && resultOrderType != null
+                    && orderByIdentifier.equals(Constants.FieldConstants.ExperimentConstants.CREATION_TIME)){
+                String order = (resultOrderType == ResultOrderType.ASC) ? "ASC" : "DESC";
+                query += " ORDER BY e." + ExperimentConstants.CREATION_TIME + " " + order;
+            }
+
             em = ResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            Query q = em.createQuery(query);
+            Query q;
+
+            //pagination
+            if(offset>=0 && limit >=0){
+                q = em.createQuery(query).setFirstResult(offset).setMaxResults(limit);
+            }else{
+                q = em.createQuery(query);
+            }
+
             List resultList = q.getResultList();
             for (Object o : resultList) {
                 Experiment experiment = (Experiment) o;
@@ -663,16 +793,60 @@ public class WorkerResource extends AbstractResource {
         return result;
     }
 
+    /**
+     * Search experiments from creation time between interval. Returns all results
+     * @param fromTime
+     * @param toTime
+     * @return
+     * @throws RegistryException
+     */
     public List<ExperimentResource> searchExperimentsByCreationTime (Timestamp fromTime, Timestamp toTime) throws RegistryException{
+        return  searchExperimentsByCreationTime(fromTime, toTime, -1, -1, null, null);
+    }
+
+
+    /**
+     * Search experiments from creation time between interval. Results are ordered creation time DESC.
+     * Supports pagination
+     *
+     * @param fromTime
+     * @param toTime
+     * @param limit
+     * @param offset
+     * @param orderByIdentifier
+     * @param resultOrderType
+     * @return
+     * @throws RegistryException
+     */
+    public List<ExperimentResource> searchExperimentsByCreationTime(
+            Timestamp fromTime, Timestamp toTime, int limit, int offset, Object orderByIdentifier,
+            ResultOrderType resultOrderType) throws RegistryException{
+
         List<ExperimentResource> result = new ArrayList<ExperimentResource>();
         EntityManager em = null;
         try {
             String query = "SELECT e FROM Experiment e " +
                     "WHERE e.creationTime > '" + fromTime +  "' " +
                     "AND e.creationTime <'" + toTime + "'";
+
+            //ordering
+            if( orderByIdentifier != null && resultOrderType != null
+                    && orderByIdentifier.equals(Constants.FieldConstants.ExperimentConstants.CREATION_TIME)){
+                String order = (resultOrderType == ResultOrderType.ASC) ? "ASC" : "DESC";
+                query += " ORDER BY e." + ExperimentConstants.CREATION_TIME + " " + order;
+            }
+
             em = ResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            Query q = em.createQuery(query);
+            Query q;
+
+            //pagination
+            if(offset>=0 && limit >=0){
+                q = em.createQuery(query).setFirstResult(offset).setMaxResults(limit);
+            }else{
+                q = em.createQuery(query);
+            }
+
             List resultList = q.getResultList();
             for (Object o : resultList) {
                 Experiment experiment = (Experiment) o;

http://git-wip-us.apache.org/repos/asf/airavata/blob/9f6e30e4/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/QueryGenerator.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/QueryGenerator.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/QueryGenerator.java
index 56594e0..b0ebe45 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/QueryGenerator.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/QueryGenerator.java
@@ -21,11 +21,12 @@
 
 package org.apache.airavata.persistance.registry.jpa.utils;
 
-import java.util.HashMap;
-import java.util.Map;
+import org.apache.airavata.registry.cpi.ResultOrderType;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
+import java.util.HashMap;
+import java.util.Map;
 
 public class QueryGenerator {
 	private String tableName;
@@ -58,12 +59,32 @@ public class QueryGenerator {
 	public void setParameter(String colName, Object matchValue){
 		addMatch(colName, matchValue);
 	}
-	
+
+    /**
+     * Select query
+     * @param entityManager
+     * @return
+     */
 	public Query selectQuery(EntityManager entityManager){
         String queryString="SELECT "+ SELECT_OBJ + " FROM " +getTableName()+" "+TABLE_OBJ;
         return generateQueryWithParameters(entityManager, queryString);
     }
 
+    /**
+     * Select query with pagination
+     * @param entityManager
+     * @param orderByColumn
+     * @param resultOrderType
+     * @return
+     */
+    public Query selectQuery(EntityManager entityManager, String orderByColumn,
+                             ResultOrderType resultOrderType){
+        String order = (resultOrderType == ResultOrderType.ASC) ? "ASC" : "DESC";
+        String orderByClause = " ORDER BY " + SELECT_OBJ + "." + orderByColumn + " " + order;
+        String queryString="SELECT "+ SELECT_OBJ + " FROM " +getTableName()+" "+TABLE_OBJ;
+        return generateQueryWithParameters(entityManager, queryString, orderByClause);
+    }
+
 //    public Query countQuery(EntityManager entityManager){
 //        SELECT COUNT(p.host_descriptor_ID) FROM Host_Descriptor p WHERE p.gateway_name =:gate_ID and p.host_descriptor_ID =:host_desc_name")
 //        String queryString="SELECT COUNT("+ SELECT_OBJ + " FROM " +getTableName()+" "+TABLE_OBJ;
@@ -77,25 +98,31 @@ public class QueryGenerator {
 
 	private Query generateQueryWithParameters(EntityManager entityManager,
 			String queryString) {
-		Map<String,Object> queryParameters=new HashMap<String, Object>();
-		if (matches.size()>0){
-			String matchString = "";
-			int paramCount=0;
-			for (String colName : matches.keySet()) {
-				String paramName="param"+paramCount;
-				queryParameters.put(paramName, matches.get(colName));
-				if (!matchString.equals("")){
-					matchString+=" AND ";
-				}
-				matchString+=TABLE_OBJ+"."+colName+" =:"+paramName;
-				paramCount++;
-			}
-			queryString+=" WHERE "+matchString;
-		}
-		Query query = entityManager.createQuery(queryString);
-		for (String paramName : queryParameters.keySet()) {
-			query.setParameter(paramName, queryParameters.get(paramName));
-		}
-		return query;
+		return generateQueryWithParameters(entityManager, queryString, "");
 	}
+
+    private Query generateQueryWithParameters(EntityManager entityManager,
+                                              String queryString, String orderByClause) {
+        Map<String,Object> queryParameters=new HashMap<String, Object>();
+        if (matches.size()>0){
+            String matchString = "";
+            int paramCount=0;
+            for (String colName : matches.keySet()) {
+                String paramName="param"+paramCount;
+                queryParameters.put(paramName, matches.get(colName));
+                if (!matchString.equals("")){
+                    matchString+=" AND ";
+                }
+                matchString+=TABLE_OBJ+"."+colName+" =:"+paramName;
+                paramCount++;
+            }
+            queryString+=" WHERE "+matchString;
+        }
+        queryString += orderByClause;
+        Query query = entityManager.createQuery(queryString);
+        for (String paramName : queryParameters.keySet()) {
+            query.setParameter(paramName, queryParameters.get(paramName));
+        }
+        return query;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/9f6e30e4/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/RegistryUseCaseTest.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/RegistryUseCaseTest.java b/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/RegistryUseCaseTest.java
index 17f4e71..1a78b1e 100644
--- a/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/RegistryUseCaseTest.java
+++ b/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/RegistryUseCaseTest.java
@@ -29,7 +29,6 @@ import org.apache.airavata.model.workspace.experiment.Experiment;
 import org.apache.airavata.model.workspace.experiment.ExperimentSummary;
 import org.apache.airavata.model.workspace.experiment.UserConfigurationData;
 import org.apache.airavata.persistance.registry.jpa.impl.RegistryFactory;
-import org.apache.airavata.persistance.registry.jpa.resources.AbstractResource;
 import org.apache.airavata.persistance.registry.jpa.util.Initialize;
 import org.apache.airavata.registry.cpi.*;
 import org.apache.airavata.registry.cpi.utils.Constants;
@@ -89,7 +88,7 @@ public class RegistryUseCaseTest {
             Assert.assertEquals(updatedProject.getName(), retrievedProject.getName());
             Assert.assertEquals(updatedProject.getDescription(), retrievedProject.getDescription());
             Assert.assertNotNull(retrievedProject.getCreationTime());
-            //created users should be in the shared users list
+            //created user should be in the shared users list
             Assert.assertTrue(retrievedProject.getSharedUsers().size()==1);
 
             //creating more projects for the same user
@@ -149,8 +148,8 @@ public class RegistryUseCaseTest {
             //search projects with pagination
             filters = new HashMap<String, String>();
             filters.put(Constants.FieldConstants.ProjectConstants.OWNER, "TestUser"+TAG);
-            list = registry.searchWithPagination(RegistryModelType.PROJECT, filters, 2, 2,
-                    AbstractResource.ProjectConstants.CREATION_TIME, ResultOrderType.DESC);
+            list = registry.search(RegistryModelType.PROJECT, filters, 2, 2,
+                    Constants.FieldConstants.ProjectConstants.CREATION_TIME, ResultOrderType.DESC);
             Assert.assertTrue(list.size()==2);
             Project project1 = (Project)list.get(0);
             Project project2 = (Project)list.get(1);
@@ -236,7 +235,7 @@ public class RegistryUseCaseTest {
             experiment.addToExperimentInputs(inputDataObjectType);
 
             String experimentId2 = (String)registry.add(ParentDataType.EXPERIMENT, experiment, gatewayId);
-            Assert.assertNotNull(experimentId1);
+            Assert.assertNotNull(experimentId2);
 
             experiment = new Experiment();
             experiment.setProjectID(projectId1);
@@ -248,7 +247,7 @@ public class RegistryUseCaseTest {
             experiment.addToExperimentInputs(inputDataObjectType);
 
             String experimentId3 = (String)registry.add(ParentDataType.EXPERIMENT, experiment, gatewayId);
-            Assert.assertNotNull(experimentId1);
+            Assert.assertNotNull(experimentId3);
 
             //searching experiments by name
             Map<String, String> filters = new HashMap<String, String>();
@@ -274,8 +273,8 @@ public class RegistryUseCaseTest {
             filters = new HashMap<String, String>();
             filters.put(Constants.FieldConstants.ExperimentConstants.USER_NAME, "TestUser" + TAG);
             filters.put(Constants.FieldConstants.ExperimentConstants.GATEWAY, gatewayId);
-            list = registry.searchWithPagination(RegistryModelType.EXPERIMENT, filters, 2, 1,
-                    AbstractResource.ExperimentConstants.CREATION_TIME, ResultOrderType.DESC);
+            list = registry.search(RegistryModelType.EXPERIMENT, filters, 2, 1,
+                    Constants.FieldConstants.ExperimentConstants.CREATION_TIME, ResultOrderType.DESC);
             Assert.assertTrue(list.size()==2);
             ExperimentSummary exp1 = (ExperimentSummary)list.get(0);
             ExperimentSummary exp2 = (ExperimentSummary)list.get(1);


[08/19] airavata git commit: Changing Airavata API to support paginated result retrieval of Project and Experiment data

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/0a3d857b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp
index ac590e3..8c7d1ee 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp
@@ -3570,7 +3570,7 @@ uint32_t Airavata_getAllUserProjects_presult::read(::apache::thrift::protocol::T
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectName_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_getAllUserProjectsWithPagination_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -3583,7 +3583,8 @@ uint32_t Airavata_searchProjectsByProjectName_args::read(::apache::thrift::proto
 
   bool isset_gatewayId = false;
   bool isset_userName = false;
-  bool isset_projectName = false;
+  bool isset_limit = false;
+  bool isset_offset = false;
 
   while (true)
   {
@@ -3610,9 +3611,17 @@ uint32_t Airavata_searchProjectsByProjectName_args::read(::apache::thrift::proto
         }
         break;
       case 3:
-        if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->projectName);
-          isset_projectName = true;
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->limit);
+          isset_limit = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->offset);
+          isset_offset = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -3630,14 +3639,16 @@ uint32_t Airavata_searchProjectsByProjectName_args::read(::apache::thrift::proto
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_userName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_projectName)
+  if (!isset_limit)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_offset)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectName_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_getAllUserProjectsWithPagination_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectName_args");
+  xfer += oprot->writeStructBegin("Airavata_getAllUserProjectsWithPagination_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
@@ -3647,8 +3658,12 @@ uint32_t Airavata_searchProjectsByProjectName_args::write(::apache::thrift::prot
   xfer += oprot->writeString(this->userName);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("projectName", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString(this->projectName);
+  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 3);
+  xfer += oprot->writeI32(this->limit);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 4);
+  xfer += oprot->writeI32(this->offset);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -3656,9 +3671,9 @@ uint32_t Airavata_searchProjectsByProjectName_args::write(::apache::thrift::prot
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectName_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_getAllUserProjectsWithPagination_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectName_pargs");
+  xfer += oprot->writeStructBegin("Airavata_getAllUserProjectsWithPagination_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
@@ -3668,8 +3683,12 @@ uint32_t Airavata_searchProjectsByProjectName_pargs::write(::apache::thrift::pro
   xfer += oprot->writeString((*(this->userName)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("projectName", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString((*(this->projectName)));
+  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 3);
+  xfer += oprot->writeI32((*(this->limit)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 4);
+  xfer += oprot->writeI32((*(this->offset)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -3677,7 +3696,7 @@ uint32_t Airavata_searchProjectsByProjectName_pargs::write(::apache::thrift::pro
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectName_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_getAllUserProjectsWithPagination_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -3753,11 +3772,11 @@ uint32_t Airavata_searchProjectsByProjectName_result::read(::apache::thrift::pro
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectName_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_getAllUserProjectsWithPagination_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectName_result");
+  xfer += oprot->writeStructBegin("Airavata_getAllUserProjectsWithPagination_result");
 
   if (this->__isset.success) {
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
@@ -3789,7 +3808,7 @@ uint32_t Airavata_searchProjectsByProjectName_result::write(::apache::thrift::pr
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectName_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_getAllUserProjectsWithPagination_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -3865,7 +3884,7 @@ uint32_t Airavata_searchProjectsByProjectName_presult::read(::apache::thrift::pr
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDesc_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectName_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -3878,7 +3897,7 @@ uint32_t Airavata_searchProjectsByProjectDesc_args::read(::apache::thrift::proto
 
   bool isset_gatewayId = false;
   bool isset_userName = false;
-  bool isset_description = false;
+  bool isset_projectName = false;
 
   while (true)
   {
@@ -3906,8 +3925,8 @@ uint32_t Airavata_searchProjectsByProjectDesc_args::read(::apache::thrift::proto
         break;
       case 3:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->description);
-          isset_description = true;
+          xfer += iprot->readString(this->projectName);
+          isset_projectName = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -3925,14 +3944,14 @@ uint32_t Airavata_searchProjectsByProjectDesc_args::read(::apache::thrift::proto
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_userName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_description)
+  if (!isset_projectName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDesc_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectName_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDesc_args");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectName_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
@@ -3942,8 +3961,8 @@ uint32_t Airavata_searchProjectsByProjectDesc_args::write(::apache::thrift::prot
   xfer += oprot->writeString(this->userName);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString(this->description);
+  xfer += oprot->writeFieldBegin("projectName", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->projectName);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -3951,9 +3970,9 @@ uint32_t Airavata_searchProjectsByProjectDesc_args::write(::apache::thrift::prot
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDesc_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectName_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDesc_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectName_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
@@ -3963,8 +3982,8 @@ uint32_t Airavata_searchProjectsByProjectDesc_pargs::write(::apache::thrift::pro
   xfer += oprot->writeString((*(this->userName)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString((*(this->description)));
+  xfer += oprot->writeFieldBegin("projectName", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString((*(this->projectName)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -3972,7 +3991,7 @@ uint32_t Airavata_searchProjectsByProjectDesc_pargs::write(::apache::thrift::pro
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDesc_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectName_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4048,11 +4067,11 @@ uint32_t Airavata_searchProjectsByProjectDesc_result::read(::apache::thrift::pro
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDesc_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectName_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDesc_result");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectName_result");
 
   if (this->__isset.success) {
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
@@ -4084,7 +4103,7 @@ uint32_t Airavata_searchProjectsByProjectDesc_result::write(::apache::thrift::pr
   return xfer;
 }
 
-uint32_t Airavata_searchProjectsByProjectDesc_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectName_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4160,7 +4179,7 @@ uint32_t Airavata_searchProjectsByProjectDesc_presult::read(::apache::thrift::pr
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByName_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectNameWithPagination_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4173,7 +4192,9 @@ uint32_t Airavata_searchExperimentsByName_args::read(::apache::thrift::protocol:
 
   bool isset_gatewayId = false;
   bool isset_userName = false;
-  bool isset_expName = false;
+  bool isset_projectName = false;
+  bool isset_limit = false;
+  bool isset_offset = false;
 
   while (true)
   {
@@ -4201,8 +4222,24 @@ uint32_t Airavata_searchExperimentsByName_args::read(::apache::thrift::protocol:
         break;
       case 3:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->expName);
-          isset_expName = true;
+          xfer += iprot->readString(this->projectName);
+          isset_projectName = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->limit);
+          isset_limit = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->offset);
+          isset_offset = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -4220,14 +4257,18 @@ uint32_t Airavata_searchExperimentsByName_args::read(::apache::thrift::protocol:
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_userName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_expName)
+  if (!isset_projectName)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_limit)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_offset)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByName_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectNameWithPagination_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByName_args");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectNameWithPagination_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
@@ -4237,8 +4278,16 @@ uint32_t Airavata_searchExperimentsByName_args::write(::apache::thrift::protocol
   xfer += oprot->writeString(this->userName);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("expName", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString(this->expName);
+  xfer += oprot->writeFieldBegin("projectName", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->projectName);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
+  xfer += oprot->writeI32(this->limit);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 5);
+  xfer += oprot->writeI32(this->offset);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -4246,9 +4295,9 @@ uint32_t Airavata_searchExperimentsByName_args::write(::apache::thrift::protocol
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByName_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectNameWithPagination_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByName_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectNameWithPagination_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
@@ -4258,8 +4307,16 @@ uint32_t Airavata_searchExperimentsByName_pargs::write(::apache::thrift::protoco
   xfer += oprot->writeString((*(this->userName)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("expName", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString((*(this->expName)));
+  xfer += oprot->writeFieldBegin("projectName", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString((*(this->projectName)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
+  xfer += oprot->writeI32((*(this->limit)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 5);
+  xfer += oprot->writeI32((*(this->offset)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -4267,7 +4324,7 @@ uint32_t Airavata_searchExperimentsByName_pargs::write(::apache::thrift::protoco
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByName_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectNameWithPagination_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4343,17 +4400,17 @@ uint32_t Airavata_searchExperimentsByName_result::read(::apache::thrift::protoco
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByName_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectNameWithPagination_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByName_result");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectNameWithPagination_result");
 
   if (this->__isset.success) {
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> ::const_iterator _iter64;
+      std::vector< ::apache::airavata::model::workspace::Project> ::const_iterator _iter64;
       for (_iter64 = this->success.begin(); _iter64 != this->success.end(); ++_iter64)
       {
         xfer += (*_iter64).write(oprot);
@@ -4379,7 +4436,7 @@ uint32_t Airavata_searchExperimentsByName_result::write(::apache::thrift::protoc
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByName_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectNameWithPagination_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4455,7 +4512,7 @@ uint32_t Airavata_searchExperimentsByName_presult::read(::apache::thrift::protoc
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByDesc_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectDesc_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4520,9 +4577,9 @@ uint32_t Airavata_searchExperimentsByDesc_args::read(::apache::thrift::protocol:
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByDesc_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectDesc_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByDesc_args");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDesc_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
@@ -4541,9 +4598,9 @@ uint32_t Airavata_searchExperimentsByDesc_args::write(::apache::thrift::protocol
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByDesc_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectDesc_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByDesc_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDesc_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
@@ -4562,7 +4619,7 @@ uint32_t Airavata_searchExperimentsByDesc_pargs::write(::apache::thrift::protoco
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByDesc_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectDesc_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4638,17 +4695,17 @@ uint32_t Airavata_searchExperimentsByDesc_result::read(::apache::thrift::protoco
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByDesc_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectDesc_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByDesc_result");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDesc_result");
 
   if (this->__isset.success) {
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> ::const_iterator _iter75;
+      std::vector< ::apache::airavata::model::workspace::Project> ::const_iterator _iter75;
       for (_iter75 = this->success.begin(); _iter75 != this->success.end(); ++_iter75)
       {
         xfer += (*_iter75).write(oprot);
@@ -4674,7 +4731,7 @@ uint32_t Airavata_searchExperimentsByDesc_result::write(::apache::thrift::protoc
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByDesc_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectDesc_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4750,7 +4807,7 @@ uint32_t Airavata_searchExperimentsByDesc_presult::read(::apache::thrift::protoc
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByApplication_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectDescWithPagination_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4763,7 +4820,9 @@ uint32_t Airavata_searchExperimentsByApplication_args::read(::apache::thrift::pr
 
   bool isset_gatewayId = false;
   bool isset_userName = false;
-  bool isset_applicationId = false;
+  bool isset_description = false;
+  bool isset_limit = false;
+  bool isset_offset = false;
 
   while (true)
   {
@@ -4791,8 +4850,24 @@ uint32_t Airavata_searchExperimentsByApplication_args::read(::apache::thrift::pr
         break;
       case 3:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->applicationId);
-          isset_applicationId = true;
+          xfer += iprot->readString(this->description);
+          isset_description = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->limit);
+          isset_limit = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->offset);
+          isset_offset = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -4810,14 +4885,18 @@ uint32_t Airavata_searchExperimentsByApplication_args::read(::apache::thrift::pr
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_userName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_applicationId)
+  if (!isset_description)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_limit)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_offset)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByApplication_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectDescWithPagination_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByApplication_args");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDescWithPagination_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
@@ -4827,8 +4906,16 @@ uint32_t Airavata_searchExperimentsByApplication_args::write(::apache::thrift::p
   xfer += oprot->writeString(this->userName);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("applicationId", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString(this->applicationId);
+  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->description);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
+  xfer += oprot->writeI32(this->limit);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 5);
+  xfer += oprot->writeI32(this->offset);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -4836,9 +4923,9 @@ uint32_t Airavata_searchExperimentsByApplication_args::write(::apache::thrift::p
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByApplication_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectDescWithPagination_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByApplication_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDescWithPagination_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
@@ -4848,8 +4935,16 @@ uint32_t Airavata_searchExperimentsByApplication_pargs::write(::apache::thrift::
   xfer += oprot->writeString((*(this->userName)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("applicationId", ::apache::thrift::protocol::T_STRING, 3);
-  xfer += oprot->writeString((*(this->applicationId)));
+  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString((*(this->description)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
+  xfer += oprot->writeI32((*(this->limit)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 5);
+  xfer += oprot->writeI32((*(this->offset)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -4857,7 +4952,7 @@ uint32_t Airavata_searchExperimentsByApplication_pargs::write(::apache::thrift::
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByApplication_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectDescWithPagination_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -4933,17 +5028,17 @@ uint32_t Airavata_searchExperimentsByApplication_result::read(::apache::thrift::
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByApplication_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchProjectsByProjectDescWithPagination_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByApplication_result");
+  xfer += oprot->writeStructBegin("Airavata_searchProjectsByProjectDescWithPagination_result");
 
   if (this->__isset.success) {
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> ::const_iterator _iter86;
+      std::vector< ::apache::airavata::model::workspace::Project> ::const_iterator _iter86;
       for (_iter86 = this->success.begin(); _iter86 != this->success.end(); ++_iter86)
       {
         xfer += (*_iter86).write(oprot);
@@ -4969,7 +5064,7 @@ uint32_t Airavata_searchExperimentsByApplication_result::write(::apache::thrift:
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByApplication_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchProjectsByProjectDescWithPagination_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5045,7 +5140,7 @@ uint32_t Airavata_searchExperimentsByApplication_presult::read(::apache::thrift:
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByStatus_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByName_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5058,7 +5153,7 @@ uint32_t Airavata_searchExperimentsByStatus_args::read(::apache::thrift::protoco
 
   bool isset_gatewayId = false;
   bool isset_userName = false;
-  bool isset_experimentState = false;
+  bool isset_expName = false;
 
   while (true)
   {
@@ -5085,11 +5180,9 @@ uint32_t Airavata_searchExperimentsByStatus_args::read(::apache::thrift::protoco
         }
         break;
       case 3:
-        if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast92;
-          xfer += iprot->readI32(ecast92);
-          this->experimentState = ( ::apache::airavata::model::workspace::experiment::ExperimentState::type)ecast92;
-          isset_experimentState = true;
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->expName);
+          isset_expName = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -5107,14 +5200,14 @@ uint32_t Airavata_searchExperimentsByStatus_args::read(::apache::thrift::protoco
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_userName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_experimentState)
+  if (!isset_expName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByStatus_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByName_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByStatus_args");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByName_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
@@ -5124,8 +5217,8 @@ uint32_t Airavata_searchExperimentsByStatus_args::write(::apache::thrift::protoc
   xfer += oprot->writeString(this->userName);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("experimentState", ::apache::thrift::protocol::T_I32, 3);
-  xfer += oprot->writeI32((int32_t)this->experimentState);
+  xfer += oprot->writeFieldBegin("expName", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->expName);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -5133,9 +5226,9 @@ uint32_t Airavata_searchExperimentsByStatus_args::write(::apache::thrift::protoc
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByStatus_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByName_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByStatus_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByName_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
@@ -5145,8 +5238,8 @@ uint32_t Airavata_searchExperimentsByStatus_pargs::write(::apache::thrift::proto
   xfer += oprot->writeString((*(this->userName)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("experimentState", ::apache::thrift::protocol::T_I32, 3);
-  xfer += oprot->writeI32((int32_t)(*(this->experimentState)));
+  xfer += oprot->writeFieldBegin("expName", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString((*(this->expName)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -5154,7 +5247,7 @@ uint32_t Airavata_searchExperimentsByStatus_pargs::write(::apache::thrift::proto
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByStatus_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByName_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5178,14 +5271,14 @@ uint32_t Airavata_searchExperimentsByStatus_result::read(::apache::thrift::proto
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->success.clear();
-            uint32_t _size93;
-            ::apache::thrift::protocol::TType _etype96;
-            xfer += iprot->readListBegin(_etype96, _size93);
-            this->success.resize(_size93);
-            uint32_t _i97;
-            for (_i97 = 0; _i97 < _size93; ++_i97)
+            uint32_t _size92;
+            ::apache::thrift::protocol::TType _etype95;
+            xfer += iprot->readListBegin(_etype95, _size92);
+            this->success.resize(_size92);
+            uint32_t _i96;
+            for (_i96 = 0; _i96 < _size92; ++_i96)
             {
-              xfer += this->success[_i97].read(iprot);
+              xfer += this->success[_i96].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -5230,20 +5323,20 @@ uint32_t Airavata_searchExperimentsByStatus_result::read(::apache::thrift::proto
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByStatus_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByName_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByStatus_result");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByName_result");
 
   if (this->__isset.success) {
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> ::const_iterator _iter98;
-      for (_iter98 = this->success.begin(); _iter98 != this->success.end(); ++_iter98)
+      std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> ::const_iterator _iter97;
+      for (_iter97 = this->success.begin(); _iter97 != this->success.end(); ++_iter97)
       {
-        xfer += (*_iter98).write(oprot);
+        xfer += (*_iter97).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -5266,7 +5359,7 @@ uint32_t Airavata_searchExperimentsByStatus_result::write(::apache::thrift::prot
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByStatus_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByName_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5290,14 +5383,14 @@ uint32_t Airavata_searchExperimentsByStatus_presult::read(::apache::thrift::prot
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             (*(this->success)).clear();
-            uint32_t _size99;
-            ::apache::thrift::protocol::TType _etype102;
-            xfer += iprot->readListBegin(_etype102, _size99);
-            (*(this->success)).resize(_size99);
-            uint32_t _i103;
-            for (_i103 = 0; _i103 < _size99; ++_i103)
+            uint32_t _size98;
+            ::apache::thrift::protocol::TType _etype101;
+            xfer += iprot->readListBegin(_etype101, _size98);
+            (*(this->success)).resize(_size98);
+            uint32_t _i102;
+            for (_i102 = 0; _i102 < _size98; ++_i102)
             {
-              xfer += (*(this->success))[_i103].read(iprot);
+              xfer += (*(this->success))[_i102].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -5342,7 +5435,7 @@ uint32_t Airavata_searchExperimentsByStatus_presult::read(::apache::thrift::prot
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByCreationTime_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByNameWithPagination_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5355,8 +5448,9 @@ uint32_t Airavata_searchExperimentsByCreationTime_args::read(::apache::thrift::p
 
   bool isset_gatewayId = false;
   bool isset_userName = false;
-  bool isset_fromTime = false;
-  bool isset_toTime = false;
+  bool isset_expName = false;
+  bool isset_limit = false;
+  bool isset_offset = false;
 
   while (true)
   {
@@ -5383,17 +5477,25 @@ uint32_t Airavata_searchExperimentsByCreationTime_args::read(::apache::thrift::p
         }
         break;
       case 3:
-        if (ftype == ::apache::thrift::protocol::T_I64) {
-          xfer += iprot->readI64(this->fromTime);
-          isset_fromTime = true;
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->expName);
+          isset_expName = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
       case 4:
-        if (ftype == ::apache::thrift::protocol::T_I64) {
-          xfer += iprot->readI64(this->toTime);
-          isset_toTime = true;
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->limit);
+          isset_limit = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->offset);
+          isset_offset = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -5411,16 +5513,18 @@ uint32_t Airavata_searchExperimentsByCreationTime_args::read(::apache::thrift::p
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_userName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_fromTime)
+  if (!isset_expName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_toTime)
+  if (!isset_limit)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_offset)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByCreationTime_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByNameWithPagination_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByCreationTime_args");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByNameWithPagination_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
@@ -5430,12 +5534,16 @@ uint32_t Airavata_searchExperimentsByCreationTime_args::write(::apache::thrift::
   xfer += oprot->writeString(this->userName);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("fromTime", ::apache::thrift::protocol::T_I64, 3);
-  xfer += oprot->writeI64(this->fromTime);
+  xfer += oprot->writeFieldBegin("expName", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->expName);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("toTime", ::apache::thrift::protocol::T_I64, 4);
-  xfer += oprot->writeI64(this->toTime);
+  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
+  xfer += oprot->writeI32(this->limit);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 5);
+  xfer += oprot->writeI32(this->offset);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -5443,9 +5551,9 @@ uint32_t Airavata_searchExperimentsByCreationTime_args::write(::apache::thrift::
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByCreationTime_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByNameWithPagination_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByCreationTime_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByNameWithPagination_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
@@ -5455,12 +5563,16 @@ uint32_t Airavata_searchExperimentsByCreationTime_pargs::write(::apache::thrift:
   xfer += oprot->writeString((*(this->userName)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("fromTime", ::apache::thrift::protocol::T_I64, 3);
-  xfer += oprot->writeI64((*(this->fromTime)));
+  xfer += oprot->writeFieldBegin("expName", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString((*(this->expName)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("toTime", ::apache::thrift::protocol::T_I64, 4);
-  xfer += oprot->writeI64((*(this->toTime)));
+  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
+  xfer += oprot->writeI32((*(this->limit)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 5);
+  xfer += oprot->writeI32((*(this->offset)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -5468,7 +5580,7 @@ uint32_t Airavata_searchExperimentsByCreationTime_pargs::write(::apache::thrift:
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByCreationTime_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByNameWithPagination_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5492,14 +5604,14 @@ uint32_t Airavata_searchExperimentsByCreationTime_result::read(::apache::thrift:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->success.clear();
-            uint32_t _size104;
-            ::apache::thrift::protocol::TType _etype107;
-            xfer += iprot->readListBegin(_etype107, _size104);
-            this->success.resize(_size104);
-            uint32_t _i108;
-            for (_i108 = 0; _i108 < _size104; ++_i108)
+            uint32_t _size103;
+            ::apache::thrift::protocol::TType _etype106;
+            xfer += iprot->readListBegin(_etype106, _size103);
+            this->success.resize(_size103);
+            uint32_t _i107;
+            for (_i107 = 0; _i107 < _size103; ++_i107)
             {
-              xfer += this->success[_i108].read(iprot);
+              xfer += this->success[_i107].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -5544,20 +5656,20 @@ uint32_t Airavata_searchExperimentsByCreationTime_result::read(::apache::thrift:
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByCreationTime_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByNameWithPagination_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByCreationTime_result");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByNameWithPagination_result");
 
   if (this->__isset.success) {
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> ::const_iterator _iter109;
-      for (_iter109 = this->success.begin(); _iter109 != this->success.end(); ++_iter109)
+      std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> ::const_iterator _iter108;
+      for (_iter108 = this->success.begin(); _iter108 != this->success.end(); ++_iter108)
       {
-        xfer += (*_iter109).write(oprot);
+        xfer += (*_iter108).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -5580,7 +5692,7 @@ uint32_t Airavata_searchExperimentsByCreationTime_result::write(::apache::thrift
   return xfer;
 }
 
-uint32_t Airavata_searchExperimentsByCreationTime_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByNameWithPagination_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5604,14 +5716,14 @@ uint32_t Airavata_searchExperimentsByCreationTime_presult::read(::apache::thrift
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             (*(this->success)).clear();
-            uint32_t _size110;
-            ::apache::thrift::protocol::TType _etype113;
-            xfer += iprot->readListBegin(_etype113, _size110);
-            (*(this->success)).resize(_size110);
-            uint32_t _i114;
-            for (_i114 = 0; _i114 < _size110; ++_i114)
+            uint32_t _size109;
+            ::apache::thrift::protocol::TType _etype112;
+            xfer += iprot->readListBegin(_etype112, _size109);
+            (*(this->success)).resize(_size109);
+            uint32_t _i113;
+            for (_i113 = 0; _i113 < _size109; ++_i113)
             {
-              xfer += (*(this->success))[_i114].read(iprot);
+              xfer += (*(this->success))[_i113].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -5656,7 +5768,7 @@ uint32_t Airavata_searchExperimentsByCreationTime_presult::read(::apache::thrift
   return xfer;
 }
 
-uint32_t Airavata_getAllExperimentsInProject_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByDesc_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5667,7 +5779,9 @@ uint32_t Airavata_getAllExperimentsInProject_args::read(::apache::thrift::protoc
 
   using ::apache::thrift::protocol::TProtocolException;
 
-  bool isset_projectId = false;
+  bool isset_gatewayId = false;
+  bool isset_userName = false;
+  bool isset_description = false;
 
   while (true)
   {
@@ -5679,8 +5793,24 @@ uint32_t Airavata_getAllExperimentsInProject_args::read(::apache::thrift::protoc
     {
       case 1:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->projectId);
-          isset_projectId = true;
+          xfer += iprot->readString(this->gatewayId);
+          isset_gatewayId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->userName);
+          isset_userName = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->description);
+          isset_description = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -5694,17 +5824,29 @@ uint32_t Airavata_getAllExperimentsInProject_args::read(::apache::thrift::protoc
 
   xfer += iprot->readStructEnd();
 
-  if (!isset_projectId)
+  if (!isset_gatewayId)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_userName)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_description)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
-uint32_t Airavata_getAllExperimentsInProject_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByDesc_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_getAllExperimentsInProject_args");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByDesc_args");
 
-  xfer += oprot->writeFieldBegin("projectId", ::apache::thrift::protocol::T_STRING, 1);
-  xfer += oprot->writeString(this->projectId);
+  xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString(this->gatewayId);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("userName", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString(this->userName);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->description);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -5712,12 +5854,20 @@ uint32_t Airavata_getAllExperimentsInProject_args::write(::apache::thrift::proto
   return xfer;
 }
 
-uint32_t Airavata_getAllExperimentsInProject_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByDesc_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_getAllExperimentsInProject_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByDesc_pargs");
 
-  xfer += oprot->writeFieldBegin("projectId", ::apache::thrift::protocol::T_STRING, 1);
-  xfer += oprot->writeString((*(this->projectId)));
+  xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString((*(this->gatewayId)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("userName", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString((*(this->userName)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString((*(this->description)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -5725,7 +5875,7 @@ uint32_t Airavata_getAllExperimentsInProject_pargs::write(::apache::thrift::prot
   return xfer;
 }
 
-uint32_t Airavata_getAllExperimentsInProject_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByDesc_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5749,14 +5899,14 @@ uint32_t Airavata_getAllExperimentsInProject_result::read(::apache::thrift::prot
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->success.clear();
-            uint32_t _size115;
-            ::apache::thrift::protocol::TType _etype118;
-            xfer += iprot->readListBegin(_etype118, _size115);
-            this->success.resize(_size115);
-            uint32_t _i119;
-            for (_i119 = 0; _i119 < _size115; ++_i119)
+            uint32_t _size114;
+            ::apache::thrift::protocol::TType _etype117;
+            xfer += iprot->readListBegin(_etype117, _size114);
+            this->success.resize(_size114);
+            uint32_t _i118;
+            for (_i118 = 0; _i118 < _size114; ++_i118)
             {
-              xfer += this->success[_i119].read(iprot);
+              xfer += this->success[_i118].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -5789,14 +5939,6 @@ uint32_t Airavata_getAllExperimentsInProject_result::read(::apache::thrift::prot
           xfer += iprot->skip(ftype);
         }
         break;
-      case 4:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->pnfe.read(iprot);
-          this->__isset.pnfe = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -5809,20 +5951,20 @@ uint32_t Airavata_getAllExperimentsInProject_result::read(::apache::thrift::prot
   return xfer;
 }
 
-uint32_t Airavata_getAllExperimentsInProject_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByDesc_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_getAllExperimentsInProject_result");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByDesc_result");
 
   if (this->__isset.success) {
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector< ::apache::airavata::model::workspace::experiment::Experiment> ::const_iterator _iter120;
-      for (_iter120 = this->success.begin(); _iter120 != this->success.end(); ++_iter120)
+      std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> ::const_iterator _iter119;
+      for (_iter119 = this->success.begin(); _iter119 != this->success.end(); ++_iter119)
       {
-        xfer += (*_iter120).write(oprot);
+        xfer += (*_iter119).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -5839,17 +5981,13 @@ uint32_t Airavata_getAllExperimentsInProject_result::write(::apache::thrift::pro
     xfer += oprot->writeFieldBegin("ase", ::apache::thrift::protocol::T_STRUCT, 3);
     xfer += this->ase.write(oprot);
     xfer += oprot->writeFieldEnd();
-  } else if (this->__isset.pnfe) {
-    xfer += oprot->writeFieldBegin("pnfe", ::apache::thrift::protocol::T_STRUCT, 4);
-    xfer += this->pnfe.write(oprot);
-    xfer += oprot->writeFieldEnd();
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
 }
 
-uint32_t Airavata_getAllExperimentsInProject_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByDesc_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5873,14 +6011,14 @@ uint32_t Airavata_getAllExperimentsInProject_presult::read(::apache::thrift::pro
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             (*(this->success)).clear();
-            uint32_t _size121;
-            ::apache::thrift::protocol::TType _etype124;
-            xfer += iprot->readListBegin(_etype124, _size121);
-            (*(this->success)).resize(_size121);
-            uint32_t _i125;
-            for (_i125 = 0; _i125 < _size121; ++_i125)
+            uint32_t _size120;
+            ::apache::thrift::protocol::TType _etype123;
+            xfer += iprot->readListBegin(_etype123, _size120);
+            (*(this->success)).resize(_size120);
+            uint32_t _i124;
+            for (_i124 = 0; _i124 < _size120; ++_i124)
             {
-              xfer += (*(this->success))[_i125].read(iprot);
+              xfer += (*(this->success))[_i124].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -5913,14 +6051,6 @@ uint32_t Airavata_getAllExperimentsInProject_presult::read(::apache::thrift::pro
           xfer += iprot->skip(ftype);
         }
         break;
-      case 4:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->pnfe.read(iprot);
-          this->__isset.pnfe = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -5933,7 +6063,7 @@ uint32_t Airavata_getAllExperimentsInProject_presult::read(::apache::thrift::pro
   return xfer;
 }
 
-uint32_t Airavata_getAllUserExperiments_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByDescWithPagination_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -5946,6 +6076,9 @@ uint32_t Airavata_getAllUserExperiments_args::read(::apache::thrift::protocol::T
 
   bool isset_gatewayId = false;
   bool isset_userName = false;
+  bool isset_description = false;
+  bool isset_limit = false;
+  bool isset_offset = false;
 
   while (true)
   {
@@ -5971,6 +6104,30 @@ uint32_t Airavata_getAllUserExperiments_args::read(::apache::thrift::protocol::T
           xfer += iprot->skip(ftype);
         }
         break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->description);
+          isset_description = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->limit);
+          isset_limit = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->offset);
+          isset_offset = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -5984,12 +6141,18 @@ uint32_t Airavata_getAllUserExperiments_args::read(::apache::thrift::protocol::T
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_userName)
     throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_description)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_limit)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_offset)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
-uint32_t Airavata_getAllUserExperiments_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByDescWithPagination_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_getAllUserExperiments_args");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByDescWithPagination_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
@@ -5999,14 +6162,26 @@ uint32_t Airavata_getAllUserExperiments_args::write(::apache::thrift::protocol::
   xfer += oprot->writeString(this->userName);
   xfer += oprot->writeFieldEnd();
 
+  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->description);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
+  xfer += oprot->writeI32(this->limit);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 5);
+  xfer += oprot->writeI32(this->offset);
+  xfer += oprot->writeFieldEnd();
+
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
 }
 
-uint32_t Airavata_getAllUserExperiments_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByDescWithPagination_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_getAllUserExperiments_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByDescWithPagination_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
@@ -6016,12 +6191,24 @@ uint32_t Airavata_getAllUserExperiments_pargs::write(::apache::thrift::protocol:
   xfer += oprot->writeString((*(this->userName)));
   xfer += oprot->writeFieldEnd();
 
+  xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString((*(this->description)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
+  xfer += oprot->writeI32((*(this->limit)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 5);
+  xfer += oprot->writeI32((*(this->offset)));
+  xfer += oprot->writeFieldEnd();
+
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
 }
 
-uint32_t Airavata_getAllUserExperiments_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByDescWithPagination_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -6045,14 +6232,14 @@ uint32_t Airavata_getAllUserExperiments_result::read(::apache::thrift::protocol:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->success.clear();
-            uint32_t _size126;
-            ::apache::thrift::protocol::TType _etype129;
-            xfer += iprot->readListBegin(_etype129, _size126);
-            this->success.resize(_size126);
-            uint32_t _i130;
-            for (_i130 = 0; _i130 < _size126; ++_i130)
+            uint32_t _size125;
+            ::apache::thrift::protocol::TType _etype128;
+            xfer += iprot->readListBegin(_etype128, _size125);
+            this->success.resize(_size125);
+            uint32_t _i129;
+            for (_i129 = 0; _i129 < _size125; ++_i129)
             {
-              xfer += this->success[_i130].read(iprot);
+              xfer += this->success[_i129].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -6097,20 +6284,20 @@ uint32_t Airavata_getAllUserExperiments_result::read(::apache::thrift::protocol:
   return xfer;
 }
 
-uint32_t Airavata_getAllUserExperiments_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByDescWithPagination_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_getAllUserExperiments_result");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByDescWithPagination_result");
 
   if (this->__isset.success) {
     xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
-      std::vector< ::apache::airavata::model::workspace::experiment::Experiment> ::const_iterator _iter131;
-      for (_iter131 = this->success.begin(); _iter131 != this->success.end(); ++_iter131)
+      std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> ::const_iterator _iter130;
+      for (_iter130 = this->success.begin(); _iter130 != this->success.end(); ++_iter130)
       {
-        xfer += (*_iter131).write(oprot);
+        xfer += (*_iter130).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -6133,7 +6320,7 @@ uint32_t Airavata_getAllUserExperiments_result::write(::apache::thrift::protocol
   return xfer;
 }
 
-uint32_t Airavata_getAllUserExperiments_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByDescWithPagination_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -6157,14 +6344,14 @@ uint32_t Airavata_getAllUserExperiments_presult::read(::apache::thrift::protocol
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             (*(this->success)).clear();
-            uint32_t _size132;
-            ::apache::thrift::protocol::TType _etype135;
-            xfer += iprot->readListBegin(_etype135, _size132);
-            (*(this->success)).resize(_size132);
-            uint32_t _i136;
-            for (_i136 = 0; _i136 < _size132; ++_i136)
+            uint32_t _size131;
+            ::apache::thrift::protocol::TType _etype134;
+            xfer += iprot->readListBegin(_etype134, _size131);
+            (*(this->success)).resize(_size131);
+            uint32_t _i135;
+            for (_i135 = 0; _i135 < _size131; ++_i135)
             {
-              xfer += (*(this->success))[_i136].read(iprot);
+              xfer += (*(this->success))[_i135].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -6209,7 +6396,7 @@ uint32_t Airavata_getAllUserExperiments_presult::read(::apache::thrift::protocol
   return xfer;
 }
 
-uint32_t Airavata_createExperiment_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByApplication_args::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -6221,7 +6408,8 @@ uint32_t Airavata_createExperiment_args::read(::apache::thrift::protocol::TProto
   using ::apache::thrift::protocol::TProtocolException;
 
   bool isset_gatewayId = false;
-  bool isset_experiment = false;
+  bool isset_userName = false;
+  bool isset_applicationId = false;
 
   while (true)
   {
@@ -6240,9 +6428,17 @@ uint32_t Airavata_createExperiment_args::read(::apache::thrift::protocol::TProto
         }
         break;
       case 2:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->experiment.read(iprot);
-          isset_experiment = true;
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->userName);
+          isset_userName = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->applicationId);
+          isset_applicationId = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -6258,21 +6454,27 @@ uint32_t Airavata_createExperiment_args::read(::apache::thrift::protocol::TProto
 
   if (!isset_gatewayId)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_experiment)
+  if (!isset_userName)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_applicationId)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
-uint32_t Airavata_createExperiment_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByApplication_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_createExperiment_args");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByApplication_args");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->gatewayId);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("experiment", ::apache::thrift::protocol::T_STRUCT, 2);
-  xfer += this->experiment.write(oprot);
+  xfer += oprot->writeFieldBegin("userName", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString(this->userName);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("applicationId", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->applicationId);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -6280,116 +6482,28 @@ uint32_t Airavata_createExperiment_args::write(::apache::thrift::protocol::TProt
   return xfer;
 }
 
-uint32_t Airavata_createExperiment_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByApplication_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_createExperiment_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByApplication_pargs");
 
   xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString((*(this->gatewayId)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("experiment", ::apache::thrift::protocol::T_STRUCT, 2);
-  xfer += (*(this->experiment)).write(oprot);
+  xfer += oprot->writeFieldBegin("userName", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString((*(this->userName)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldStop();
-  xfer += oprot->writeStructEnd();
-  return xfer;
-}
-
-uint32_t Airavata_createExperiment_result::read(::apache::thrift::protocol::TProtocol* iprot) {
-
-  uint32_t xfer = 0;
-  std::string fname;
-  ::apache::thrift::protocol::TType ftype;
-  int16_t fid;
-
-  xfer += iprot->readStructBegin(fname);
-
-  using ::apache::thrift::protocol::TProtocolException;
-
-
-  while (true)
-  {
-    xfer += iprot->readFieldBegin(fname, ftype, fid);
-    if (ftype == ::apache::thrift::protocol::T_STOP) {
-      break;
-    }
-    switch (fid)
-    {
-      case 0:
-        if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->success);
-          this->__isset.success = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
-      case 1:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->ire.read(iprot);
-          this->__isset.ire = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
-      case 2:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->ace.read(iprot);
-          this->__isset.ace = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
-      case 3:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->ase.read(iprot);
-          this->__isset.ase = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
-      default:
-        xfer += iprot->skip(ftype);
-        break;
-    }
-    xfer += iprot->readFieldEnd();
-  }
-
-  xfer += iprot->readStructEnd();
-
-  return xfer;
-}
-
-uint32_t Airavata_createExperiment_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
-
-  uint32_t xfer = 0;
-
-  xfer += oprot->writeStructBegin("Airavata_createExperiment_result");
+  xfer += oprot->writeFieldBegin("applicationId", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString((*(this->applicationId)));
+  xfer += oprot->writeFieldEnd();
 
-  if (this->__isset.success) {
-    xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_STRING, 0);
-    xfer += oprot->writeString(this->success);
-    xfer += oprot->writeFieldEnd();
-  } else if (this->__isset.ire) {
-    xfer += oprot->writeFieldBegin("ire", ::apache::thrift::protocol::T_STRUCT, 1);
-    xfer += this->ire.write(oprot);
-    xfer += oprot->writeFieldEnd();
-  } else if (this->__isset.ace) {
-    xfer += oprot->writeFieldBegin("ace", ::apache::thrift::protocol::T_STRUCT, 2);
-    xfer += this->ace.write(oprot);
-    xfer += oprot->writeFieldEnd();
-  } else if (this->__isset.ase) {
-    xfer += oprot->writeFieldBegin("ase", ::apache::thrift::protocol::T_STRUCT, 3);
-    xfer += this->ase.write(oprot);
-    xfer += oprot->writeFieldEnd();
-  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
 }
 
-uint32_t Airavata_createExperiment_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByApplication_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -6410,8 +6524,20 @@ uint32_t Airavata_createExperiment_presult::read(::apache::thrift::protocol::TPr
     switch (fid)
     {
       case 0:
-        if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString((*(this->success)));
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->success.clear();
+            uint32_t _size136;
+            ::apache::thrift::protocol::TType _etype139;
+            xfer += iprot->readListBegin(_etype139, _size136);
+            this->success.resize(_size136);
+            uint32_t _i140;
+            for (_i140 = 0; _i140 < _size136; ++_i140)
+            {
+              xfer += this->success[_i140].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
           this->__isset.success = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -6453,7 +6579,43 @@ uint32_t Airavata_createExperiment_presult::read(::apache::thrift::protocol::TPr
   return xfer;
 }
 
-uint32_t Airavata_getExperiment_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByApplication_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+
+  uint32_t xfer = 0;
+
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByApplication_result");
+
+  if (this->__isset.success) {
+    xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
+      std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> ::const_iterator _iter141;
+      for (_iter141 = this->success.begin(); _iter141 != this->success.end(); ++_iter141)
+      {
+        xfer += (*_iter141).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ire) {
+    xfer += oprot->writeFieldBegin("ire", ::apache::thrift::protocol::T_STRUCT, 1);
+    xfer += this->ire.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ace) {
+    xfer += oprot->writeFieldBegin("ace", ::apache::thrift::protocol::T_STRUCT, 2);
+    xfer += this->ace.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ase) {
+    xfer += oprot->writeFieldBegin("ase", ::apache::thrift::protocol::T_STRUCT, 3);
+    xfer += this->ase.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+uint32_t Airavata_searchExperimentsByApplication_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -6464,7 +6626,87 @@ uint32_t Airavata_getExperiment_args::read(::apache::thrift::protocol::TProtocol
 
   using ::apache::thrift::protocol::TProtocolException;
 
-  bool isset_airavataExperimentId = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            (*(this->success)).clear();
+            uint32_t _size142;
+            ::apache::thrift::protocol::TType _etype145;
+            xfer += iprot->readListBegin(_etype145, _size142);
+            (*(this->success)).resize(_size142);
+            uint32_t _i146;
+            for (_i146 = 0; _i146 < _size142; ++_i146)
+            {
+              xfer += (*(this->success))[_i146].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t Airavata_searchExperimentsByApplicationWithPagination_args::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_gatewayId = false;
+  bool isset_userName = false;
+  bool isset_applicationId = false;
+  bool isset_limit = false;
+  bool isset_offset = false;
 
   while (true)
   {
@@ -6476,8 +6718,40 @@ uint32_t Airavata_getExperiment_args::read(::apache::thrift::protocol::TProtocol
     {
       case 1:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->airavataExperimentId);
-          isset_airavataExperimentId = true;
+          xfer += iprot->readString(this->gatewayId);
+          isset_gatewayId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->userName);
+          isset_userName = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->applicationId);
+          isset_applicationId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->limit);
+          isset_limit = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->offset);
+          isset_offset = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -6491,17 +6765,41 @@ uint32_t Airavata_getExperiment_args::read(::apache::thrift::protocol::TProtocol
 
   xfer += iprot->readStructEnd();
 
-  if (!isset_airavataExperimentId)
+  if (!isset_gatewayId)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_userName)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_applicationId)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_limit)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_offset)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
-uint32_t Airavata_getExperiment_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByApplicationWithPagination_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_getExperiment_args");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByApplicationWithPagination_args");
 
-  xfer += oprot->writeFieldBegin("airavataExperimentId", ::apache::thrift::protocol::T_STRING, 1);
-  xfer += oprot->writeString(this->airavataExperimentId);
+  xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString(this->gatewayId);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("userName", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString(this->userName);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("applicationId", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->applicationId);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
+  xfer += oprot->writeI32(this->limit);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 5);
+  xfer += oprot->writeI32(this->offset);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -6509,12 +6807,28 @@ uint32_t Airavata_getExperiment_args::write(::apache::thrift::protocol::TProtoco
   return xfer;
 }
 
-uint32_t Airavata_getExperiment_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByApplicationWithPagination_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  xfer += oprot->writeStructBegin("Airavata_getExperiment_pargs");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByApplicationWithPagination_pargs");
 
-  xfer += oprot->writeFieldBegin("airavataExperimentId", ::apache::thrift::protocol::T_STRING, 1);
-  xfer += oprot->writeString((*(this->airavataExperimentId)));
+  xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString((*(this->gatewayId)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("userName", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString((*(this->userName)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("applicationId", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString((*(this->applicationId)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("limit", ::apache::thrift::protocol::T_I32, 4);
+  xfer += oprot->writeI32((*(this->limit)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("offset", ::apache::thrift::protocol::T_I32, 5);
+  xfer += oprot->writeI32((*(this->offset)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -6522,7 +6836,7 @@ uint32_t Airavata_getExperiment_pargs::write(::apache::thrift::protocol::TProtoc
   return xfer;
 }
 
-uint32_t Airavata_getExperiment_result::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByApplicationWithPagination_result::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -6543,8 +6857,20 @@ uint32_t Airavata_getExperiment_result::read(::apache::thrift::protocol::TProtoc
     switch (fid)
     {
       case 0:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->success.read(iprot);
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->success.clear();
+            uint32_t _size147;
+            ::apache::thrift::protocol::TType _etype150;
+            xfer += iprot->readListBegin(_etype150, _size147);
+            this->success.resize(_size147);
+            uint32_t _i151;
+            for (_i151 = 0; _i151 < _size147; ++_i151)
+            {
+              xfer += this->success[_i151].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
           this->__isset.success = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -6560,21 +6886,13 @@ uint32_t Airavata_getExperiment_result::read(::apache::thrift::protocol::TProtoc
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->enf.read(iprot);
-          this->__isset.enf = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
-      case 3:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
           xfer += this->ace.read(iprot);
           this->__isset.ace = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 4:
+      case 3:
         if (ftype == ::apache::thrift::protocol::T_STRUCT) {
           xfer += this->ase.read(iprot);
           this->__isset.ase = true;
@@ -6594,30 +6912,34 @@ uint32_t Airavata_getExperiment_result::read(::apache::thrift::protocol::TProtoc
   return xfer;
 }
 
-uint32_t Airavata_getExperiment_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t Airavata_searchExperimentsByApplicationWithPagination_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   uint32_t xfer = 0;
 
-  xfer += oprot->writeStructBegin("Airavata_getExperiment_result");
+  xfer += oprot->writeStructBegin("Airavata_searchExperimentsByApplicationWithPagination_result");
 
   if (this->__isset.success) {
-    xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_STRUCT, 0);
-    xfer += this->success.write(oprot);
+    xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
+      std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> ::const_iterator _iter152;
+      for (_iter152 = this->success.begin(); _iter152 != this->success.end(); ++_iter152)
+      {
+        xfer += (*_iter152).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
     xfer += oprot->writeFieldEnd();
   } else if (this->__isset.ire) {
     xfer += oprot->writeFieldBegin("ire", ::apache::thrift::protocol::T_STRUCT, 1);
     xfer += this->ire.write(oprot);
     xfer += oprot->writeFieldEnd();
-  } else if (this->__isset.enf) {
-    xfer += oprot->writeFieldBegin("enf", ::apache::thrift::protocol::T_STRUCT, 2);
-    xfer += this->enf.write(oprot);
-    xfer += oprot->writeFieldEnd();
   } else if (this->__isset.ace) {
-    xfer += oprot->writeFieldBegin("ace", ::apache::thrift::protocol::T_STRUCT, 3);
+    xfer += oprot->writeFieldBegin("ace", ::apache::thrift::protocol::T_STRUCT, 2);
     xfer += this->ace.write(oprot);
     xfer += oprot->writeFieldEnd();
   } else if (this->__isset.ase) {
-    xfer += oprot->writeFieldBegin("ase", ::apache::thrift::protocol::T_STRUCT, 4);
+    xfer += oprot->writeFieldBegin("ase", ::apache::thrift::protocol::T_STRUCT, 3);
     xfer += this->ase.write(oprot);
     xfer += oprot->writeFieldEnd();
   }
@@ -6626,7 +6948,7 @@ uint32_t Airavata_getExperiment_result::write(::apache::thrift::protocol::TProto
   return xfer;
 }
 
-uint32_t Airavata_getExperiment_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t Airavata_searchExperimentsByApplicationWithPagination_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   uint32_t xfer = 0;
   std::string fname;
@@ -6647,8 +6969,20 @@ uint32_t Airavata_getExperiment_presult::read(::apache::thrift::protocol::TProto
     switch (fid)
     {
       case 0:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += (*(this->success)).read(iprot);
+        if (ftype == ::apache::thri

<TRUNCATED>

[03/19] airavata git commit: Changing Airavata API to support paginated result retrieval of Project and Experiment data

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/0a3d857b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
index cab0463..a556289 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
@@ -155,12 +155,35 @@ class Iface:
       *
       * @param userName
       *    The Project Object described in the workspaceModel
+      * @deprecated Instead use getAllUserProjectsWithPagination
+    *
+
+    Parameters:
+     - gatewayId
+     - userName
+    """
+    pass
+
+  def getAllUserProjectsWithPagination(self, gatewayId, userName, limit, offset):
+    """
+      * Get all Project by user with pagination. Results will be ordered based
+      * on creation time DESC
       *
+      * @param gatewayId
+      *    The identifier for the requested gateway.
+      * @param userName
+      *    The identifier of the user
+      * @param limit
+      *    The amount results to be fetched
+      * @param offset
+      *    The starting point of the results to be fetched
     *
 
     Parameters:
      - gatewayId
      - userName
+     - limit
+     - offset
     """
     pass
 
@@ -168,23 +191,86 @@ class Iface:
     """
     Get all Project for user by project name
 
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param projectName
+       The name of the project on which the results to be fetched
+    @deprecated Instead use searchProjectsByProjectNameWithPagination
+
+    Parameters:
+     - gatewayId
+     - userName
+     - projectName
+    """
+    pass
+
+  def searchProjectsByProjectNameWithPagination(self, gatewayId, userName, projectName, limit, offset):
+    """
+    Get all Project for user by project name with pagination.Results will be ordered based
+    on creation time DESC
+
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param projectName
+       The name of the project on which the results to be fetched
+    @param limit
+       The amount results to be fetched
+    @param offset
+       The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
      - projectName
+     - limit
+     - offset
     """
     pass
 
   def searchProjectsByProjectDesc(self, gatewayId, userName, description):
     """
     Get all Project for user by project description
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param description
+       The description to be matched
+    @deprecated Instead use searchProjectsByProjectDescWithPagination
+
+    Parameters:
+     - gatewayId
+     - userName
+     - description
+    """
+    pass
+
+  def searchProjectsByProjectDescWithPagination(self, gatewayId, userName, description, limit, offset):
+    """
+    Search and get all Projects for user by project description with pagination. Results
+    will be ordered based on creation time DESC
 
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param description
+       The description to be matched
+    @param limit
+       The amount results to be fetched
+    @param offset
+       The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
      - description
+     - limit
+     - offset
     """
     pass
 
@@ -192,11 +278,45 @@ class Iface:
     """
     Search Experiments by experiment name
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param useNname
+          Username of the requested user
+    @param expName
+          Experiment name to be matched
+    @deprecated
+          Instead use searchExperimentsByNameWithPagination
+
+
+    Parameters:
+     - gatewayId
+     - userName
+     - expName
+    """
+    pass
+
+  def searchExperimentsByNameWithPagination(self, gatewayId, userName, expName, limit, offset):
+    """
+    Search Experiments by experiment name with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param expName
+          Experiment name to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
      - expName
+     - limit
+     - offset
     """
     pass
 
@@ -204,11 +324,44 @@ class Iface:
     """
     Search Experiments by experiment name
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param description
+          Experiment description to be matched
+    @deprecated
+          Instead use searchExperimentsByDescWithPagination
+
+    Parameters:
+     - gatewayId
+     - userName
+     - description
+    """
+    pass
+
+  def searchExperimentsByDescWithPagination(self, gatewayId, userName, description, limit, offset):
+    """
+    Search Experiments by experiment name with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param description
+          Experiment description to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
      - description
+     - limit
+     - offset
     """
     pass
 
@@ -216,11 +369,44 @@ class Iface:
     """
     Search Experiments by application id
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param applicationId
+          Application id to be matched
+    @deprecated
+          Instead use searchExperimentsByApplicationWithPagination
+
+    Parameters:
+     - gatewayId
+     - userName
+     - applicationId
+    """
+    pass
+
+  def searchExperimentsByApplicationWithPagination(self, gatewayId, userName, applicationId, limit, offset):
+    """
+    Search Experiments by application id with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param applicationId
+          Application id to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
      - applicationId
+     - limit
+     - offset
     """
     pass
 
@@ -228,24 +414,95 @@ class Iface:
     """
     Search Experiments by experiment status
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param experimentState
+          Experiement state to be matched
+    @deprecated
+          Instead use searchExperimentsByStatusWithPagination
+
+    Parameters:
+     - gatewayId
+     - userName
+     - experimentState
+    """
+    pass
+
+  def searchExperimentsByStatusWithPagination(self, gatewayId, userName, experimentState, limit, offset):
+    """
+    Search Experiments by experiment status with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param experimentState
+          Experiement state to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
      - experimentState
+     - limit
+     - offset
     """
     pass
 
   def searchExperimentsByCreationTime(self, gatewayId, userName, fromTime, toTime):
     """
-    Search Experiments by experiment status
+    Search Experiments by experiment creation time
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param fromTime
+          Start time of the experiments creation time
+    @param toTime
+          End time of the  experiement creation time
+    @deprecated
+          Instead use searchExperimentsByCreationTimeWithPagination
+
+    Parameters:
+     - gatewayId
+     - userName
+     - fromTime
+     - toTime
+    """
+    pass
+
+  def searchExperimentsByCreationTimeWithPagination(self, gatewayId, userName, fromTime, toTime, limit, offset):
+    """
+    Search Experiments by experiment creation time with pagination. Results will be sorted
+    based on creation time DESC
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param fromTime
+          Start time of the experiments creation time
+    @param toTime
+          End time of the  experiement creation time
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
      - fromTime
      - toTime
+     - limit
+     - offset
     """
     pass
 
@@ -253,9 +510,32 @@ class Iface:
     """
     Get all Experiments within a Project
 
+    @param projectId
+          Identifier of the project
+    @deprecated
+          Instead use  getAllExperimentsInProjectWithPagination
+
+    Parameters:
+     - projectId
+    """
+    pass
+
+  def getAllExperimentsInProjectWithPagination(self, projectId, limit, offset):
+    """
+    Get all Experiments within project with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param projectId
+          Identifier of the project
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - projectId
+     - limit
+     - offset
     """
     pass
 
@@ -263,10 +543,38 @@ class Iface:
     """
     Get all Experiments by user
 
+    @param gatewayId
+          Identifier of the requesting gateway
+    @param userName
+          Username of the requested user
+    @deprecated
+          Instead use getAllUserExperimentsWithPagination
+
+    Parameters:
+     - gatewayId
+     - userName
+    """
+    pass
+
+  def getAllUserExperimentsWithPagination(self, gatewayId, userName, limit, offset):
+    """
+    Get all Experiments by user pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requesting gateway
+    @param userName
+          Username of the requested user
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
+     - limit
+     - offset
     """
     pass
 
@@ -2358,7 +2666,7 @@ class Client(Iface):
       *
       * @param userName
       *    The Project Object described in the workspaceModel
-      *
+      * @deprecated Instead use getAllUserProjectsWithPagination
     *
 
     Parameters:
@@ -2397,37 +2705,49 @@ class Client(Iface):
       raise result.ase
     raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllUserProjects failed: unknown result");
 
-  def searchProjectsByProjectName(self, gatewayId, userName, projectName):
+  def getAllUserProjectsWithPagination(self, gatewayId, userName, limit, offset):
     """
-    Get all Project for user by project name
-
+      * Get all Project by user with pagination. Results will be ordered based
+      * on creation time DESC
+      *
+      * @param gatewayId
+      *    The identifier for the requested gateway.
+      * @param userName
+      *    The identifier of the user
+      * @param limit
+      *    The amount results to be fetched
+      * @param offset
+      *    The starting point of the results to be fetched
+    *
 
     Parameters:
      - gatewayId
      - userName
-     - projectName
+     - limit
+     - offset
     """
-    self.send_searchProjectsByProjectName(gatewayId, userName, projectName)
-    return self.recv_searchProjectsByProjectName()
+    self.send_getAllUserProjectsWithPagination(gatewayId, userName, limit, offset)
+    return self.recv_getAllUserProjectsWithPagination()
 
-  def send_searchProjectsByProjectName(self, gatewayId, userName, projectName):
-    self._oprot.writeMessageBegin('searchProjectsByProjectName', TMessageType.CALL, self._seqid)
-    args = searchProjectsByProjectName_args()
+  def send_getAllUserProjectsWithPagination(self, gatewayId, userName, limit, offset):
+    self._oprot.writeMessageBegin('getAllUserProjectsWithPagination', TMessageType.CALL, self._seqid)
+    args = getAllUserProjectsWithPagination_args()
     args.gatewayId = gatewayId
     args.userName = userName
-    args.projectName = projectName
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_searchProjectsByProjectName(self):
+  def recv_getAllUserProjectsWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = searchProjectsByProjectName_result()
+    result = getAllUserProjectsWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2438,39 +2758,46 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchProjectsByProjectName failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllUserProjectsWithPagination failed: unknown result");
 
-  def searchProjectsByProjectDesc(self, gatewayId, userName, description):
+  def searchProjectsByProjectName(self, gatewayId, userName, projectName):
     """
-    Get all Project for user by project description
+    Get all Project for user by project name
 
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param projectName
+       The name of the project on which the results to be fetched
+    @deprecated Instead use searchProjectsByProjectNameWithPagination
 
     Parameters:
      - gatewayId
      - userName
-     - description
+     - projectName
     """
-    self.send_searchProjectsByProjectDesc(gatewayId, userName, description)
-    return self.recv_searchProjectsByProjectDesc()
+    self.send_searchProjectsByProjectName(gatewayId, userName, projectName)
+    return self.recv_searchProjectsByProjectName()
 
-  def send_searchProjectsByProjectDesc(self, gatewayId, userName, description):
-    self._oprot.writeMessageBegin('searchProjectsByProjectDesc', TMessageType.CALL, self._seqid)
-    args = searchProjectsByProjectDesc_args()
+  def send_searchProjectsByProjectName(self, gatewayId, userName, projectName):
+    self._oprot.writeMessageBegin('searchProjectsByProjectName', TMessageType.CALL, self._seqid)
+    args = searchProjectsByProjectName_args()
     args.gatewayId = gatewayId
     args.userName = userName
-    args.description = description
+    args.projectName = projectName
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_searchProjectsByProjectDesc(self):
+  def recv_searchProjectsByProjectName(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = searchProjectsByProjectDesc_result()
+    result = searchProjectsByProjectName_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2481,39 +2808,54 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchProjectsByProjectDesc failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchProjectsByProjectName failed: unknown result");
 
-  def searchExperimentsByName(self, gatewayId, userName, expName):
+  def searchProjectsByProjectNameWithPagination(self, gatewayId, userName, projectName, limit, offset):
     """
-    Search Experiments by experiment name
+    Get all Project for user by project name with pagination.Results will be ordered based
+    on creation time DESC
 
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param projectName
+       The name of the project on which the results to be fetched
+    @param limit
+       The amount results to be fetched
+    @param offset
+       The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
-     - expName
+     - projectName
+     - limit
+     - offset
     """
-    self.send_searchExperimentsByName(gatewayId, userName, expName)
-    return self.recv_searchExperimentsByName()
+    self.send_searchProjectsByProjectNameWithPagination(gatewayId, userName, projectName, limit, offset)
+    return self.recv_searchProjectsByProjectNameWithPagination()
 
-  def send_searchExperimentsByName(self, gatewayId, userName, expName):
-    self._oprot.writeMessageBegin('searchExperimentsByName', TMessageType.CALL, self._seqid)
-    args = searchExperimentsByName_args()
+  def send_searchProjectsByProjectNameWithPagination(self, gatewayId, userName, projectName, limit, offset):
+    self._oprot.writeMessageBegin('searchProjectsByProjectNameWithPagination', TMessageType.CALL, self._seqid)
+    args = searchProjectsByProjectNameWithPagination_args()
     args.gatewayId = gatewayId
     args.userName = userName
-    args.expName = expName
+    args.projectName = projectName
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_searchExperimentsByName(self):
+  def recv_searchProjectsByProjectNameWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = searchExperimentsByName_result()
+    result = searchProjectsByProjectNameWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2524,24 +2866,30 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByName failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchProjectsByProjectNameWithPagination failed: unknown result");
 
-  def searchExperimentsByDesc(self, gatewayId, userName, description):
+  def searchProjectsByProjectDesc(self, gatewayId, userName, description):
     """
-    Search Experiments by experiment name
-
+    Get all Project for user by project description
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param description
+       The description to be matched
+    @deprecated Instead use searchProjectsByProjectDescWithPagination
 
     Parameters:
      - gatewayId
      - userName
      - description
     """
-    self.send_searchExperimentsByDesc(gatewayId, userName, description)
-    return self.recv_searchExperimentsByDesc()
+    self.send_searchProjectsByProjectDesc(gatewayId, userName, description)
+    return self.recv_searchProjectsByProjectDesc()
 
-  def send_searchExperimentsByDesc(self, gatewayId, userName, description):
-    self._oprot.writeMessageBegin('searchExperimentsByDesc', TMessageType.CALL, self._seqid)
-    args = searchExperimentsByDesc_args()
+  def send_searchProjectsByProjectDesc(self, gatewayId, userName, description):
+    self._oprot.writeMessageBegin('searchProjectsByProjectDesc', TMessageType.CALL, self._seqid)
+    args = searchProjectsByProjectDesc_args()
     args.gatewayId = gatewayId
     args.userName = userName
     args.description = description
@@ -2549,14 +2897,14 @@ class Client(Iface):
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_searchExperimentsByDesc(self):
+  def recv_searchProjectsByProjectDesc(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = searchExperimentsByDesc_result()
+    result = searchProjectsByProjectDesc_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2567,39 +2915,54 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByDesc failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchProjectsByProjectDesc failed: unknown result");
 
-  def searchExperimentsByApplication(self, gatewayId, userName, applicationId):
+  def searchProjectsByProjectDescWithPagination(self, gatewayId, userName, description, limit, offset):
     """
-    Search Experiments by application id
+    Search and get all Projects for user by project description with pagination. Results
+    will be ordered based on creation time DESC
 
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param description
+       The description to be matched
+    @param limit
+       The amount results to be fetched
+    @param offset
+       The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
-     - applicationId
+     - description
+     - limit
+     - offset
     """
-    self.send_searchExperimentsByApplication(gatewayId, userName, applicationId)
-    return self.recv_searchExperimentsByApplication()
+    self.send_searchProjectsByProjectDescWithPagination(gatewayId, userName, description, limit, offset)
+    return self.recv_searchProjectsByProjectDescWithPagination()
 
-  def send_searchExperimentsByApplication(self, gatewayId, userName, applicationId):
-    self._oprot.writeMessageBegin('searchExperimentsByApplication', TMessageType.CALL, self._seqid)
-    args = searchExperimentsByApplication_args()
+  def send_searchProjectsByProjectDescWithPagination(self, gatewayId, userName, description, limit, offset):
+    self._oprot.writeMessageBegin('searchProjectsByProjectDescWithPagination', TMessageType.CALL, self._seqid)
+    args = searchProjectsByProjectDescWithPagination_args()
     args.gatewayId = gatewayId
     args.userName = userName
-    args.applicationId = applicationId
+    args.description = description
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_searchExperimentsByApplication(self):
+  def recv_searchProjectsByProjectDescWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = searchExperimentsByApplication_result()
+    result = searchProjectsByProjectDescWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2610,39 +2973,48 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByApplication failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchProjectsByProjectDescWithPagination failed: unknown result");
 
-  def searchExperimentsByStatus(self, gatewayId, userName, experimentState):
+  def searchExperimentsByName(self, gatewayId, userName, expName):
     """
-    Search Experiments by experiment status
+    Search Experiments by experiment name
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param useNname
+          Username of the requested user
+    @param expName
+          Experiment name to be matched
+    @deprecated
+          Instead use searchExperimentsByNameWithPagination
 
 
     Parameters:
      - gatewayId
      - userName
-     - experimentState
+     - expName
     """
-    self.send_searchExperimentsByStatus(gatewayId, userName, experimentState)
-    return self.recv_searchExperimentsByStatus()
+    self.send_searchExperimentsByName(gatewayId, userName, expName)
+    return self.recv_searchExperimentsByName()
 
-  def send_searchExperimentsByStatus(self, gatewayId, userName, experimentState):
-    self._oprot.writeMessageBegin('searchExperimentsByStatus', TMessageType.CALL, self._seqid)
-    args = searchExperimentsByStatus_args()
-    args.gatewayId = gatewayId
+  def send_searchExperimentsByName(self, gatewayId, userName, expName):
+    self._oprot.writeMessageBegin('searchExperimentsByName', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByName_args()
+    args.gatewayId = gatewayId
     args.userName = userName
-    args.experimentState = experimentState
+    args.expName = expName
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_searchExperimentsByStatus(self):
+  def recv_searchExperimentsByName(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = searchExperimentsByStatus_result()
+    result = searchExperimentsByName_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2653,41 +3025,54 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByStatus failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByName failed: unknown result");
 
-  def searchExperimentsByCreationTime(self, gatewayId, userName, fromTime, toTime):
+  def searchExperimentsByNameWithPagination(self, gatewayId, userName, expName, limit, offset):
     """
-    Search Experiments by experiment status
+    Search Experiments by experiment name with pagination. Results will be sorted
+    based on creation time DESC
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param expName
+          Experiment name to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
-     - fromTime
-     - toTime
+     - expName
+     - limit
+     - offset
     """
-    self.send_searchExperimentsByCreationTime(gatewayId, userName, fromTime, toTime)
-    return self.recv_searchExperimentsByCreationTime()
+    self.send_searchExperimentsByNameWithPagination(gatewayId, userName, expName, limit, offset)
+    return self.recv_searchExperimentsByNameWithPagination()
 
-  def send_searchExperimentsByCreationTime(self, gatewayId, userName, fromTime, toTime):
-    self._oprot.writeMessageBegin('searchExperimentsByCreationTime', TMessageType.CALL, self._seqid)
-    args = searchExperimentsByCreationTime_args()
+  def send_searchExperimentsByNameWithPagination(self, gatewayId, userName, expName, limit, offset):
+    self._oprot.writeMessageBegin('searchExperimentsByNameWithPagination', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByNameWithPagination_args()
     args.gatewayId = gatewayId
     args.userName = userName
-    args.fromTime = fromTime
-    args.toTime = toTime
+    args.expName = expName
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_searchExperimentsByCreationTime(self):
+  def recv_searchExperimentsByNameWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = searchExperimentsByCreationTime_result()
+    result = searchExperimentsByNameWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2698,35 +3083,47 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByCreationTime failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByNameWithPagination failed: unknown result");
 
-  def getAllExperimentsInProject(self, projectId):
+  def searchExperimentsByDesc(self, gatewayId, userName, description):
     """
-    Get all Experiments within a Project
+    Search Experiments by experiment name
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param description
+          Experiment description to be matched
+    @deprecated
+          Instead use searchExperimentsByDescWithPagination
 
     Parameters:
-     - projectId
+     - gatewayId
+     - userName
+     - description
     """
-    self.send_getAllExperimentsInProject(projectId)
-    return self.recv_getAllExperimentsInProject()
+    self.send_searchExperimentsByDesc(gatewayId, userName, description)
+    return self.recv_searchExperimentsByDesc()
 
-  def send_getAllExperimentsInProject(self, projectId):
-    self._oprot.writeMessageBegin('getAllExperimentsInProject', TMessageType.CALL, self._seqid)
-    args = getAllExperimentsInProject_args()
-    args.projectId = projectId
+  def send_searchExperimentsByDesc(self, gatewayId, userName, description):
+    self._oprot.writeMessageBegin('searchExperimentsByDesc', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByDesc_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.description = description
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_getAllExperimentsInProject(self):
+  def recv_searchExperimentsByDesc(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = getAllExperimentsInProject_result()
+    result = searchExperimentsByDesc_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2737,39 +3134,54 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    if result.pnfe is not None:
-      raise result.pnfe
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllExperimentsInProject failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByDesc failed: unknown result");
 
-  def getAllUserExperiments(self, gatewayId, userName):
+  def searchExperimentsByDescWithPagination(self, gatewayId, userName, description, limit, offset):
     """
-    Get all Experiments by user
+    Search Experiments by experiment name with pagination. Results will be sorted
+    based on creation time DESC
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param description
+          Experiment description to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
      - gatewayId
      - userName
+     - description
+     - limit
+     - offset
     """
-    self.send_getAllUserExperiments(gatewayId, userName)
-    return self.recv_getAllUserExperiments()
+    self.send_searchExperimentsByDescWithPagination(gatewayId, userName, description, limit, offset)
+    return self.recv_searchExperimentsByDescWithPagination()
 
-  def send_getAllUserExperiments(self, gatewayId, userName):
-    self._oprot.writeMessageBegin('getAllUserExperiments', TMessageType.CALL, self._seqid)
-    args = getAllUserExperiments_args()
+  def send_searchExperimentsByDescWithPagination(self, gatewayId, userName, description, limit, offset):
+    self._oprot.writeMessageBegin('searchExperimentsByDescWithPagination', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByDescWithPagination_args()
     args.gatewayId = gatewayId
     args.userName = userName
+    args.description = description
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_getAllUserExperiments(self):
+  def recv_searchExperimentsByDescWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = getAllUserExperiments_result()
+    result = searchExperimentsByDescWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2780,68 +3192,47 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllUserExperiments failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByDescWithPagination failed: unknown result");
 
-  def createExperiment(self, gatewayId, experiment):
+  def searchExperimentsByApplication(self, gatewayId, userName, applicationId):
     """
-    Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
-      but inferred from the authentication header. This experiment is just a persistent place holder. The client
-      has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
-      registering the experiment in a persistent store.
-
-    @param basicExperimentMetadata
-       The create experiment will require the basic experiment metadata like the name and description, intended user,
-         the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
-         the ExperimentMetadata is a required field.
-
-    @return
-      The server-side generated airavata experiment globally unique identifier.
-
-    @throws org.apache.airavata.model.error.InvalidRequestException
-       For any incorrect forming of the request itself.
-
-    @throws org.apache.airavata.model.error.AiravataClientException
-       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-
-         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
-            step, then Airavata Registry will not have a provenance area setup. The client has to follow
-            gateway registration steps and retry this request.
-
-         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
-            For now this is a place holder.
-
-         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
-            is implemented, the authorization will be more substantial.
-
-    @throws org.apache.airavata.model.error.AiravataSystemException
-       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
-          rather an Airavata Administrator will be notified to take corrective action.
+    Search Experiments by application id
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param applicationId
+          Application id to be matched
+    @deprecated
+          Instead use searchExperimentsByApplicationWithPagination
 
     Parameters:
      - gatewayId
-     - experiment
+     - userName
+     - applicationId
     """
-    self.send_createExperiment(gatewayId, experiment)
-    return self.recv_createExperiment()
+    self.send_searchExperimentsByApplication(gatewayId, userName, applicationId)
+    return self.recv_searchExperimentsByApplication()
 
-  def send_createExperiment(self, gatewayId, experiment):
-    self._oprot.writeMessageBegin('createExperiment', TMessageType.CALL, self._seqid)
-    args = createExperiment_args()
+  def send_searchExperimentsByApplication(self, gatewayId, userName, applicationId):
+    self._oprot.writeMessageBegin('searchExperimentsByApplication', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByApplication_args()
     args.gatewayId = gatewayId
-    args.experiment = experiment
+    args.userName = userName
+    args.applicationId = applicationId
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_createExperiment(self):
+  def recv_searchExperimentsByApplication(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = createExperiment_result()
+    result = searchExperimentsByApplication_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -2852,585 +3243,571 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "createExperiment failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByApplication failed: unknown result");
 
-  def getExperiment(self, airavataExperimentId):
+  def searchExperimentsByApplicationWithPagination(self, gatewayId, userName, applicationId, limit, offset):
     """
-    Fetch previously created experiment metadata.
-
-    @param airavataExperimentId
-       The identifier for the requested experiment. This is returned during the create experiment step.
-
-    @return experimentMetada
-      This method will return the previously stored experiment metadata.
-
-    @throws org.apache.airavata.model.error.InvalidRequestException
-       For any incorrect forming of the request itself.
-
-    @throws org.apache.airavata.model.error.ExperimentNotFoundException
-       If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
-
-    @throws org.apache.airavata.model.error.AiravataClientException
-       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-         
-         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
-            step, then Airavata Registry will not have a provenance area setup. The client has to follow
-            gateway registration steps and retry this request.
-
-         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
-            For now this is a place holder.
-
-         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
-            is implemented, the authorization will be more substantial.
-
-    @throws org.apache.airavata.model.error.AiravataSystemException
-       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
-          rather an Airavata Administrator will be notified to take corrective action.
+    Search Experiments by application id with pagination. Results will be sorted
+    based on creation time DESC
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param applicationId
+          Application id to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
-     - airavataExperimentId
+     - gatewayId
+     - userName
+     - applicationId
+     - limit
+     - offset
     """
-    self.send_getExperiment(airavataExperimentId)
-    return self.recv_getExperiment()
+    self.send_searchExperimentsByApplicationWithPagination(gatewayId, userName, applicationId, limit, offset)
+    return self.recv_searchExperimentsByApplicationWithPagination()
 
-  def send_getExperiment(self, airavataExperimentId):
-    self._oprot.writeMessageBegin('getExperiment', TMessageType.CALL, self._seqid)
-    args = getExperiment_args()
-    args.airavataExperimentId = airavataExperimentId
+  def send_searchExperimentsByApplicationWithPagination(self, gatewayId, userName, applicationId, limit, offset):
+    self._oprot.writeMessageBegin('searchExperimentsByApplicationWithPagination', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByApplicationWithPagination_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.applicationId = applicationId
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_getExperiment(self):
+  def recv_searchExperimentsByApplicationWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = getExperiment_result()
+    result = searchExperimentsByApplicationWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
       return result.success
     if result.ire is not None:
       raise result.ire
-    if result.enf is not None:
-      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getExperiment failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByApplicationWithPagination failed: unknown result");
 
-  def updateExperiment(self, airavataExperimentId, experiment):
+  def searchExperimentsByStatus(self, gatewayId, userName, experimentState):
     """
-    Configure a previously created experiment with required inputs, scheduling and other quality of service
-      parameters. This method only updates the experiment object within the registry. The experiment has to be launched
-      to make it actionable by the server.
-
-    @param airavataExperimentId
-       The identifier for the requested experiment. This is returned during the create experiment step.
-
-    @param experimentConfigurationData
-       The configuration information of the experiment with application input parameters, computational resource scheduling
-         information, special input output handling and additional quality of service parameters.
-
-    @return
-      This method call does not have a return value.
-
-    @throws org.apache.airavata.model.error.InvalidRequestException
-       For any incorrect forming of the request itself.
-
-    @throws org.apache.airavata.model.error.ExperimentNotFoundException
-       If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
-
-    @throws org.apache.airavata.model.error.AiravataClientException
-       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-         
-         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
-            step, then Airavata Registry will not have a provenance area setup. The client has to follow
-            gateway registration steps and retry this request.
-
-         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
-            For now this is a place holder.
-
-         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
-            is implemented, the authorization will be more substantial.
-
-    @throws org.apache.airavata.model.error.AiravataSystemException
-       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
-          rather an Airavata Administrator will be notified to take corrective action.
+    Search Experiments by experiment status
 
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param experimentState
+          Experiement state to be matched
+    @deprecated
+          Instead use searchExperimentsByStatusWithPagination
 
     Parameters:
-     - airavataExperimentId
-     - experiment
+     - gatewayId
+     - userName
+     - experimentState
     """
-    self.send_updateExperiment(airavataExperimentId, experiment)
-    self.recv_updateExperiment()
+    self.send_searchExperimentsByStatus(gatewayId, userName, experimentState)
+    return self.recv_searchExperimentsByStatus()
 
-  def send_updateExperiment(self, airavataExperimentId, experiment):
-    self._oprot.writeMessageBegin('updateExperiment', TMessageType.CALL, self._seqid)
-    args = updateExperiment_args()
-    args.airavataExperimentId = airavataExperimentId
-    args.experiment = experiment
+  def send_searchExperimentsByStatus(self, gatewayId, userName, experimentState):
+    self._oprot.writeMessageBegin('searchExperimentsByStatus', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByStatus_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.experimentState = experimentState
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_updateExperiment(self):
+  def recv_searchExperimentsByStatus(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = updateExperiment_result()
+    result = searchExperimentsByStatus_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
     if result.ire is not None:
       raise result.ire
-    if result.enf is not None:
-      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    return
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByStatus failed: unknown result");
 
-  def updateExperimentConfiguration(self, airavataExperimentId, userConfiguration):
+  def searchExperimentsByStatusWithPagination(self, gatewayId, userName, experimentState, limit, offset):
     """
+    Search Experiments by experiment status with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param experimentState
+          Experiement state to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
+
     Parameters:
-     - airavataExperimentId
-     - userConfiguration
+     - gatewayId
+     - userName
+     - experimentState
+     - limit
+     - offset
     """
-    self.send_updateExperimentConfiguration(airavataExperimentId, userConfiguration)
-    self.recv_updateExperimentConfiguration()
+    self.send_searchExperimentsByStatusWithPagination(gatewayId, userName, experimentState, limit, offset)
+    return self.recv_searchExperimentsByStatusWithPagination()
 
-  def send_updateExperimentConfiguration(self, airavataExperimentId, userConfiguration):
-    self._oprot.writeMessageBegin('updateExperimentConfiguration', TMessageType.CALL, self._seqid)
-    args = updateExperimentConfiguration_args()
-    args.airavataExperimentId = airavataExperimentId
-    args.userConfiguration = userConfiguration
+  def send_searchExperimentsByStatusWithPagination(self, gatewayId, userName, experimentState, limit, offset):
+    self._oprot.writeMessageBegin('searchExperimentsByStatusWithPagination', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByStatusWithPagination_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.experimentState = experimentState
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_updateExperimentConfiguration(self):
+  def recv_searchExperimentsByStatusWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = updateExperimentConfiguration_result()
+    result = searchExperimentsByStatusWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
-    return
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByStatusWithPagination failed: unknown result");
 
-  def updateResourceScheduleing(self, airavataExperimentId, resourceScheduling):
+  def searchExperimentsByCreationTime(self, gatewayId, userName, fromTime, toTime):
     """
+    Search Experiments by experiment creation time
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param fromTime
+          Start time of the experiments creation time
+    @param toTime
+          End time of the  experiement creation time
+    @deprecated
+          Instead use searchExperimentsByCreationTimeWithPagination
+
     Parameters:
-     - airavataExperimentId
-     - resourceScheduling
+     - gatewayId
+     - userName
+     - fromTime
+     - toTime
     """
-    self.send_updateResourceScheduleing(airavataExperimentId, resourceScheduling)
-    self.recv_updateResourceScheduleing()
+    self.send_searchExperimentsByCreationTime(gatewayId, userName, fromTime, toTime)
+    return self.recv_searchExperimentsByCreationTime()
 
-  def send_updateResourceScheduleing(self, airavataExperimentId, resourceScheduling):
-    self._oprot.writeMessageBegin('updateResourceScheduleing', TMessageType.CALL, self._seqid)
-    args = updateResourceScheduleing_args()
-    args.airavataExperimentId = airavataExperimentId
-    args.resourceScheduling = resourceScheduling
+  def send_searchExperimentsByCreationTime(self, gatewayId, userName, fromTime, toTime):
+    self._oprot.writeMessageBegin('searchExperimentsByCreationTime', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByCreationTime_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.fromTime = fromTime
+    args.toTime = toTime
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_updateResourceScheduleing(self):
+  def recv_searchExperimentsByCreationTime(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = updateResourceScheduleing_result()
+    result = searchExperimentsByCreationTime_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
-    return
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByCreationTime failed: unknown result");
 
-  def validateExperiment(self, airavataExperimentId):
+  def searchExperimentsByCreationTimeWithPagination(self, gatewayId, userName, fromTime, toTime, limit, offset):
     """
-     *
-     * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
-     *
-     * @param experimentID
-     * @return sucess/failure
-     *
-    *
+    Search Experiments by experiment creation time with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param fromTime
+          Start time of the experiments creation time
+    @param toTime
+          End time of the  experiement creation time
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
 
     Parameters:
-     - airavataExperimentId
+     - gatewayId
+     - userName
+     - fromTime
+     - toTime
+     - limit
+     - offset
     """
-    self.send_validateExperiment(airavataExperimentId)
-    return self.recv_validateExperiment()
+    self.send_searchExperimentsByCreationTimeWithPagination(gatewayId, userName, fromTime, toTime, limit, offset)
+    return self.recv_searchExperimentsByCreationTimeWithPagination()
 
-  def send_validateExperiment(self, airavataExperimentId):
-    self._oprot.writeMessageBegin('validateExperiment', TMessageType.CALL, self._seqid)
-    args = validateExperiment_args()
-    args.airavataExperimentId = airavataExperimentId
+  def send_searchExperimentsByCreationTimeWithPagination(self, gatewayId, userName, fromTime, toTime, limit, offset):
+    self._oprot.writeMessageBegin('searchExperimentsByCreationTimeWithPagination', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByCreationTimeWithPagination_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.fromTime = fromTime
+    args.toTime = toTime
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_validateExperiment(self):
+  def recv_searchExperimentsByCreationTimeWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = validateExperiment_result()
+    result = searchExperimentsByCreationTimeWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
       return result.success
     if result.ire is not None:
       raise result.ire
-    if result.enf is not None:
-      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "validateExperiment failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByCreationTimeWithPagination failed: unknown result");
 
-  def launchExperiment(self, airavataExperimentId, airavataCredStoreToken):
+  def getAllExperimentsInProject(self, projectId):
     """
-    Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
-      notifications and intermediate and output data will be subsequently available for this experiment.
-
-    @param airavataExperimentId
-       The identifier for the requested experiment. This is returned during the create experiment step.
-
-    @param airavataCredStoreToken:
-      A requirement to execute experiments within Airavata is to first register the targeted remote computational account
-        credentials with Airavata Credential Store. The administrative API (related to credential store) will return a
-        generated token associated with the registered credentials. The client has to security posses this token id and is
-        required to pass it to Airavata Server for all execution requests.
-      Note: At this point only the credential store token is required so the string is directly passed here. In future if
-        if more security credentials are enables, then the structure ExecutionSecurityParameters should be used.
-      Note: This parameter is not persisted within Airavata Registry for security reasons.
-
-    @return
-      This method call does not have a return value.
-
-    @throws org.apache.airavata.model.error.InvalidRequestException
-       For any incorrect forming of the request itself.
-
-    @throws org.apache.airavata.model.error.ExperimentNotFoundException
-       If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
-
-    @throws org.apache.airavata.model.error.AiravataClientException
-       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-         
-         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
-            step, then Airavata Registry will not have a provenance area setup. The client has to follow
-            gateway registration steps and retry this request.
-
-         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
-            For now this is a place holder.
-
-         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
-            is implemented, the authorization will be more substantial.
-
-    @throws org.apache.airavata.model.error.AiravataSystemException
-       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
-          rather an Airavata Administrator will be notified to take corrective action.
+    Get all Experiments within a Project
 
+    @param projectId
+          Identifier of the project
+    @deprecated
+          Instead use  getAllExperimentsInProjectWithPagination
 
     Parameters:
-     - airavataExperimentId
-     - airavataCredStoreToken
+     - projectId
     """
-    self.send_launchExperiment(airavataExperimentId, airavataCredStoreToken)
-    self.recv_launchExperiment()
+    self.send_getAllExperimentsInProject(projectId)
+    return self.recv_getAllExperimentsInProject()
 
-  def send_launchExperiment(self, airavataExperimentId, airavataCredStoreToken):
-    self._oprot.writeMessageBegin('launchExperiment', TMessageType.CALL, self._seqid)
-    args = launchExperiment_args()
-    args.airavataExperimentId = airavataExperimentId
-    args.airavataCredStoreToken = airavataCredStoreToken
+  def send_getAllExperimentsInProject(self, projectId):
+    self._oprot.writeMessageBegin('getAllExperimentsInProject', TMessageType.CALL, self._seqid)
+    args = getAllExperimentsInProject_args()
+    args.projectId = projectId
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_launchExperiment(self):
+  def recv_getAllExperimentsInProject(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = launchExperiment_result()
+    result = getAllExperimentsInProject_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
     if result.ire is not None:
       raise result.ire
-    if result.enf is not None:
-      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    if result.lve is not None:
-      raise result.lve
-    return
+    if result.pnfe is not None:
+      raise result.pnfe
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllExperimentsInProject failed: unknown result");
 
-  def getExperimentStatus(self, airavataExperimentId):
+  def getAllExperimentsInProjectWithPagination(self, projectId, limit, offset):
     """
+    Get all Experiments within project with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param projectId
+          Identifier of the project
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
+
     Parameters:
-     - airavataExperimentId
+     - projectId
+     - limit
+     - offset
     """
-    self.send_getExperimentStatus(airavataExperimentId)
-    return self.recv_getExperimentStatus()
+    self.send_getAllExperimentsInProjectWithPagination(projectId, limit, offset)
+    return self.recv_getAllExperimentsInProjectWithPagination()
 
-  def send_getExperimentStatus(self, airavataExperimentId):
-    self._oprot.writeMessageBegin('getExperimentStatus', TMessageType.CALL, self._seqid)
-    args = getExperimentStatus_args()
-    args.airavataExperimentId = airavataExperimentId
+  def send_getAllExperimentsInProjectWithPagination(self, projectId, limit, offset):
+    self._oprot.writeMessageBegin('getAllExperimentsInProjectWithPagination', TMessageType.CALL, self._seqid)
+    args = getAllExperimentsInProjectWithPagination_args()
+    args.projectId = projectId
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_getExperimentStatus(self):
+  def recv_getAllExperimentsInProjectWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = getExperimentStatus_result()
+    result = getAllExperimentsInProjectWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
       return result.success
     if result.ire is not None:
       raise result.ire
-    if result.enf is not None:
-      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getExperimentStatus failed: unknown result");
+    if result.pnfe is not None:
+      raise result.pnfe
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllExperimentsInProjectWithPagination failed: unknown result");
 
-  def getExperimentOutputs(self, airavataExperimentId):
+  def getAllUserExperiments(self, gatewayId, userName):
     """
+    Get all Experiments by user
+
+    @param gatewayId
+          Identifier of the requesting gateway
+    @param userName
+          Username of the requested user
+    @deprecated
+          Instead use getAllUserExperimentsWithPagination
+
     Parameters:
-     - airavataExperimentId
+     - gatewayId
+     - userName
     """
-    self.send_getExperimentOutputs(airavataExperimentId)
-    return self.recv_getExperimentOutputs()
+    self.send_getAllUserExperiments(gatewayId, userName)
+    return self.recv_getAllUserExperiments()
 
-  def send_getExperimentOutputs(self, airavataExperimentId):
-    self._oprot.writeMessageBegin('getExperimentOutputs', TMessageType.CALL, self._seqid)
-    args = getExperimentOutputs_args()
-    args.airavataExperimentId = airavataExperimentId
+  def send_getAllUserExperiments(self, gatewayId, userName):
+    self._oprot.writeMessageBegin('getAllUserExperiments', TMessageType.CALL, self._seqid)
+    args = getAllUserExperiments_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_getExperimentOutputs(self):
+  def recv_getAllUserExperiments(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = getExperimentOutputs_result()
+    result = getAllUserExperiments_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
       return result.success
     if result.ire is not None:
       raise result.ire
-    if result.enf is not None:
-      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getExperimentOutputs failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllUserExperiments failed: unknown result");
 
-  def getIntermediateOutputs(self, airavataExperimentId):
+  def getAllUserExperimentsWithPagination(self, gatewayId, userName, limit, offset):
     """
+    Get all Experiments by user pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requesting gateway
+    @param userName
+          Username of the requested user
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
+
     Parameters:
-     - airavataExperimentId
+     - gatewayId
+     - userName
+     - limit
+     - offset
     """
-    self.send_getIntermediateOutputs(airavataExperimentId)
-    return self.recv_getIntermediateOutputs()
+    self.send_getAllUserExperimentsWithPagination(gatewayId, userName, limit, offset)
+    return self.recv_getAllUserExperimentsWithPagination()
 
-  def send_getIntermediateOutputs(self, airavataExperimentId):
-    self._oprot.writeMessageBegin('getIntermediateOutputs', TMessageType.CALL, self._seqid)
-    args = getIntermediateOutputs_args()
-    args.airavataExperimentId = airavataExperimentId
+  def send_getAllUserExperimentsWithPagination(self, gatewayId, userName, limit, offset):
+    self._oprot.writeMessageBegin('getAllUserExperimentsWithPagination', TMessageType.CALL, self._seqid)
+    args = getAllUserExperimentsWithPagination_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.limit = limit
+    args.offset = offset
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_getIntermediateOutputs(self):
+  def recv_getAllUserExperimentsWithPagination(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = getIntermediateOutputs_result()
+    result = getAllUserExperimentsWithPagination_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
       return result.success
     if result.ire is not None:
       raise result.ire
-    if result.enf is not None:
-      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getIntermediateOutputs failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllUserExperimentsWithPagination failed: unknown result");
 
-  def getJobStatuses(self, airavataExperimentId):
-    """
-    Parameters:
-     - airavataExperimentId
+  def createExperiment(self, gatewayId, experiment):
     """
-    self.send_getJobStatuses(airavataExperimentId)
-    return self.recv_getJobStatuses()
+    Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
+      but inferred from the authentication header. This experiment is just a persistent place holder. The client
+      has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
+      registering the experiment in a persistent store.
 
-  def send_getJobStatuses(self, airavataExperimentId):
-    self._oprot.writeMessageBegin('getJobStatuses', TMessageType.CALL, self._seqid)
-    args = getJobStatuses_args()
-    args.airavataExperimentId = airavataExperimentId
-    args.write(self._oprot)
-    self._oprot.writeMessageEnd()
-    self._oprot.trans.flush()
+    @param basicExperimentMetadata
+       The create experiment will require the basic experiment metadata like the name and description, intended user,
+         the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
+         the ExperimentMetadata is a required field.
 
-  def recv_getJobStatuses(self):
-    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
-    if mtype == TMessageType.EXCEPTION:
-      x = TApplicationException()
-      x.read(self._iprot)
-      self._iprot.readMessageEnd()
-      raise x
-    result = getJobStatuses_result()
-    result.read(self._iprot)
-    self._iprot.readMessageEnd()
-    if result.success is not None:
-      return result.success
-    if result.ire is not None:
-      raise result.ire
-    if result.enf is not None:
-      raise result.enf
-    if result.ace is not None:
-      raise result.ace
-    if result.ase is not None:
-      raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getJobStatuses failed: unknown result");
+    @return
+      The server-side generated airavata experiment globally unique identifier.
 
-  def getJobDetails(self, airavataExperimentId):
-    """
-    Parameters:
-     - airavataExperimentId
-    """
-    self.send_getJobDetails(airavataExperimentId)
-    return self.recv_getJobDetails()
+    @throws org.apache.airavata.model.error.InvalidRequestException
+       For any incorrect forming of the request itself.
 
-  def send_getJobDetails(self, airavataExperimentId):
-    self._oprot.writeMessageBegin('getJobDetails', TMessageType.CALL, self._seqid)
-    args = getJobDetails_args()
-    args.airavataExperimentId = airavataExperimentId
-    args.write(self._oprot)
-    self._oprot.writeMessageEnd()
-    self._oprot.trans.flush()
+    @throws org.apache.airavata.model.error.AiravataClientException
+       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+
+         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+            step, then Airavata Registry will not have a provenance area setup. The client has to follow
+            gateway registration steps and retry this request.
+
+         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+            For now this is a place holder.
+
+         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+            is implemented, the authorization will be more substantial.
+
+    @throws org.apache.airavata.model.error.AiravataSystemException
+       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          rather an Airavata Administrator will be notified to take corrective action.
 
-  def recv_getJobDetails(self):
-    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
-    if mtype == TMessageType.EXCEPTION:
-      x = TApplicationException()
-      x.read(self._iprot)
-      self._iprot.readMessageEnd()
-      raise x
-    result = getJobDetails_result()
-    result.read(self._iprot)
-    self._iprot.readMessageEnd()
-    if result.success is not None:
-      return result.success
-    if result.ire is not None:
-      raise result.ire
-    if result.enf is not None:
-      raise result.enf
-    if result.ace is not None:
-      raise result.ace
-    if result.ase is not None:
-      raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getJobDetails failed: unknown result");
 
-  def getDataTransferDetails(self, airavataExperimentId):
-    """
     Parameters:
-     - airavataExperimentId
+     - gatewayId
+     - experiment
     """
-    self.send_getDataTransferDetails(airavataExperimentId)
-    return self.recv_getDataTransferDetails()
+    self.send_createExperiment(gatewayId, experiment)
+    return self.recv_createExperiment()
 
-  def send_getDataTransferDetails(self, airavataExperimentId):
-    self._oprot.writeMessageBegin('getDataTransferDetails', TMessageType.CALL, self._seqid)
-    args = getDataTransferDetails_args()
-    args.airavataExperimentId = airavataExperimentId
+  def send_createExperiment(self, gatewayId, experiment):
+    self._oprot.writeMessageBegin('createExperiment', TMessageType.CALL, self._seqid)
+    args = createExperiment_args()
+    args.gatewayId = gatewayId
+    args.experiment = experiment
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_getDataTransferDetails(self):
+  def recv_createExperiment(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = getDataTransferDetails_result()
+    result = createExperiment_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
       return result.success
     if result.ire is not None:
       raise result.ire
-    if result.enf is not None:
-      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getDataTransferDetails failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "createExperiment failed: unknown result");
 
-  def cloneExperiment(self, existingExperimentID, newExperimentName):
+  def getExperiment(self, airavataExperimentId):
     """
-    Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
-      The client has to subsequently update this configuration if needed and launch the cloned experiment.
-
-    @param newExperimentName
-       experiment name that should be used in the cloned experiment
+    Fetch previously created experiment metadata.
 
-    @param updatedExperiment
-       Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
-         the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
-         should be shared public by default.
+    @param airavataExperimentId
+       The identifier for the requested experiment. This is returned during the create experiment step.
 
-    @return
-      The server-side generated airavata experiment globally unique identifier for the newly cloned experiment.
+    @return experimentMetada
+      This method will return the previously stored experiment metadata.
 
     @throws org.apache.airavata.model.error.InvalidRequestException
        For any incorrect forming of the request itself.
@@ -3457,29 +3834,27 @@ class Client(Iface):
 
 
     Parameters:
-     - existingExperimentID
-     - newExperimentName
+     - airavataExperimentId
     """
-    self.send_cloneExperiment(existingExperimentID, newExperimentName)
-    return self.recv_cloneExperiment()
+    self.send_getExperiment(airavataExperimentId)
+    return self.recv_getExperiment()
 
-  def send_cloneExperiment(self, existingExperimentID, newExperimentName):
-    self._oprot.writeMessageBegin('cloneExperiment', TMessageType.CALL, self._seqid)
-    args = cloneExperiment_args()
-    args.existingExperimentID = existingExperimentID
-    args.newExperimentName = newExperimentName
+  def send_getExperiment(self, airavataExperimentId):
+    self._oprot.writeMessageBegin('getExperiment', TMessageType.CALL, self._seqid)
+    args = getExperiment_args()
+    args.airavataExperimentId = airavataExperimentId
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_cloneExperiment(self):
+  def recv_getExperiment(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = cloneExperiment_result()
+    result = getExperiment_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
@@ -3492,15 +3867,21 @@ class Client(Iface):
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "cloneExperiment failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getExperiment failed: unknown result");
 
-  def terminateExperiment(self, airavataExperimentId, tokenId):
+  def updateExperiment(self, airavataExperimentId, experiment):
     """
-    Terminate a running experiment.
+    Configure a previously created experiment with required inputs, scheduling and other quality of service
+      parameters. This method only updates the experiment object within the registry. The experiment has to be launched
+      to make it actionable by the server.
 
     @param airavataExperimentId
        The identifier for the requested experiment. This is returned during the create experiment step.
 
+    @param experimentConfigurationData
+       The configuration information of the experiment with application input parameters, computational resource scheduling
+         information, special input output handling and additional quality of service parameters.
+
     @return
       This method call does not have a return value.
 
@@ -3530,28 +3911,28 @@ class Client(Iface):
 
     Parameters:
      - airavataExperimentId
-     - tokenId
+     - experiment
     """
-    self.send_terminateExperiment(airavataExperimentId, tokenId)
-    self.recv_terminateExperiment()
+    self.send_updateExperiment(airavataExperimentId, experiment)
+    self.recv_updateExperiment()
 
-  def send_terminateExperiment(self, airavataExperimentId, tokenId):
-    self._oprot.writeMessageBegin('terminateExperiment', TMessageType.CALL, self._seqid)
-    args = terminateExperiment_args()
+  def send_updateExperiment(self, airavataExperimentId, experiment):
+    self._oprot.writeMessageBegin('updateExperiment', TMessageType.CALL, self._seqid)
+    args = updateExperiment_args()
     args.airavataExperimentId = airavataExperimentId
-    args.tokenId = tokenId
+    args.experiment = experiment
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_terminateExperiment(self):
+  def recv_updateExperiment(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = terminateExperiment_result()
+    result = updateExperiment_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.ire is not None:
@@ -3564,538 +3945,605 @@ class Client(Iface):
       raise result.ase
     return
 
-  def registerApplicationModule(self, gatewayId, applicationModule):
+  def updateExperimentConfiguration(self, airavataExperimentId, userConfiguration):
     """
-    Register a Application Module.
-
-    @param applicationModule
-       Application Module Object created from the datamodel.
-
-    @return appModuleId
-      Returns a server-side generated airavata appModule globally unique identifier.
-
-
     Parameters:
-     - gatewayId
-     - applicationModule
+     - airavataExperimentId
+     - userConfiguration
     """
-    self.send_registerApplicationModule(gatewayId, applicationModule)
-    return self.recv_registerApplicationModule()
+    self.send_updateExperimentConfiguration(airavataExperimentId, userConfiguration)
+    self.recv_updateExperimentConfiguration()
 
-  def send_registerApplicationModule(self, gatewayId, applicationModule):
-    self._oprot.writeMessageBegin('registerApplicationModule', TMessageType.CALL, self._seqid)
-    args = registerApplicationModule_args()
-    args.gatewayId = gatewayId
-    args.applicationModule = applicationModule
+  def send_updateExperimentConfiguration(self, airavataExperimentId, userConfiguration):
+    self._oprot.writeMessageBegin('updateExperimentConfiguration', TMessageType.CALL, self._seqid)
+    args = updateExperimentConfiguration_args()
+    args.airavataExperimentId = airavataExperimentId
+    args.userConfiguration = userConfiguration
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_registerApplicationModule(self):
+  def recv_updateExperimentConfiguration(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = registerApplicationModule_result()
+    result = updateExperimentConfiguration_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
-    if result.success is not None:
-      return result.success
-    if result.ire is not None:
-      raise result.ire
-    if result.ace is not None:
-      raise result.ace
-    if result.ase is not None:
-      raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "registerApplicationModule failed: unknown result");
+    return
 
-  def getApplicationModule(self, appModuleId):
+  def updateResourceScheduleing(self, airavataExperimentId, resourceScheduling):
     """
-    Fetch a Application Module.
-
-    @param appModuleId
-      The identifier for the requested application module
-
-    @return applicationModule
-      Returns a application Module Object.
-
-
     Parameters:
-     - appModuleId
+     - airavataExperimentId
+     - resourceScheduling
     """
-    self.send_getApplicationModule(appModuleId)
-    return self.recv_getApplicationModule()
+    self.send_updateResourceScheduleing(airavataExperimentId, resourceScheduling)
+    self.recv_updateResourceScheduleing()
 
-  def send_getApplicationModule(self, appModuleId):
-    self._oprot.writeMessageBegin('getApplicationModule', TMessageType.CALL, self._seqid)
-    args = getApplicationModule_args()
-    args.appModuleId = appModuleId
+  def send_updateResourceScheduleing(self, airavataExperimentId, resourceScheduling):
+    self._oprot.writeMessageBegin('updateResourceScheduleing', TMessageType.CALL, self._seqid)
+    args = updateResourceScheduleing_args()
+    args.airavataExperimentId = airavataExperimentId
+    args.resourceScheduling = resourceScheduling
     args.write(self._oprot)
     self._oprot.writeMessageEnd()
     self._oprot.trans.flush()
 
-  def recv_getApplicationModule(self):
+  def recv_updateResourceScheduleing(self):
     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
     if mtype == TMessageType.EXCEPTION:
       x = TApplicationException()
       x.read(self._iprot)
       self._iprot.readMessageEnd()
       raise x
-    result = getApplicationModule_result()
+    result = updateResourceScheduleing_result()
+    result.read(self._iprot)
+    self._iprot.readMessageEnd()
+    return
+
+  def validateExperiment(self, airavataExperimentId):
+    """
+     *
+     * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
+     *
+     * @param experimentID
+     * @return sucess/failure
+     *
+    *
+
+    Parameters:
+     - airavataExperimentId
+    """
+    self.send_validateExperiment(airavataExperimentId)
+    return self.recv_validateExperiment()
+
+  def send_validateExperiment(self, airavataExperimentId):
+    self._oprot.writeMessageBegin('validateExperiment', TMessageType.CALL, self._seqid)
+    args = validateExperiment_args()
+    args.airavataExperimentId = airavataExperimentId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_validateExperiment(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = validateExperiment_result()
     result.read(self._iprot)
     self._iprot.readMessageEnd()
     if result.success is not None:
       return result.success
     if result.ire is not None:
       raise result.ire
+    if result.enf is not None:
+      raise result.enf
     if result.ace is not None:
       raise result.ace
     if result.ase is not None:
       raise result.ase
-    raise TApplicationException(TApplicationException.MISSING_RESULT, "getApplicationModule failed: unknown result");
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "validateExperiment failed: unknown result");
 
-  def updateApplicationModule(self, appModuleId, applicationModule):
+  def launchExperiment(self, airavataExperimentId, airavataCredStoreToken):
     """
-    Update a Application Module.
+    Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
+      notifications and intermediate and output data will be subsequently available for this experiment.
 
-    @param appModuleId
-      The identifier for the requested application module to be updated.
+    @param airavataExperimentId
+       The identifier for the requested experiment. This is returned during the create experiment step.
 
-    @param applicationModule
-       Application Module Object created from the datamodel.
+    @param airavataCredStoreToken:
+      A requirement to execute experiments within Airavata is to first register the targeted remote computational account
+    

<TRUNCATED>

[19/19] airavata git commit: Merge branch 'master' of https://github.com/apache/airavata

Posted by sm...@apache.org.
Merge branch 'master' of https://github.com/apache/airavata


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

Branch: refs/heads/master
Commit: 5cc8b43d0ab0cfa977c777f425174c3f1bcf9c95
Parents: 5d940d3 20bf020
Author: Supun Nakandala <su...@gmail.com>
Authored: Thu Apr 30 22:31:45 2015 +0530
Committer: Supun Nakandala <su...@gmail.com>
Committed: Thu Apr 30 22:31:45 2015 +0530

----------------------------------------------------------------------
 INSTALL | 6 +++---
 README  | 7 -------
 2 files changed, 3 insertions(+), 10 deletions(-)
----------------------------------------------------------------------



[15/19] airavata git commit: Removing use of duplicate database scripts in tests

Posted by sm...@apache.org.
Removing use of duplicate database scripts in tests


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

Branch: refs/heads/master
Commit: 6e94c35c0e9e01321aff2b0ce64eca74f3dc249a
Parents: 6bf56d3
Author: Supun Nakandala <su...@gmail.com>
Authored: Wed Apr 29 15:55:31 2015 +0530
Committer: Supun Nakandala <su...@gmail.com>
Committed: Wed Apr 29 15:55:31 2015 +0530

----------------------------------------------------------------------
 .../api/server/util/DatabaseCreator.java        |   6 +-
 .../src/main/resources/registry-derby.sql       | 391 ------------------
 .../src/main/resources/registry-mysql.sql       | 392 -------------------
 3 files changed, 4 insertions(+), 785 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/6e94c35c/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/DatabaseCreator.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/DatabaseCreator.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/DatabaseCreator.java
index 4bc3c72..0d857ba 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/DatabaseCreator.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/DatabaseCreator.java
@@ -265,9 +265,11 @@ public class DatabaseCreator {
                 logger.info("Script file not found at " + dbscriptName + ". Uses default database script file");
                 DatabaseType databaseType = DatabaseCreator.getDatabaseType(conn);
                 if(databaseType.equals(DatabaseType.derby)){
-                    is = DatabaseCreator.class.getClassLoader().getResourceAsStream("registry-derby.sql");
+                    is = Thread.currentThread().getContextClassLoader()
+                            .getResourceAsStream("registry-derby.sql");
                 }else if(databaseType.equals(DatabaseType.derby)){
-                    is = DatabaseCreator.class.getClassLoader().getResourceAsStream("registry-mysql.sql");
+                    is = Thread.currentThread().getContextClassLoader()
+                            .getResourceAsStream("registry-mysql.sql");
                 }
             }
             reader = new BufferedReader(new InputStreamReader(is));

http://git-wip-us.apache.org/repos/asf/airavata/blob/6e94c35c/airavata-api/airavata-api-server/src/main/resources/registry-derby.sql
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/resources/registry-derby.sql b/airavata-api/airavata-api-server/src/main/resources/registry-derby.sql
deleted file mode 100644
index 7ab3755..0000000
--- a/airavata-api/airavata-api-server/src/main/resources/registry-derby.sql
+++ /dev/null
@@ -1,391 +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.
- *
- */
-CREATE TABLE GATEWAY
-(
-        GATEWAY_ID VARCHAR (255),
-        GATEWAY_NAME VARCHAR(255),
-	      DOMAIN VARCHAR(255),
-	      EMAIL_ADDRESS VARCHAR(255),
-        PRIMARY KEY (GATEWAY_ID)
-);
-
-CREATE TABLE CONFIGURATION
-(
-        CONFIG_KEY VARCHAR(255),
-        CONFIG_VAL VARCHAR(255),
-        EXPIRE_DATE TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        CATEGORY_ID VARCHAR (255),
-        PRIMARY KEY(CONFIG_KEY, CONFIG_VAL, CATEGORY_ID)
-);
-
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL, EXPIRE_DATE, CATEGORY_ID) VALUES('registry.version', '0.15', CURRENT_TIMESTAMP ,'SYSTEM');
-
-CREATE TABLE USERS
-(
-        USER_NAME VARCHAR(255),
-        PASSWORD VARCHAR(255),
-        PRIMARY KEY(USER_NAME)
-);
-
-CREATE TABLE GATEWAY_WORKER
-(
-        GATEWAY_ID VARCHAR(255),
-        USER_NAME VARCHAR(255),
-        PRIMARY KEY (GATEWAY_ID, USER_NAME),
-        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
-        FOREIGN KEY (USER_NAME) REFERENCES USERS(USER_NAME) ON DELETE CASCADE
-);
-
-CREATE TABLE PROJECT
-(
-         GATEWAY_ID VARCHAR(255),
-         USER_NAME VARCHAR(255) NOT NULL,
-         PROJECT_ID VARCHAR(255),
-         PROJECT_NAME VARCHAR(255) NOT NULL,
-         DESCRIPTION VARCHAR(255),
-         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-         PRIMARY KEY (PROJECT_ID),
-         FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
-         FOREIGN KEY (USER_NAME) REFERENCES USERS(USER_NAME) ON DELETE CASCADE
-);
-
-CREATE TABLE PROJECT_USER
-(
-    PROJECT_ID VARCHAR(255),
-    USER_NAME VARCHAR(255),
-    PRIMARY KEY (PROJECT_ID,USER_NAME),
-    FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID) ON DELETE CASCADE,
-    FOREIGN KEY (USER_NAME) REFERENCES USERS(USER_NAME) ON DELETE CASCADE
-);
-
-CREATE TABLE EXPERIMENT
-(
-        EXPERIMENT_ID VARCHAR(255),
-        GATEWAY_ID VARCHAR(255),
-        EXECUTION_USER VARCHAR(255) NOT NULL,
-        PROJECT_ID VARCHAR(255) NOT NULL,
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        EXPERIMENT_NAME VARCHAR(255) NOT NULL,
-        EXPERIMENT_DESCRIPTION VARCHAR(255),
-        APPLICATION_ID VARCHAR(255),
-        APPLICATION_VERSION VARCHAR(255),
-        WORKFLOW_TEMPLATE_ID VARCHAR(255),
-        WORKFLOW_TEMPLATE_VERSION VARCHAR(255),
-        WORKFLOW_EXECUTION_ID VARCHAR(255),
-        ALLOW_NOTIFICATION SMALLINT,
-        GATEWAY_EXECUTION_ID VARCHAR(255),
-        PRIMARY KEY(EXPERIMENT_ID),
-        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
-        FOREIGN KEY (EXECUTION_USER) REFERENCES USERS(USER_NAME) ON DELETE CASCADE,
-        FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE EXPERIMENT_INPUT
-(
-        EXPERIMENT_ID VARCHAR(255),
-        INPUT_KEY VARCHAR(255) NOT NULL,
-        DATA_TYPE VARCHAR(255),
-        METADATA VARCHAR(255),
-        APP_ARGUMENT VARCHAR(255),
-        STANDARD_INPUT SMALLINT,
-        USER_FRIENDLY_DESC VARCHAR(255),
-        VALUE CLOB,
-        INPUT_ORDER INTEGER,
-        IS_REQUIRED SMALLINT,
-        REQUIRED_TO_COMMANDLINE SMALLINT,
-        DATA_STAGED SMALLINT,
-        PRIMARY KEY(EXPERIMENT_ID,INPUT_KEY),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE EXPERIMENT_OUTPUT
-(
-        EXPERIMENT_ID VARCHAR(255),
-        OUTPUT_KEY VARCHAR(255) NOT NULL,
-        DATA_TYPE VARCHAR(255),
-        VALUE CLOB,
-        IS_REQUIRED SMALLINT,
-        REQUIRED_TO_COMMANDLINE SMALLINT,
-        DATA_MOVEMENT SMALLINT,
-        DATA_NAME_LOCATION VARCHAR(255),
-        SEARCH_QUERY VARCHAR(255),
-        APP_ARGUMENT VARCHAR(255),
-        PRIMARY KEY(EXPERIMENT_ID,OUTPUT_KEY),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-
-CREATE TABLE WORKFLOW_NODE_DETAIL
-(
-        EXPERIMENT_ID VARCHAR(255) NOT NULL,
-        NODE_INSTANCE_ID VARCHAR(255),
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        NODE_NAME VARCHAR(255) NOT NULL,
-        EXECUTION_UNIT VARCHAR(255) NOT NULL,
-        EXECUTION_UNIT_DATA VARCHAR(255),
-        PRIMARY KEY(NODE_INSTANCE_ID),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE TASK_DETAIL
-(
-        TASK_ID VARCHAR(255),
-        NODE_INSTANCE_ID VARCHAR(255),
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        APPLICATION_ID VARCHAR(255),
-        APPLICATION_VERSION VARCHAR(255),
-        APPLICATION_DEPLOYMENT_ID VARCHAR(255),
-        ALLOW_NOTIFICATION SMALLINT,
-        PRIMARY KEY(TASK_ID),
-        FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE NOTIFICATION_EMAIL
-(
-  EMAIL_ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-  EXPERIMENT_ID VARCHAR(255),
-  TASK_ID VARCHAR(255),
-  EMAIL_ADDRESS VARCHAR(255),
-  PRIMARY KEY(EMAIL_ID),
-  FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
-  FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE ERROR_DETAIL
-(
-         ERROR_ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-         EXPERIMENT_ID VARCHAR(255),
-         TASK_ID VARCHAR(255),
-         NODE_INSTANCE_ID VARCHAR(255),
-         JOB_ID VARCHAR(255),
-         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-         ACTUAL_ERROR_MESSAGE CLOB,
-         USER_FRIEDNLY_ERROR_MSG VARCHAR(255),
-         TRANSIENT_OR_PERSISTENT SMALLINT,
-         ERROR_CATEGORY VARCHAR(255),
-         CORRECTIVE_ACTION VARCHAR(255),
-         ACTIONABLE_GROUP VARCHAR(255),
-         PRIMARY KEY(ERROR_ID),
-         FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
-         FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE,
-         FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE APPLICATION_INPUT
-(
-        TASK_ID VARCHAR(255),
-        INPUT_KEY VARCHAR(255) NOT NULL,
-        DATA_TYPE VARCHAR(255),
-        METADATA VARCHAR(255),
-        APP_ARGUMENT VARCHAR(255),
-        STANDARD_INPUT SMALLINT,
-        USER_FRIENDLY_DESC VARCHAR(255),
-        VALUE CLOB,
-        INPUT_ORDER INTEGER,
-        IS_REQUIRED SMALLINT,
-        REQUIRED_TO_COMMANDLINE SMALLINT,
-        DATA_STAGED SMALLINT,
-        PRIMARY KEY(TASK_ID,INPUT_KEY),
-        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE APPLICATION_OUTPUT
-(
-        TASK_ID VARCHAR(255),
-        OUTPUT_KEY VARCHAR(255) NOT NULL,
-        DATA_TYPE VARCHAR(255),
-        VALUE CLOB,
-        IS_REQUIRED SMALLINT,
-        REQUIRED_TO_COMMANDLINE SMALLINT,
-        DATA_MOVEMENT SMALLINT,
-        DATA_NAME_LOCATION VARCHAR(255),
-        SEARCH_QUERY VARCHAR(255),
-        APP_ARGUMENT VARCHAR(255),
-        PRIMARY KEY(TASK_ID,OUTPUT_KEY),
-        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE NODE_INPUT
-(
-       NODE_INSTANCE_ID VARCHAR(255),
-       INPUT_KEY VARCHAR(255) NOT NULL,
-       DATA_TYPE VARCHAR(255),
-       METADATA VARCHAR(255),
-       APP_ARGUMENT VARCHAR(255),
-       STANDARD_INPUT SMALLINT,
-       USER_FRIENDLY_DESC VARCHAR(255),
-       VALUE VARCHAR(255),
-       INPUT_ORDER INTEGER,
-       IS_REQUIRED SMALLINT,
-       REQUIRED_TO_COMMANDLINE SMALLINT,
-       DATA_STAGED SMALLINT,
-       PRIMARY KEY(NODE_INSTANCE_ID,INPUT_KEY),
-       FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE NODE_OUTPUT
-(
-       NODE_INSTANCE_ID VARCHAR(255),
-       OUTPUT_KEY VARCHAR(255) NOT NULL,
-       DATA_TYPE VARCHAR(255),
-       VALUE VARCHAR(255),
-       IS_REQUIRED SMALLINT,
-       REQUIRED_TO_COMMANDLINE SMALLINT,
-       DATA_MOVEMENT SMALLINT,
-       DATA_NAME_LOCATION VARCHAR(255),
-       SEARCH_QUERY VARCHAR(255),
-       APP_ARGUMENT VARCHAR(255),
-       PRIMARY KEY(NODE_INSTANCE_ID,OUTPUT_KEY),
-       FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE JOB_DETAIL
-(
-        JOB_ID VARCHAR(255),
-        TASK_ID VARCHAR(255),
-        JOB_DESCRIPTION CLOB NOT NULL,
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        COMPUTE_RESOURCE_CONSUMED VARCHAR(255),
-        JOBNAME VARCHAR (255),
-        WORKING_DIR VARCHAR(255),
-        PRIMARY KEY (TASK_ID, JOB_ID),
-        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE DATA_TRANSFER_DETAIL
-(
-        TRANSFER_ID VARCHAR(255),
-        TASK_ID VARCHAR(255),
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        TRANSFER_DESC VARCHAR(255) NOT NULL,
-        PRIMARY KEY(TRANSFER_ID),
-        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE STATUS
-(
-        STATUS_ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-        EXPERIMENT_ID VARCHAR(255),
-        NODE_INSTANCE_ID VARCHAR(255),
-        TRANSFER_ID VARCHAR(255),
-        TASK_ID VARCHAR(255),
-        JOB_ID VARCHAR(255),
-        STATE VARCHAR(255),
-        STATUS_UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        STATUS_TYPE VARCHAR(255),
-        PRIMARY KEY(STATUS_ID),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
-        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE,
-        FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE,
-        FOREIGN KEY (TRANSFER_ID) REFERENCES DATA_TRANSFER_DETAIL(TRANSFER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE CONFIG_DATA
-(
-        EXPERIMENT_ID VARCHAR(255),
-        AIRAVATA_AUTO_SCHEDULE SMALLINT NOT NULL,
-        OVERRIDE_MANUAL_SCHEDULE_PARAMS SMALLINT NOT NULL,
-        SHARE_EXPERIMENT SMALLINT,
-        USER_DN VARCHAR(255),
-        GENERATE_CERT SMALLINT,
-        PRIMARY KEY(EXPERIMENT_ID)
-);
-
-CREATE TABLE COMPUTATIONAL_RESOURCE_SCHEDULING
-(
-        RESOURCE_SCHEDULING_ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-        EXPERIMENT_ID VARCHAR(255),
-        TASK_ID VARCHAR(255),
-        RESOURCE_HOST_ID VARCHAR(255),
-        CPU_COUNT INTEGER,
-        NODE_COUNT INTEGER,
-        NO_OF_THREADS INTEGER,
-        QUEUE_NAME VARCHAR(255),
-        WALLTIME_LIMIT INTEGER,
-        JOB_START_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        TOTAL_PHYSICAL_MEMORY INTEGER,
-        COMPUTATIONAL_PROJECT_ACCOUNT VARCHAR(255),
-        CHESSIS_NAME VARCHAR(255),
-        PRIMARY KEY(RESOURCE_SCHEDULING_ID),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
-        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE ADVANCE_INPUT_DATA_HANDLING
-(
-       INPUT_DATA_HANDLING_ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-       EXPERIMENT_ID VARCHAR(255),
-       TASK_ID VARCHAR(255),
-       WORKING_DIR_PARENT VARCHAR(255),
-       UNIQUE_WORKING_DIR VARCHAR(255),
-       STAGE_INPUT_FILES_TO_WORKING_DIR SMALLINT,
-       CLEAN_AFTER_JOB SMALLINT,
-       PRIMARY KEY(INPUT_DATA_HANDLING_ID),
-       FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
-       FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE ADVANCE_OUTPUT_DATA_HANDLING
-(
-       OUTPUT_DATA_HANDLING_ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-       EXPERIMENT_ID VARCHAR(255),
-       TASK_ID VARCHAR(255),
-       OUTPUT_DATA_DIR VARCHAR(255),
-       DATA_REG_URL VARCHAR (255),
-       PERSIST_OUTPUT_DATA SMALLINT,
-       PRIMARY KEY(OUTPUT_DATA_HANDLING_ID),
-       FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
-       FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE QOS_PARAM
-(
-        QOS_ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-        EXPERIMENT_ID VARCHAR(255),
-        TASK_ID VARCHAR(255),
-        START_EXECUTION_AT VARCHAR(255),
-        EXECUTE_BEFORE VARCHAR(255),
-        NO_OF_RETRIES INTEGER,
-        PRIMARY KEY(QOS_ID),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
-        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE COMMUNITY_USER
-(
-        GATEWAY_ID VARCHAR(256) NOT NULL,
-        COMMUNITY_USER_NAME VARCHAR(256) NOT NULL,
-        TOKEN_ID VARCHAR(256) NOT NULL,
-        COMMUNITY_USER_EMAIL VARCHAR(256) NOT NULL,
-        PRIMARY KEY (GATEWAY_ID, COMMUNITY_USER_NAME, TOKEN_ID)
-);
-
-CREATE TABLE CREDENTIALS
-(
-        GATEWAY_ID VARCHAR(256) NOT NULL,
-        TOKEN_ID VARCHAR(256) NOT NULL,
-        CREDENTIAL BLOB NOT NULL,
-        PORTAL_USER_ID VARCHAR(256) NOT NULL,
-        TIME_PERSISTED TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        PRIMARY KEY (GATEWAY_ID, TOKEN_ID)
-);
-
-

http://git-wip-us.apache.org/repos/asf/airavata/blob/6e94c35c/airavata-api/airavata-api-server/src/main/resources/registry-mysql.sql
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/resources/registry-mysql.sql b/airavata-api/airavata-api-server/src/main/resources/registry-mysql.sql
deleted file mode 100644
index 14d7fc8..0000000
--- a/airavata-api/airavata-api-server/src/main/resources/registry-mysql.sql
+++ /dev/null
@@ -1,392 +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.
- *
- */
-CREATE TABLE GATEWAY
-(
-        GATEWAY_ID VARCHAR(255),
-        GATEWAY_NAME VARCHAR(255),
-	      DOMAIN VARCHAR(255),
-	      EMAIL_ADDRESS VARCHAR(255),
-        PRIMARY KEY (GATEWAY_ID)
-);
-
-CREATE TABLE CONFIGURATION
-(
-        CONFIG_KEY VARCHAR(255),
-        CONFIG_VAL VARCHAR(255),
-        EXPIRE_DATE TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        CATEGORY_ID VARCHAR (255),
-        PRIMARY KEY(CONFIG_KEY, CONFIG_VAL, CATEGORY_ID)
-);
-
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL, EXPIRE_DATE, CATEGORY_ID) VALUES('registry.version', '0.15', CURRENT_TIMESTAMP ,'SYSTEM');
-
-CREATE TABLE USERS
-(
-        USER_NAME VARCHAR(255),
-        PASSWORD VARCHAR(255),
-        PRIMARY KEY(USER_NAME)
-);
-
-CREATE TABLE GATEWAY_WORKER
-(
-        GATEWAY_ID VARCHAR(255),
-        USER_NAME VARCHAR(255),
-        PRIMARY KEY (GATEWAY_ID, USER_NAME),
-        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
-        FOREIGN KEY (USER_NAME) REFERENCES USERS(USER_NAME) ON DELETE CASCADE
-);
-
-CREATE TABLE PROJECT
-(
-         GATEWAY_ID VARCHAR(255),
-         USER_NAME VARCHAR(255),
-         PROJECT_NAME VARCHAR(255) NOT NULL,
-         PROJECT_ID VARCHAR(255),
-         DESCRIPTION VARCHAR(255),
-         CREATION_TIME TIMESTAMP DEFAULT NOW(),
-         PRIMARY KEY (PROJECT_ID),
-         FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
-         FOREIGN KEY (USER_NAME) REFERENCES USERS(USER_NAME) ON DELETE CASCADE
-);
-
-CREATE TABLE PROJECT_USER
-(
-    PROJECT_ID VARCHAR(255),
-    USER_NAME VARCHAR(255),
-    PRIMARY KEY (PROJECT_ID,USER_NAME),
-    FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID) ON DELETE CASCADE,
-    FOREIGN KEY (USER_NAME) REFERENCES USERS(USER_NAME) ON DELETE CASCADE
-);
-
-CREATE TABLE EXPERIMENT
-(
-        EXPERIMENT_ID VARCHAR(255),
-        GATEWAY_ID VARCHAR(255),
-        EXECUTION_USER VARCHAR(255) NOT NULL,
-        PROJECT_ID VARCHAR(255) NOT NULL,
-        CREATION_TIME TIMESTAMP DEFAULT NOW(),
-        EXPERIMENT_NAME VARCHAR(255) NOT NULL,
-        EXPERIMENT_DESCRIPTION VARCHAR(255),
-        APPLICATION_ID VARCHAR(255),
-        APPLICATION_VERSION VARCHAR(255),
-        WORKFLOW_TEMPLATE_ID VARCHAR(255),
-        WORKFLOW_TEMPLATE_VERSION VARCHAR(255),
-        WORKFLOW_EXECUTION_ID VARCHAR(255),
-        ALLOW_NOTIFICATION SMALLINT,
-        GATEWAY_EXECUTION_ID VARCHAR(255),
-        PRIMARY KEY(EXPERIMENT_ID),
-        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
-        FOREIGN KEY (EXECUTION_USER) REFERENCES USERS(USER_NAME) ON DELETE CASCADE,
-        FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE EXPERIMENT_INPUT
-(
-        EXPERIMENT_ID VARCHAR(255),
-        INPUT_KEY VARCHAR(255) NOT NULL,
-        DATA_TYPE VARCHAR(255),
-        APP_ARGUMENT VARCHAR(255),
-        STANDARD_INPUT SMALLINT,
-        USER_FRIENDLY_DESC VARCHAR(255),
-        METADATA VARCHAR(255),
-        VALUE LONGTEXT,
-        INPUT_ORDER INTEGER,
-        IS_REQUIRED SMALLINT,
-        REQUIRED_TO_COMMANDLINE SMALLINT,
-        DATA_STAGED SMALLINT,
-        PRIMARY KEY(EXPERIMENT_ID,INPUT_KEY),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE EXPERIMENT_OUTPUT
-(
-        EXPERIMENT_ID VARCHAR(255),
-        OUTPUT_KEY VARCHAR(255) NOT NULL,
-        DATA_TYPE VARCHAR(255),
-        VALUE LONGTEXT,
-        IS_REQUIRED SMALLINT,
-        REQUIRED_TO_COMMANDLINE SMALLINT,
-        DATA_MOVEMENT SMALLINT,
-        DATA_NAME_LOCATION VARCHAR(255),
-        SEARCH_QUERY VARCHAR(255),
-        APP_ARGUMENT VARCHAR(255),
-        PRIMARY KEY(EXPERIMENT_ID,OUTPUT_KEY),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE WORKFLOW_NODE_DETAIL
-(
-        EXPERIMENT_ID VARCHAR(255) NOT NULL,
-        NODE_INSTANCE_ID VARCHAR(255),
-        CREATION_TIME TIMESTAMP DEFAULT NOW(),
-        NODE_NAME VARCHAR(255) NOT NULL,
-        EXECUTION_UNIT VARCHAR(255) NOT NULL,
-        EXECUTION_UNIT_DATA VARCHAR(255),
-        PRIMARY KEY(NODE_INSTANCE_ID),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE TASK_DETAIL
-(
-        TASK_ID VARCHAR(255),
-        NODE_INSTANCE_ID VARCHAR(255),
-        CREATION_TIME TIMESTAMP DEFAULT NOW(),
-        APPLICATION_ID VARCHAR(255),
-        APPLICATION_VERSION VARCHAR(255),
-        APPLICATION_DEPLOYMENT_ID VARCHAR(255),
-        ALLOW_NOTIFICATION SMALLINT,
-        PRIMARY KEY(TASK_ID),
-        FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE NOTIFICATION_EMAIL
-(
-  EMAIL_ID INTEGER NOT NULL AUTO_INCREMENT,
-  EXPERIMENT_ID VARCHAR(255),
-  TASK_ID VARCHAR(255),
-  EMAIL_ADDRESS VARCHAR(255),
-  PRIMARY KEY(EMAIL_ID),
-  FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
-  FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE APPLICATION_INPUT
-(
-        TASK_ID VARCHAR(255),
-        INPUT_KEY VARCHAR(255) NOT NULL,
-        DATA_TYPE VARCHAR(255),
-        APP_ARGUMENT VARCHAR(255),
-        STANDARD_INPUT SMALLINT,
-        USER_FRIENDLY_DESC VARCHAR(255),
-        METADATA VARCHAR(255),
-        VALUE LONGTEXT,
-        INPUT_ORDER INTEGER,
-        IS_REQUIRED SMALLINT,
-        REQUIRED_TO_COMMANDLINE SMALLINT,
-        DATA_STAGED SMALLINT,
-        PRIMARY KEY(TASK_ID,INPUT_KEY),
-        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE APPLICATION_OUTPUT
-(
-        TASK_ID VARCHAR(255),
-        OUTPUT_KEY VARCHAR(255) NOT NULL,
-        DATA_TYPE VARCHAR(255),
-        VALUE LONGTEXT,
-        DATA_MOVEMENT SMALLINT,
-        IS_REQUIRED SMALLINT,
-        REQUIRED_TO_COMMANDLINE SMALLINT,
-        DATA_NAME_LOCATION VARCHAR(255),
-        SEARCH_QUERY VARCHAR(255),
-        APP_ARGUMENT VARCHAR(255),
-        PRIMARY KEY(TASK_ID,OUTPUT_KEY),
-        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE NODE_INPUT
-(
-       NODE_INSTANCE_ID VARCHAR(255),
-       INPUT_KEY VARCHAR(255) NOT NULL,
-       DATA_TYPE VARCHAR(255),
-       APP_ARGUMENT VARCHAR(255),
-       STANDARD_INPUT SMALLINT,
-       USER_FRIENDLY_DESC VARCHAR(255),
-       METADATA VARCHAR(255),
-       VALUE VARCHAR(255),
-       INPUT_ORDER INTEGER,
-       IS_REQUIRED SMALLINT,
-       REQUIRED_TO_COMMANDLINE SMALLINT,
-       DATA_STAGED SMALLINT,
-       PRIMARY KEY(NODE_INSTANCE_ID,INPUT_KEY),
-       FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE NODE_OUTPUT
-(
-       NODE_INSTANCE_ID VARCHAR(255),
-       OUTPUT_KEY VARCHAR(255) NOT NULL,
-       DATA_TYPE VARCHAR(255),
-       VALUE VARCHAR(255),
-       IS_REQUIRED SMALLINT,
-       REQUIRED_TO_COMMANDLINE SMALLINT,
-       DATA_MOVEMENT SMALLINT,
-       DATA_NAME_LOCATION VARCHAR(255),
-       SEARCH_QUERY VARCHAR(255),
-       APP_ARGUMENT VARCHAR(255),
-       PRIMARY KEY(NODE_INSTANCE_ID,OUTPUT_KEY),
-       FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE JOB_DETAIL
-(
-        JOB_ID VARCHAR(255),
-        TASK_ID VARCHAR(255),
-        JOB_DESCRIPTION LONGTEXT NOT NULL,
-        CREATION_TIME TIMESTAMP DEFAULT NOW(),
-        COMPUTE_RESOURCE_CONSUMED VARCHAR(255),
-        JOBNAME VARCHAR (255),
-        WORKING_DIR VARCHAR(255),
-        PRIMARY KEY (TASK_ID, JOB_ID),
-        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE DATA_TRANSFER_DETAIL
-(
-        TRANSFER_ID VARCHAR(255),
-        TASK_ID VARCHAR(255),
-        CREATION_TIME TIMESTAMP DEFAULT NOW(),
-        TRANSFER_DESC VARCHAR(255) NOT NULL,
-        PRIMARY KEY(TRANSFER_ID),
-        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE ERROR_DETAIL
-(
-         ERROR_ID INTEGER NOT NULL AUTO_INCREMENT,
-         EXPERIMENT_ID VARCHAR(255),
-         TASK_ID VARCHAR(255),
-         NODE_INSTANCE_ID VARCHAR(255),
-         JOB_ID VARCHAR(255),
-         CREATION_TIME TIMESTAMP DEFAULT NOW(),
-         ACTUAL_ERROR_MESSAGE LONGTEXT,
-         USER_FRIEDNLY_ERROR_MSG VARCHAR(255),
-         TRANSIENT_OR_PERSISTENT SMALLINT,
-         ERROR_CATEGORY VARCHAR(255),
-         CORRECTIVE_ACTION VARCHAR(255),
-         ACTIONABLE_GROUP VARCHAR(255),
-         PRIMARY KEY(ERROR_ID),
-         FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
-         FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE,
-         FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE STATUS
-(
-        STATUS_ID INTEGER NOT NULL AUTO_INCREMENT,
-        EXPERIMENT_ID VARCHAR(255),
-        NODE_INSTANCE_ID VARCHAR(255),
-        TRANSFER_ID VARCHAR(255),
-        TASK_ID VARCHAR(255),
-        JOB_ID VARCHAR(255),
-        STATE VARCHAR(255),
-        STATUS_UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE now(),
-        STATUS_TYPE VARCHAR(255),
-        PRIMARY KEY(STATUS_ID),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
-        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE,
-        FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE,
-        FOREIGN KEY (TRANSFER_ID) REFERENCES DATA_TRANSFER_DETAIL(TRANSFER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE CONFIG_DATA
-(
-        EXPERIMENT_ID VARCHAR(255),
-        AIRAVATA_AUTO_SCHEDULE SMALLINT NOT NULL,
-        OVERRIDE_MANUAL_SCHEDULE_PARAMS SMALLINT NOT NULL,
-        SHARE_EXPERIMENT SMALLINT,
-        USER_DN VARCHAR(255),
-        GENERATE_CERT SMALLINT,
-        PRIMARY KEY(EXPERIMENT_ID),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-
-);
-
-CREATE TABLE COMPUTATIONAL_RESOURCE_SCHEDULING
-(
-        RESOURCE_SCHEDULING_ID INTEGER NOT NULL AUTO_INCREMENT,
-        EXPERIMENT_ID VARCHAR(255),
-        TASK_ID VARCHAR(255),
-        RESOURCE_HOST_ID VARCHAR(255),
-        CPU_COUNT INTEGER,
-        NODE_COUNT INTEGER,
-        NO_OF_THREADS INTEGER,
-        QUEUE_NAME VARCHAR(255),
-        WALLTIME_LIMIT INTEGER,
-        JOB_START_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        TOTAL_PHYSICAL_MEMORY INTEGER,
-        COMPUTATIONAL_PROJECT_ACCOUNT VARCHAR(255),
-        CHESSIS_NAME VARCHAR(255),
-        PRIMARY KEY(RESOURCE_SCHEDULING_ID),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
-        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE ADVANCE_INPUT_DATA_HANDLING
-(
-       INPUT_DATA_HANDLING_ID INTEGER NOT NULL AUTO_INCREMENT,
-       EXPERIMENT_ID VARCHAR(255),
-       TASK_ID VARCHAR(255),
-       WORKING_DIR_PARENT VARCHAR(255),
-       UNIQUE_WORKING_DIR VARCHAR(255),
-       STAGE_INPUT_FILES_TO_WORKING_DIR SMALLINT,
-       CLEAN_AFTER_JOB SMALLINT,
-       PRIMARY KEY(INPUT_DATA_HANDLING_ID),
-       FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
-       FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE ADVANCE_OUTPUT_DATA_HANDLING
-(
-       OUTPUT_DATA_HANDLING_ID INTEGER NOT NULL AUTO_INCREMENT,
-       EXPERIMENT_ID VARCHAR(255),
-       TASK_ID VARCHAR(255),
-       OUTPUT_DATA_DIR VARCHAR(255),
-       DATA_REG_URL VARCHAR (255),
-       PERSIST_OUTPUT_DATA SMALLINT,
-       PRIMARY KEY(OUTPUT_DATA_HANDLING_ID),
-       FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
-       FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE QOS_PARAM
-(
-        QOS_ID INTEGER NOT NULL AUTO_INCREMENT,
-        EXPERIMENT_ID VARCHAR(255),
-        TASK_ID VARCHAR(255),
-        START_EXECUTION_AT VARCHAR(255),
-        EXECUTE_BEFORE VARCHAR(255),
-        NO_OF_RETRIES INTEGER,
-        PRIMARY KEY(QOS_ID),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
-        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE COMMUNITY_USER
-(
-        GATEWAY_ID VARCHAR(256) NOT NULL,
-        COMMUNITY_USER_NAME VARCHAR(256) NOT NULL,
-        TOKEN_ID VARCHAR(256) NOT NULL,
-        COMMUNITY_USER_EMAIL VARCHAR(256) NOT NULL,
-        PRIMARY KEY (GATEWAY_ID, COMMUNITY_USER_NAME, TOKEN_ID)
-);
-
-CREATE TABLE CREDENTIALS
-(
-        GATEWAY_ID VARCHAR(256) NOT NULL,
-        TOKEN_ID VARCHAR(256) NOT NULL,
-        CREDENTIAL BLOB NOT NULL,
-        PORTAL_USER_ID VARCHAR(256) NOT NULL,
-        TIME_PERSISTED TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
-        PRIMARY KEY (GATEWAY_ID, TOKEN_ID)
-);
-
-


[10/19] airavata git commit: Changing Airavata API to support paginated result retrieval of Project and Experiment data

Posted by sm...@apache.org.
Changing Airavata API to support paginated result retrieval of Project and Experiment data


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

Branch: refs/heads/master
Commit: 0a3d857b746d27a7a8cccf4f26923b163fcb9965
Parents: 9f6e30e
Author: Supun Nakandala <su...@gmail.com>
Authored: Mon Apr 27 20:46:56 2015 +0530
Committer: Supun Nakandala <su...@gmail.com>
Committed: Mon Apr 27 20:46:56 2015 +0530

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |   375 +-
 .../api/server/util/DatabaseCreator.java        |    15 +-
 .../handler/AiravataServerHandlerTest.java      |   324 +
 .../java/org/apache/airavata/api/Airavata.java  | 21816 ++++++++++++++---
 .../main/resources/lib/airavata/Airavata.cpp    | 12982 ++++++----
 .../src/main/resources/lib/airavata/Airavata.h  |  2398 +-
 .../lib/airavata/Airavata_server.skeleton.cpp   |    50 +
 .../resources/lib/Airavata/API/Airavata.php     |  4756 +++-
 .../lib/apache/airavata/api/Airavata-remote     |    70 +
 .../lib/apache/airavata/api/Airavata.py         | 12786 ++++++----
 .../airavataAPI.thrift                          |   332 +-
 .../apache/airavata/registry/cpi/Registry.java  |    19 +-
 .../airavata/registry/cpi/utils/Constants.java  |     1 +
 13 files changed, 43430 insertions(+), 12494 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/0a3d857b/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 e2b402e..c3039d9 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
@@ -21,12 +21,7 @@
 
 package org.apache.airavata.api.server.handler;
 
-import org.airavata.appcatalog.cpi.AppCatalog;
-import org.airavata.appcatalog.cpi.AppCatalogException;
-import org.airavata.appcatalog.cpi.ApplicationDeployment;
-import org.airavata.appcatalog.cpi.ComputeResource;
-import org.airavata.appcatalog.cpi.GwyResourceProfile;
-import org.airavata.appcatalog.cpi.WorkflowCatalog;
+import org.airavata.appcatalog.cpi.*;
 import org.apache.aiaravata.application.catalog.data.impl.AppCatalogFactory;
 import org.apache.aiaravata.application.catalog.data.resources.*;
 import org.apache.aiaravata.application.catalog.data.util.AppCatalogThriftConversion;
@@ -50,38 +45,18 @@ import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
 import org.apache.airavata.model.appcatalog.computeresource.*;
 import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
 import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
-import org.apache.airavata.model.error.AiravataClientConnectException;
-import org.apache.airavata.model.error.AiravataClientException;
-import org.apache.airavata.model.error.AiravataErrorType;
-import org.apache.airavata.model.error.AiravataSystemException;
-import org.apache.airavata.model.error.ExperimentNotFoundException;
-import org.apache.airavata.model.error.InvalidRequestException;
-import org.apache.airavata.model.error.ProjectNotFoundException;
+import org.apache.airavata.model.error.*;
 import org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent;
 import org.apache.airavata.model.messaging.event.MessageType;
 import org.apache.airavata.model.workspace.Gateway;
 import org.apache.airavata.model.workspace.Project;
-import org.apache.airavata.model.workspace.experiment.ComputationalResourceScheduling;
-import org.apache.airavata.model.workspace.experiment.DataTransferDetails;
-import org.apache.airavata.model.workspace.experiment.Experiment;
-import org.apache.airavata.model.workspace.experiment.ExperimentState;
-import org.apache.airavata.model.workspace.experiment.ExperimentStatus;
-import org.apache.airavata.model.workspace.experiment.ExperimentSummary;
-import org.apache.airavata.model.workspace.experiment.JobDetails;
-import org.apache.airavata.model.workspace.experiment.JobStatus;
-import org.apache.airavata.model.workspace.experiment.TaskDetails;
-import org.apache.airavata.model.workspace.experiment.UserConfigurationData;
-import org.apache.airavata.model.workspace.experiment.WorkflowNodeDetails;
+import org.apache.airavata.model.workspace.experiment.*;
 import org.apache.airavata.orchestrator.client.OrchestratorClientFactory;
 import org.apache.airavata.orchestrator.cpi.OrchestratorService;
 import org.apache.airavata.orchestrator.cpi.OrchestratorService.Client;
 import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
 import org.apache.airavata.persistance.registry.jpa.impl.RegistryFactory;
-import org.apache.airavata.registry.cpi.ChildDataType;
-import org.apache.airavata.registry.cpi.ParentDataType;
-import org.apache.airavata.registry.cpi.Registry;
-import org.apache.airavata.registry.cpi.RegistryException;
-import org.apache.airavata.registry.cpi.RegistryModelType;
+import org.apache.airavata.registry.cpi.*;
 import org.apache.airavata.registry.cpi.utils.Constants;
 import org.apache.thrift.TException;
 
@@ -343,10 +318,34 @@ public class AiravataServerHandler implements Airavata.Iface {
     /**
      * Get all Project by user
      *
+     * @param gatewayId
+     *    The identifier for the requested gateway.
      * @param userName
+     *    The identifier of the user
+     * @deprecated  Instead use getAllUserProjectsWithPagination method
      */
+    @Deprecated
     @Override
     public List<Project> getAllUserProjects(String gatewayId, String userName) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
+        return getAllUserProjectsWithPagination(gatewayId, userName, -1, -1);
+    }
+
+    /**
+     * Get all Project by user with pagination. Results will be ordered based
+     * on creation time DESC
+     *
+     * @param gatewayId
+     *    The identifier for the requested gateway.
+     * @param userName
+     *    The identifier of the user
+     * @param limit
+     *    The amount results to be fetched
+     * @param offset
+     *    The starting point of the results to be fetched
+     **/
+    @Override
+    public List<Project> getAllUserProjectsWithPagination(String gatewayId, String userName,
+                                                          int limit, int offset) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
         if (!validateString(userName)){
             logger.error("Username cannot be empty. Please provide a valid user..");
             AiravataSystemException exception = new AiravataSystemException();
@@ -371,7 +370,8 @@ public class AiravataServerHandler implements Airavata.Iface {
             Map<String, String> filters = new HashMap<String, String>();
             filters.put(Constants.FieldConstants.ProjectConstants.OWNER, userName);
             filters.put(Constants.FieldConstants.ProjectConstants.GATEWAY_ID, gatewayId);
-            List<Object> list = registry.search(RegistryModelType.PROJECT,filters);
+            List<Object> list = registry.search(RegistryModelType.PROJECT, filters, limit, offset,
+                    Constants.FieldConstants.ProjectConstants.CREATION_TIME, ResultOrderType.DESC);
             if (list != null && !list.isEmpty()){
                 for (Object o : list){
                     projects.add((Project) o);
@@ -387,10 +387,43 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
     }
 
+    /**
+     * Get all Project for user by project name
+     *
+     * @param gatewayId
+     *    The identifier for the requested gateway.
+     * @param userName
+     *    The identifier of the user
+     * @param projectName
+     *    The name of the project on which the results to be fetched
+     * @deprecated Instead use searchProjectsByProjectNameWithPagination
+     */
+    @Deprecated
+    @Override
     public List<Project> searchProjectsByProjectName(String gatewayId, String userName, String projectName) throws InvalidRequestException,
                                                                                                  AiravataClientException,
                                                                                                  AiravataSystemException,
                                                                                                  TException {
+        return searchProjectsByProjectNameWithPagination(gatewayId, userName, projectName, -1, -1);
+    }
+
+    /**
+     * Get all Project for user by project name with pagination. Results will be ordered based
+     * on creation time DESC
+     *
+     * @param gatewayId
+     *    The identifier for the requested gateway.
+     * @param userName
+     *    The identifier of the user
+     * @param projectName
+     *    The name of the project on which the results to be fetched
+     * @param limit
+     *    The amount results to be fetched
+     * @param offset
+     *    The starting point of the results to be fetched
+     */
+    @Override
+    public List<Project> searchProjectsByProjectNameWithPagination(String gatewayId, String userName, String projectName, int limit, int offset) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
         if (!validateString(userName)){
             logger.error("Username cannot be empty. Please provide a valid user..");
             AiravataSystemException exception = new AiravataSystemException();
@@ -416,7 +449,8 @@ public class AiravataServerHandler implements Airavata.Iface {
             filters.put(Constants.FieldConstants.ProjectConstants.OWNER, userName);
             filters.put(Constants.FieldConstants.ProjectConstants.GATEWAY_ID, gatewayId);
             filters.put(Constants.FieldConstants.ProjectConstants.PROJECT_NAME, projectName);
-            List<Object> results = registry.search(RegistryModelType.PROJECT, filters);
+            List<Object> results = registry.search(RegistryModelType.PROJECT, filters, limit, offset,
+                    Constants.FieldConstants.ProjectConstants.CREATION_TIME, ResultOrderType.DESC);
             for (Object object : results) {
                 projects.add((Project)object);
             }
@@ -430,10 +464,42 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
     }
 
+    /**
+     * Get all Project for user by project description
+     * @param gatewayId
+     *    The identifier for the requested gateway.
+     * @param userName
+     *    The identifier of the user
+     * @param description
+     *    The description to be matched
+     * @deprecated Instead use searchProjectsByProjectDescWithPagination
+     */
+    @Deprecated
+    @Override
     public List<Project> searchProjectsByProjectDesc(String gatewayId, String userName, String description) throws InvalidRequestException,
                                                                                                  AiravataClientException,
                                                                                                  AiravataSystemException,
                                                                                                  TException {
+        return searchProjectsByProjectDescWithPagination(gatewayId, userName, description, -1, -1);
+    }
+
+    /**
+     * Search and get all Projects for user by project description with pagination. Results
+     * will be ordered based on creation time DESC
+     *
+     * @param gatewayId
+     *    The identifier for the requested gateway.
+     * @param userName
+     *    The identifier of the user
+     * @param description
+     *    The description to be matched
+     * @param limit
+     *    The amount results to be fetched
+     * @param offset
+     *    The starting point of the results to be fetched
+     */
+    @Override
+    public List<Project> searchProjectsByProjectDescWithPagination(String gatewayId, String userName, String description, int limit, int offset) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
         if (!validateString(userName)){
             logger.error("Username cannot be empty. Please provide a valid user..");
             AiravataSystemException exception = new AiravataSystemException();
@@ -459,7 +525,8 @@ public class AiravataServerHandler implements Airavata.Iface {
             filters.put(Constants.FieldConstants.ProjectConstants.OWNER, userName);
             filters.put(Constants.FieldConstants.ProjectConstants.GATEWAY_ID, gatewayId);
             filters.put(Constants.FieldConstants.ProjectConstants.DESCRIPTION, description);
-            List<Object> results = registry.search(RegistryModelType.PROJECT, filters);
+            List<Object> results = registry.search(RegistryModelType.PROJECT, filters, limit, offset,
+                    Constants.FieldConstants.ProjectConstants.CREATION_TIME, ResultOrderType.DESC);
             for (Object object : results) {
                 projects.add((Project)object);
             }
@@ -473,10 +540,45 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
     }
 
+    /**
+     * Search Experiments by experiment name
+     *
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param expName
+     *       Experiment name to be matched
+     * @deprecated
+     *       Instead use searchExperimentsByNameWithPagination
+     *
+     */
+    @Deprecated
+    @Override
     public List<ExperimentSummary> searchExperimentsByName(String gatewayId, String userName, String expName) throws InvalidRequestException,
                                                                                                    AiravataClientException,
                                                                                                    AiravataSystemException,
                                                                                                    TException {
+        return searchExperimentsByNameWithPagination(gatewayId, userName, expName, -1, -1);
+    }
+
+    /**
+     * Search Experiments by experiment name with pagination. Results will be sorted
+     * based on creation time DESC
+     *
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param expName
+     *       Experiment name to be matched
+     * @param limit
+     *       Amount of results to be fetched
+     * @param offset
+     *       The starting point of the results to be fetched
+     */
+    @Override
+    public List<ExperimentSummary> searchExperimentsByNameWithPagination(String gatewayId, String userName, String expName, int limit, int offset) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
         if (!validateString(userName)){
             logger.error("Username cannot be empty. Please provide a valid user..");
             AiravataSystemException exception = new AiravataSystemException();
@@ -502,7 +604,8 @@ public class AiravataServerHandler implements Airavata.Iface {
             filters.put(Constants.FieldConstants.ExperimentConstants.USER_NAME, userName);
             filters.put(Constants.FieldConstants.ExperimentConstants.GATEWAY, gatewayId);
             filters.put(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_NAME, expName);
-            List<Object> results = registry.search(RegistryModelType.EXPERIMENT, filters);
+            List<Object> results = registry.search(RegistryModelType.EXPERIMENT, filters, limit,
+                    offset, Constants.FieldConstants.ExperimentConstants.CREATION_TIME, ResultOrderType.DESC);
             for (Object object : results) {
                 summaries.add((ExperimentSummary) object);
             }
@@ -516,10 +619,44 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
     }
 
+    /**
+     * Search Experiments by experiment name
+     *
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param description
+     *       Experiment description to be matched
+     * @deprecated
+     *       Instead use searchExperimentsByDescWithPagination
+     */
+    @Deprecated
+    @Override
     public List<ExperimentSummary> searchExperimentsByDesc(String gatewayId, String userName, String description) throws InvalidRequestException,
                                                                                                        AiravataClientException,
                                                                                                        AiravataSystemException,
                                                                                                        TException {
+        return searchExperimentsByDescWithPagination(gatewayId, userName, description, -1, -1);
+    }
+
+    /**
+     * Search Experiments by experiment name with pagination. Results will be sorted
+     * based on creation time DESC
+     *
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param description
+     *       Experiment description to be matched
+     * @param limit
+     *       Amount of results to be fetched
+     * @param offset
+     *       The starting point of the results to be fetched
+     */
+    @Override
+    public List<ExperimentSummary> searchExperimentsByDescWithPagination(String gatewayId, String userName, String description, int limit, int offset) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
         if (!validateString(userName)){
             logger.error("Username cannot be empty. Please provide a valid user..");
             AiravataSystemException exception = new AiravataSystemException();
@@ -545,7 +682,8 @@ public class AiravataServerHandler implements Airavata.Iface {
             filters.put(Constants.FieldConstants.ExperimentConstants.USER_NAME, userName);
             filters.put(Constants.FieldConstants.ExperimentConstants.GATEWAY, gatewayId);
             filters.put(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_DESC, description);
-            List<Object> results = registry.search(RegistryModelType.EXPERIMENT, filters);
+            List<Object> results = registry.search(RegistryModelType.EXPERIMENT, filters, limit,
+                    offset, Constants.FieldConstants.ExperimentConstants.CREATION_TIME, ResultOrderType.DESC);
             for (Object object : results) {
                 summaries.add((ExperimentSummary) object);
             }
@@ -559,7 +697,41 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
     }
 
+    /**
+     * Search Experiments by application id
+     *
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param applicationId
+     *       Application id to be matched
+     * @deprecated
+     *       Instead use searchExperimentsByApplication
+     */
+    @Deprecated
+    @Override
     public List<ExperimentSummary> searchExperimentsByApplication(String gatewayId, String userName, String applicationId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
+        return searchExperimentsByApplicationWithPagination(gatewayId, userName, applicationId, -1, -1);
+    }
+
+    /**
+     * Search Experiments by application id with pagination. Results will be sorted
+     * based on creation time DESC
+     *
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param applicationId
+     *       Application id to be matched
+     * @param limit
+     *       Amount of results to be fetched
+     * @param offset
+     *       The starting point of the results to be fetched
+     */
+    @Override
+    public List<ExperimentSummary> searchExperimentsByApplicationWithPagination(String gatewayId, String userName, String applicationId, int limit, int offset) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
         if (!validateString(userName)){
             logger.error("Username cannot be empty. Please provide a valid user..");
             AiravataSystemException exception = new AiravataSystemException();
@@ -585,7 +757,8 @@ public class AiravataServerHandler implements Airavata.Iface {
             filters.put(Constants.FieldConstants.ExperimentConstants.USER_NAME, userName);
             filters.put(Constants.FieldConstants.ExperimentConstants.APPLICATION_ID, applicationId);
             filters.put(Constants.FieldConstants.ExperimentConstants.GATEWAY, gatewayId);
-            List<Object> results = registry.search(RegistryModelType.EXPERIMENT, filters);
+            List<Object> results = registry.search(RegistryModelType.EXPERIMENT, filters, limit,
+                    offset, Constants.FieldConstants.ExperimentConstants.CREATION_TIME, ResultOrderType.DESC);
             for (Object object : results) {
                 summaries.add((ExperimentSummary) object);
             }
@@ -599,8 +772,41 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
     }
 
+    /**
+     * Search Experiments by experiment status
+     *
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param experimentState
+     *       Experiment state to be matched
+     * @deprecated
+     *       Instead use searchExperimentsByStatusWithPagination
+     */
+    @Deprecated
     @Override
     public List<ExperimentSummary> searchExperimentsByStatus(String gatewayId, String userName, ExperimentState experimentState) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
+        return searchExperimentsByStatusWithPagination(gatewayId, userName, experimentState, -1, -1);
+    }
+
+    /**
+     * Search Experiments by experiment status with pagination. Results will be sorted
+     * based on creation time DESC
+     *
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param experimentState
+     *       Experiement state to be matched
+     * @param limit
+     *       Amount of results to be fetched
+     * @param offset
+     *       The starting point of the results to be fetched
+     */
+    @Override
+    public List<ExperimentSummary> searchExperimentsByStatusWithPagination(String gatewayId, String userName, ExperimentState experimentState, int limit, int offset) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
         if (!validateString(userName)){
             logger.error("Username cannot be empty. Please provide a valid user..");
             AiravataSystemException exception = new AiravataSystemException();
@@ -626,7 +832,8 @@ public class AiravataServerHandler implements Airavata.Iface {
             filters.put(Constants.FieldConstants.ExperimentConstants.USER_NAME, userName);
             filters.put(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_STATUS, experimentState.toString());
             filters.put(Constants.FieldConstants.ExperimentConstants.GATEWAY, gatewayId);
-            List<Object> results = registry.search(RegistryModelType.EXPERIMENT, filters);
+            List<Object> results = registry.search(RegistryModelType.EXPERIMENT, filters, limit,
+                    offset, Constants.FieldConstants.ExperimentConstants.CREATION_TIME, ResultOrderType.DESC);
             for (Object object : results) {
                 summaries.add((ExperimentSummary) object);
             }
@@ -640,8 +847,45 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
     }
 
+    /**
+     * Search Experiments by experiment creation time
+     *
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param fromTime
+     *       Start time of the experiments creation time
+     * @param toTime
+     *       End time of the  experiement creation time
+     * @deprecated
+     *       Instead use searchExperimentsByCreationTime
+     */
+    @Deprecated
     @Override
     public List<ExperimentSummary> searchExperimentsByCreationTime(String gatewayId, String userName, long fromTime, long toTime) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
+        return searchExperimentsByCreationTimeWithPagination(gatewayId, userName, fromTime, toTime, -1, -1);
+    }
+
+    /**
+     * Search Experiments by experiment creation time with pagination. Results will be sorted
+     * based on creation time DESC
+     *
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param fromTime
+     *       Start time of the experiments creation time
+     * @param toTime
+     *       End time of the  experiement creation time
+     * @param limit
+     *       Amount of results to be fetched
+     * @param offset
+     *       The starting point of the results to be fetched
+     */
+    @Override
+    public List<ExperimentSummary> searchExperimentsByCreationTimeWithPagination(String gatewayId, String userName, long fromTime, long toTime, int limit, int offset) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
         if (!validateString(userName)){
             logger.error("Username cannot be empty. Please provide a valid user..");
             AiravataSystemException exception = new AiravataSystemException();
@@ -668,7 +912,8 @@ public class AiravataServerHandler implements Airavata.Iface {
             filters.put(Constants.FieldConstants.ExperimentConstants.FROM_DATE, String.valueOf(fromTime));
             filters.put(Constants.FieldConstants.ExperimentConstants.TO_DATE, String.valueOf(toTime));
             filters.put(Constants.FieldConstants.ExperimentConstants.GATEWAY, gatewayId);
-            List<Object> results = registry.search(RegistryModelType.EXPERIMENT, filters);
+            List<Object> results = registry.search(RegistryModelType.EXPERIMENT, filters, limit,
+                    offset, Constants.FieldConstants.ExperimentConstants.CREATION_TIME, ResultOrderType.DESC);
             for (Object object : results) {
                 summaries.add((ExperimentSummary) object);
             }
@@ -686,13 +931,34 @@ public class AiravataServerHandler implements Airavata.Iface {
      * Get all Experiments within a Project
      *
      * @param projectId
+     *       Identifier of the project
+     * @deprecated
+     *       Instead use getAllExperimentsInProjectWithPagination
      */
+    @Deprecated
     @Override
     public List<Experiment> getAllExperimentsInProject(String projectId) throws InvalidRequestException,
                                                                                 AiravataClientException,
                                                                                 AiravataSystemException,
                                                                                 ProjectNotFoundException,
                                                                                 TException {
+        return getAllExperimentsInProjectWithPagination(projectId, -1, -1);
+    }
+
+    /**
+     * Get all Experiments within project with pagination. Results will be sorted
+     * based on creation time DESC
+     *
+     * @param projectId
+     *       Identifier of the project
+     * @param limit
+     *       Amount of results to be fetched
+     * @param offset
+     *       The starting point of the results to be fetched
+     */
+    @Override
+    public List<Experiment> getAllExperimentsInProjectWithPagination(String projectId, int limit, int offset)
+            throws InvalidRequestException, AiravataClientException, AiravataSystemException, ProjectNotFoundException, TException {
         if (!validateString(projectId)){
             logger.error("Project id cannot be empty. Please provide a valid project ID...");
             AiravataSystemException exception = new AiravataSystemException();
@@ -709,7 +975,9 @@ public class AiravataServerHandler implements Airavata.Iface {
                 throw exception;
             }
             List<Experiment> experiments = new ArrayList<Experiment>();
-            List<Object> list = registry.get(RegistryModelType.EXPERIMENT, Constants.FieldConstants.ExperimentConstants.PROJECT_ID, projectId);
+            List<Object> list = registry.get(RegistryModelType.EXPERIMENT,
+                    Constants.FieldConstants.ExperimentConstants.PROJECT_ID, projectId, limit, offset,
+                    Constants.FieldConstants.ExperimentConstants.CREATION_TIME, ResultOrderType.DESC);
             if (list != null && !list.isEmpty()) {
                 for (Object o : list) {
                     experiments.add((Experiment) o);
@@ -728,10 +996,34 @@ public class AiravataServerHandler implements Airavata.Iface {
     /**
      * Get all Experiments by user
      *
+     * @param gatewayId
+     *       Identifier of the requesting gateway
      * @param userName
+     *       Username of the requested user
+     * @deprecated
+     *       Instead use getAllUserExperimentsWithPagination
      */
+    @Deprecated
     @Override
     public List<Experiment> getAllUserExperiments(String gatewayId, String userName) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
+        return getAllUserExperimentsWithPagination(gatewayId, userName, -1, -1);
+    }
+
+    /**
+     * Get all Experiments by user pagination. Results will be sorted
+     * based on creation time DESC
+     *
+     * @param gatewayId
+     *       Identifier of the requesting gateway
+     * @param userName
+     *       Username of the requested user
+     * @param limit
+     *       Amount of results to be fetched
+     * @param offset
+     *       The starting point of the results to be fetched
+     */
+    @Override
+    public List<Experiment> getAllUserExperimentsWithPagination(String gatewayId, String userName, int limit, int offset) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
         if (!validateString(userName)){
             logger.error("Username cannot be empty. Please provide a valid user..");
             AiravataSystemException exception = new AiravataSystemException();
@@ -753,10 +1045,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             }
             List<Experiment> experiments = new ArrayList<Experiment>();
             registry = RegistryFactory.getRegistry(gatewayId);
-            Map<String, String> filters = new HashMap<String, String>();
-            filters.put(Constants.FieldConstants.ExperimentConstants.USER_NAME, userName);
-            filters.put(Constants.FieldConstants.ExperimentConstants.GATEWAY, gatewayId);
-            List<Object> list = registry.search(RegistryModelType.EXPERIMENT, filters);
+            List<Object> list = registry.get(RegistryModelType.EXPERIMENT,
+                    Constants.FieldConstants.ExperimentConstants.USER_NAME, userName, limit, offset,
+                    Constants.FieldConstants.ExperimentConstants.CREATION_TIME, ResultOrderType.DESC);
             if (list != null && !list.isEmpty()){
                 for (Object o : list){
                     experiments.add((Experiment)o);

http://git-wip-us.apache.org/repos/asf/airavata/blob/0a3d857b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/DatabaseCreator.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/DatabaseCreator.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/DatabaseCreator.java
index 4833f2c..4bc3c72 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/DatabaseCreator.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/DatabaseCreator.java
@@ -23,7 +23,10 @@ package org.apache.airavata.api.server.util;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.sql.*;
 import java.util.StringTokenizer;
 
@@ -33,6 +36,7 @@ import java.util.StringTokenizer;
  * properties files.
  */
 public class DatabaseCreator {
+    private final static Logger logger = LoggerFactory.getLogger(DatabaseCreator.class);
 
     public enum DatabaseType {
         derby("(?i).*derby.*"), mysql("(?i).*mysql.*"), other("");
@@ -257,6 +261,15 @@ public class DatabaseCreator {
 
         try {
             InputStream is = DatabaseCreator.class.getClassLoader().getResourceAsStream(dbscriptName);
+            if(is == null) {
+                logger.info("Script file not found at " + dbscriptName + ". Uses default database script file");
+                DatabaseType databaseType = DatabaseCreator.getDatabaseType(conn);
+                if(databaseType.equals(DatabaseType.derby)){
+                    is = DatabaseCreator.class.getClassLoader().getResourceAsStream("registry-derby.sql");
+                }else if(databaseType.equals(DatabaseType.derby)){
+                    is = DatabaseCreator.class.getClassLoader().getResourceAsStream("registry-mysql.sql");
+                }
+            }
             reader = new BufferedReader(new InputStreamReader(is));
             String line;
             while ((line = reader.readLine()) != null) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/0a3d857b/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/AiravataServerHandlerTest.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/AiravataServerHandlerTest.java b/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/AiravataServerHandlerTest.java
new file mode 100644
index 0000000..799f8e9
--- /dev/null
+++ b/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/AiravataServerHandlerTest.java
@@ -0,0 +1,324 @@
+/*
+ *
+ * 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.api.server.handler;
+
+import junit.framework.Assert;
+import org.apache.airavata.api.server.util.RegistryInitUtil;
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
+import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
+import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.workspace.experiment.*;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * Test methods for Airavata Service Handler
+ */
+public class AiravataServerHandlerTest {
+    private final static Logger logger = LoggerFactory.getLogger(AiravataServerHandlerTest.class);
+
+    private static AiravataServerHandler airavataServerHandler;
+    private static String gatewayId = "default";
+
+    @BeforeClass
+    public static void setupBeforeClass() throws Exception{
+        AiravataUtils.setExecutionAsServer();
+        RegistryInitUtil.initializeDB();
+        airavataServerHandler = new AiravataServerHandler();
+
+        Gateway gateway = new Gateway();
+        gateway.setGatewayId(gatewayId);
+        airavataServerHandler.addGateway(gateway);
+    }
+
+    @AfterClass
+    public static void tearDown(){
+        RegistryInitUtil.stopDerbyInServerMode();
+    }
+
+    /**
+     * Testing for project related API methods
+     */
+    @Test
+    public void testProject(){
+        try {
+            String TAG = System.currentTimeMillis() + "";
+
+            //testing the creation of a project
+            Project project = new Project();
+            project.setOwner("TestUser"+TAG);
+            project.setName("TestProject"+TAG);
+            project.setDescription("This is a test project"+TAG);
+            String projectId1 = airavataServerHandler.createProject(gatewayId, project);
+            Assert.assertNotNull(projectId1);
+
+            //testing the update of a project
+            Project updatedProject = new Project();
+            updatedProject.setProjectID(projectId1);
+            updatedProject.setOwner("TestUser"+TAG);
+            updatedProject.setName("UpdatedTestProject"+TAG);
+            updatedProject.setDescription("This is an updated test project"+TAG);
+            airavataServerHandler.updateProject(projectId1, updatedProject);
+
+            //testing project retrieval
+            Project retrievedProject = airavataServerHandler.getProject(projectId1);
+            Assert.assertEquals(updatedProject.getProjectID(), retrievedProject.getProjectID());
+            Assert.assertEquals(updatedProject.getOwner(), retrievedProject.getOwner());
+            Assert.assertEquals(updatedProject.getName(), retrievedProject.getName());
+            Assert.assertEquals(updatedProject.getDescription(), retrievedProject.getDescription());
+            Assert.assertNotNull(retrievedProject.getCreationTime());
+            //created user should be in the shared users list
+            Assert.assertTrue(retrievedProject.getSharedUsers().size()==1);
+
+            //creating more projects for the same user
+            project = new Project();
+            project.setOwner("TestUser"+TAG);
+            project.setName("Project Terrible"+TAG);
+            project.setDescription("This is a test project_2"+TAG);
+            String projectId2 = airavataServerHandler.createProject(gatewayId, project);
+            Assert.assertNotNull(projectId2);
+
+            project = new Project();
+            project.setOwner("TestUser"+TAG);
+            project.setName("Project Funny"+TAG);
+            project.setDescription("This is a test project_3"+TAG);
+            String projectId3 = airavataServerHandler.createProject(gatewayId, project);
+            Assert.assertNotNull(projectId3);
+
+            project = new Project();
+            project.setOwner("TestUser"+TAG);
+            project.setName("Project Stupid"+TAG);
+            project.setDescription("This is a test project_4"+TAG);
+            String projectId4 = airavataServerHandler.createProject(gatewayId, project);
+            Assert.assertNotNull(projectId4);
+
+            project = new Project();
+            project.setOwner("TestUser"+TAG);
+            project.setName("Project Boring"+TAG);
+            project.setDescription("This is a test project_5"+TAG);
+            String projectId5 = airavataServerHandler.createProject(gatewayId, project);
+            Assert.assertNotNull(projectId5);
+
+            //search project by project name
+            List<Project> list = airavataServerHandler.searchProjectsByProjectName(gatewayId,
+                    "TestUser"+TAG, "Terrible"+TAG);
+            Assert.assertTrue(list.size()==1);
+            //with pagination
+            list = airavataServerHandler.searchProjectsByProjectNameWithPagination(gatewayId,
+                    "TestUser" + TAG, "Project", 2, 1);
+            Assert.assertTrue(list.size()==2);
+
+            //search project by project description
+            list = airavataServerHandler.searchProjectsByProjectDesc(gatewayId, "TestUser"+TAG,
+                    "test project_2"+TAG);
+            Assert.assertTrue(list.size()==1);
+            //with pagination
+            list = airavataServerHandler.searchProjectsByProjectDescWithPagination(gatewayId,
+                    "TestUser" + TAG, "test", 2, 1);
+            Assert.assertTrue(list.size()==2);
+
+            //get all projects of user
+            list = airavataServerHandler.getAllUserProjects(gatewayId, "TestUser"+TAG);
+            Assert.assertTrue(list.size()==5);
+            //with pagination
+            list = airavataServerHandler.getAllUserProjectsWithPagination(gatewayId, "TestUser" + TAG, 2, 2);
+            Assert.assertTrue(list.size()==2);
+            Project project1 = list.get(0);
+            Project project2 = list.get(1);
+            Assert.assertTrue(project1.getCreationTime()-project2.getCreationTime() > 0);
+        } catch (Exception e) {
+            e.printStackTrace();
+            Assert.fail();
+        }
+    }
+
+    /**
+     * Testing for project related API methods
+     */
+    @Test
+    public void testExperiment(){
+        try {
+            String TAG = System.currentTimeMillis() + "";
+
+            String applicationId = "Echo_" + UUID.randomUUID().toString();
+
+            //creating project
+            Project project = new Project();
+            project.setOwner("TestUser"+TAG);
+            project.setName("TestProject"+TAG);
+            project.setDescription("This is a test project"+TAG);
+            String projectId1 = airavataServerHandler.createProject(gatewayId,project);
+            Assert.assertNotNull(projectId1);
+
+            //creating sample echo experiment. assumes echo application is already defined
+            InputDataObjectType inputDataObjectType = new InputDataObjectType();
+            inputDataObjectType.setName("Input_to_Echo");
+            inputDataObjectType.setValue("Hello World");
+
+            ComputationalResourceScheduling scheduling = new ComputationalResourceScheduling();
+            scheduling.setResourceHostId(UUID.randomUUID().toString());
+            scheduling.setComputationalProjectAccount("TG-STA110014S");
+            scheduling.setTotalCPUCount(1);
+            scheduling.setNodeCount(1);
+            scheduling.setWallTimeLimit(15);
+            scheduling.setQueueName("normal");
+
+            UserConfigurationData userConfigurationData = new UserConfigurationData();
+            userConfigurationData.setAiravataAutoSchedule(false);
+            userConfigurationData.setOverrideManualScheduledParams(false);
+            userConfigurationData.setComputationalResourceScheduling(scheduling);
+
+            Experiment experiment = new Experiment();
+            experiment.setProjectID(projectId1);
+            experiment.setUserName("TestUser" + TAG);
+            experiment.setName("TestExperiment"+TAG);
+            experiment.setDescription("experiment");
+            experiment.setApplicationId(applicationId);
+            experiment.setUserConfigurationData(userConfigurationData);
+            experiment.addToExperimentInputs(inputDataObjectType);
+
+            String experimentId1 = airavataServerHandler.createExperiment(gatewayId, experiment);
+            Assert.assertNotNull(experimentId1);
+
+            //retrieving the stored experiment
+            Experiment retrievedExperiment = airavataServerHandler.getExperiment(experimentId1);
+            Assert.assertNotNull(retrievedExperiment);
+            Assert.assertEquals(retrievedExperiment.getProjectID(), experiment.getProjectID());
+            Assert.assertEquals(retrievedExperiment.getDescription(), experiment.getDescription());
+            Assert.assertEquals(retrievedExperiment.getName(), experiment.getName());
+            Assert.assertEquals(retrievedExperiment.getApplicationId(), experiment.getApplicationId());
+            Assert.assertNotNull(retrievedExperiment.getUserConfigurationData());
+            Assert.assertNotNull(retrievedExperiment.getExperimentInputs());
+
+            //updating an existing experiment
+            experiment.setName("NewExperimentName"+TAG);
+            OutputDataObjectType outputDataObjectType = new OutputDataObjectType();
+            outputDataObjectType.setName("Output_to_Echo");
+            outputDataObjectType.setValue("Hello World");
+            experiment.addToExperimentOutputs(outputDataObjectType);
+            airavataServerHandler.updateExperiment(experimentId1, experiment);
+
+            //creating more experiments
+            experiment = new Experiment();
+            experiment.setProjectID(projectId1);
+            experiment.setUserName("TestUser" + TAG);
+            experiment.setName("TestExperiment2" + TAG);
+            experiment.setDescription("experiment");
+            experiment.setApplicationId(applicationId);
+            experiment.setUserConfigurationData(userConfigurationData);
+            experiment.addToExperimentInputs(inputDataObjectType);
+
+            String experimentId2 = airavataServerHandler.createExperiment(gatewayId, experiment);
+            Assert.assertNotNull(experimentId2);
+
+            experiment = new Experiment();
+            experiment.setProjectID(projectId1);
+            experiment.setUserName("TestUser" + TAG);
+            experiment.setName("TestExperiment3"+TAG);
+            experiment.setDescription("experiment");
+            experiment.setApplicationId(applicationId);
+            experiment.setUserConfigurationData(userConfigurationData);
+            experiment.addToExperimentInputs(inputDataObjectType);
+
+            String experimentId3 = airavataServerHandler.createExperiment(gatewayId, experiment);
+            Assert.assertNotNull(experimentId3);
+
+            //searching experiments by name
+            List<ExperimentSummary> results = airavataServerHandler.searchExperimentsByName(gatewayId,
+                    "TestUser" + TAG, "Experiment2");
+            Assert.assertTrue(results.size()==1);
+            //with pagination
+            results = airavataServerHandler.searchExperimentsByNameWithPagination(gatewayId,
+                    "TestUser" + TAG, "Experi", 2, 0);
+            Assert.assertTrue(results.size()==2);
+
+            //searching experiments by creation time
+            long time = System.currentTimeMillis();
+            results = airavataServerHandler.searchExperimentsByCreationTime(
+                    gatewayId, "TestUser" + TAG, time-10000, time+1000);
+            Assert.assertTrue(results.size()==3);
+            //with pagination
+            results = airavataServerHandler.searchExperimentsByCreationTimeWithPagination(
+                    gatewayId, "TestUser" + TAG, time-10000, time+1000, 2, 1);
+            Assert.assertTrue(results.size()==2);
+
+            //searching based on experiment state
+            ExperimentState experimentState = ExperimentState.findByValue(0);
+            results = airavataServerHandler.searchExperimentsByStatus(
+                    gatewayId, "TestUser" + TAG, experimentState);
+            Assert.assertTrue(results.size() > 0);
+            //with pagination
+            results = airavataServerHandler.searchExperimentsByStatusWithPagination(
+                    gatewayId, "TestUser" + TAG, experimentState, 2, 0);
+            Assert.assertTrue(results.size()==2);
+
+            //searching based on application
+            results = airavataServerHandler.searchExperimentsByApplication(
+                    gatewayId, "TestUser" + TAG, "Ech");
+            Assert.assertTrue(results.size() > 0);
+            //with pagination
+            results = airavataServerHandler.searchExperimentsByApplicationWithPagination(
+                    gatewayId, "TestUser" + TAG, "Ech", 2, 0);
+            Assert.assertTrue(results.size()==2);
+
+            //searching experiments by description
+            results = airavataServerHandler.searchExperimentsByDesc(
+                    gatewayId, "TestUser" + TAG, "exp");
+            Assert.assertTrue(results.size() > 0);
+            //with pagination
+            results = airavataServerHandler.searchExperimentsByDescWithPagination(
+                    gatewayId, "TestUser" + TAG, "exp", 2, 0);
+            Assert.assertTrue(results.size()==2);
+
+
+            //retrieving all experiments in project
+            List<Experiment> list = airavataServerHandler.getAllExperimentsInProject(projectId1);
+            Assert.assertTrue(list.size()==3);
+            //with pagination
+            list = airavataServerHandler.getAllExperimentsInProjectWithPagination(projectId1, 2, 1);
+            Assert.assertTrue(list.size()==2);
+
+            //getting all user experiments
+            list = airavataServerHandler.getAllUserExperiments(gatewayId, "TestUser" + TAG);
+            Assert.assertTrue(list.size() == 3);
+            //with pagination
+            list = airavataServerHandler.getAllUserExperimentsWithPagination(
+                    gatewayId, "TestUser" + TAG, 2, 0);
+            //testing time ordering
+            Assert.assertTrue(list.size()==2);
+            Experiment exp1 = list.get(0);
+            Experiment exp2 = list.get(1);
+            Assert.assertTrue(exp1.getCreationTime()-exp2.getCreationTime() > 0);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            Assert.fail();
+        }
+    }
+}
\ No newline at end of file


[09/19] airavata git commit: Changing Airavata API to support paginated result retrieval of Project and Experiment data

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/0a3d857b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
index 44f1e60..dd73b61 100644
--- a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
+++ b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
@@ -138,7 +138,7 @@ import org.slf4j.LoggerFactory;
      *   *
      *   * @param userName
      *   *    The Project Object described in the workspaceModel
-     *   *
+     *   * @deprecated Instead use getAllUserProjectsWithPagination
      * *
      * 
      * @param gatewayId
@@ -147,8 +147,36 @@ import org.slf4j.LoggerFactory;
     public List<org.apache.airavata.model.workspace.Project> getAllUserProjects(String gatewayId, String userName) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
 
     /**
+     *   * Get all Project by user with pagination. Results will be ordered based
+     *   * on creation time DESC
+     *   *
+     *   * @param gatewayId
+     *   *    The identifier for the requested gateway.
+     *   * @param userName
+     *   *    The identifier of the user
+     *   * @param limit
+     *   *    The amount results to be fetched
+     *   * @param offset
+     *   *    The starting point of the results to be fetched
+     * *
+     * 
+     * @param gatewayId
+     * @param userName
+     * @param limit
+     * @param offset
+     */
+    public List<org.apache.airavata.model.workspace.Project> getAllUserProjectsWithPagination(String gatewayId, String userName, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
      * Get all Project for user by project name
      * 
+     * @param gatewayId
+     *    The identifier for the requested gateway.
+     * @param userName
+     *    The identifier of the user
+     * @param projectName
+     *    The name of the project on which the results to be fetched
+     * @deprecated Instead use searchProjectsByProjectNameWithPagination
      * 
      * @param gatewayId
      * @param userName
@@ -157,8 +185,37 @@ import org.slf4j.LoggerFactory;
     public List<org.apache.airavata.model.workspace.Project> searchProjectsByProjectName(String gatewayId, String userName, String projectName) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
 
     /**
-     * Get all Project for user by project description
+     * Get all Project for user by project name with pagination.Results will be ordered based
+     * on creation time DESC
      * 
+     * @param gatewayId
+     *    The identifier for the requested gateway.
+     * @param userName
+     *    The identifier of the user
+     * @param projectName
+     *    The name of the project on which the results to be fetched
+     * @param limit
+     *    The amount results to be fetched
+     * @param offset
+     *    The starting point of the results to be fetched
+     * 
+     * @param gatewayId
+     * @param userName
+     * @param projectName
+     * @param limit
+     * @param offset
+     */
+    public List<org.apache.airavata.model.workspace.Project> searchProjectsByProjectNameWithPagination(String gatewayId, String userName, String projectName, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
+     * Get all Project for user by project description
+     * @param gatewayId
+     *    The identifier for the requested gateway.
+     * @param userName
+     *    The identifier of the user
+     * @param description
+     *    The description to be matched
+     * @deprecated Instead use searchProjectsByProjectDescWithPagination
      * 
      * @param gatewayId
      * @param userName
@@ -167,8 +224,40 @@ import org.slf4j.LoggerFactory;
     public List<org.apache.airavata.model.workspace.Project> searchProjectsByProjectDesc(String gatewayId, String userName, String description) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
 
     /**
+     * Search and get all Projects for user by project description with pagination. Results
+     * will be ordered based on creation time DESC
+     * 
+     * @param gatewayId
+     *    The identifier for the requested gateway.
+     * @param userName
+     *    The identifier of the user
+     * @param description
+     *    The description to be matched
+     * @param limit
+     *    The amount results to be fetched
+     * @param offset
+     *    The starting point of the results to be fetched
+     * 
+     * @param gatewayId
+     * @param userName
+     * @param description
+     * @param limit
+     * @param offset
+     */
+    public List<org.apache.airavata.model.workspace.Project> searchProjectsByProjectDescWithPagination(String gatewayId, String userName, String description, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
      * Search Experiments by experiment name
      * 
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param useNname
+     *       Username of the requested user
+     * @param expName
+     *       Experiment name to be matched
+     * @deprecated
+     *       Instead use searchExperimentsByNameWithPagination
+     * 
      * 
      * @param gatewayId
      * @param userName
@@ -177,8 +266,39 @@ import org.slf4j.LoggerFactory;
     public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByName(String gatewayId, String userName, String expName) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
 
     /**
+     * Search Experiments by experiment name with pagination. Results will be sorted
+     * based on creation time DESC
+     * 
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param expName
+     *       Experiment name to be matched
+     * @param limit
+     *       Amount of results to be fetched
+     * @param offset
+     *       The starting point of the results to be fetched
+     * 
+     * @param gatewayId
+     * @param userName
+     * @param expName
+     * @param limit
+     * @param offset
+     */
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByNameWithPagination(String gatewayId, String userName, String expName, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
      * Search Experiments by experiment name
      * 
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param description
+     *       Experiment description to be matched
+     * @deprecated
+     *       Instead use searchExperimentsByDescWithPagination
      * 
      * @param gatewayId
      * @param userName
@@ -187,8 +307,39 @@ import org.slf4j.LoggerFactory;
     public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByDesc(String gatewayId, String userName, String description) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
 
     /**
+     * Search Experiments by experiment name with pagination. Results will be sorted
+     * based on creation time DESC
+     * 
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param description
+     *       Experiment description to be matched
+     * @param limit
+     *       Amount of results to be fetched
+     * @param offset
+     *       The starting point of the results to be fetched
+     * 
+     * @param gatewayId
+     * @param userName
+     * @param description
+     * @param limit
+     * @param offset
+     */
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByDescWithPagination(String gatewayId, String userName, String description, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
      * Search Experiments by application id
      * 
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param applicationId
+     *       Application id to be matched
+     * @deprecated
+     *       Instead use searchExperimentsByApplicationWithPagination
      * 
      * @param gatewayId
      * @param userName
@@ -197,8 +348,39 @@ import org.slf4j.LoggerFactory;
     public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByApplication(String gatewayId, String userName, String applicationId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
 
     /**
+     * Search Experiments by application id with pagination. Results will be sorted
+     * based on creation time DESC
+     * 
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param applicationId
+     *       Application id to be matched
+     * @param limit
+     *       Amount of results to be fetched
+     * @param offset
+     *       The starting point of the results to be fetched
+     * 
+     * @param gatewayId
+     * @param userName
+     * @param applicationId
+     * @param limit
+     * @param offset
+     */
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByApplicationWithPagination(String gatewayId, String userName, String applicationId, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
      * Search Experiments by experiment status
      * 
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param experimentState
+     *       Experiement state to be matched
+     * @deprecated
+     *       Instead use searchExperimentsByStatusWithPagination
      * 
      * @param gatewayId
      * @param userName
@@ -207,8 +389,41 @@ import org.slf4j.LoggerFactory;
     public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByStatus(String gatewayId, String userName, org.apache.airavata.model.workspace.experiment.ExperimentState experimentState) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
 
     /**
-     * Search Experiments by experiment status
+     * Search Experiments by experiment status with pagination. Results will be sorted
+     * based on creation time DESC
      * 
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param experimentState
+     *       Experiement state to be matched
+     * @param limit
+     *       Amount of results to be fetched
+     * @param offset
+     *       The starting point of the results to be fetched
+     * 
+     * @param gatewayId
+     * @param userName
+     * @param experimentState
+     * @param limit
+     * @param offset
+     */
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByStatusWithPagination(String gatewayId, String userName, org.apache.airavata.model.workspace.experiment.ExperimentState experimentState, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
+     * Search Experiments by experiment creation time
+     * 
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param fromTime
+     *       Start time of the experiments creation time
+     * @param toTime
+     *       End time of the  experiement creation time
+     * @deprecated
+     *       Instead use searchExperimentsByCreationTimeWithPagination
      * 
      * @param gatewayId
      * @param userName
@@ -218,16 +433,69 @@ import org.slf4j.LoggerFactory;
     public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByCreationTime(String gatewayId, String userName, long fromTime, long toTime) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
 
     /**
+     * Search Experiments by experiment creation time with pagination. Results will be sorted
+     * based on creation time DESC
+     * 
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param userName
+     *       Username of the requested user
+     * @param fromTime
+     *       Start time of the experiments creation time
+     * @param toTime
+     *       End time of the  experiement creation time
+     * @param limit
+     *       Amount of results to be fetched
+     * @param offset
+     *       The starting point of the results to be fetched
+     * 
+     * @param gatewayId
+     * @param userName
+     * @param fromTime
+     * @param toTime
+     * @param limit
+     * @param offset
+     */
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByCreationTimeWithPagination(String gatewayId, String userName, long fromTime, long toTime, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
      * Get all Experiments within a Project
      * 
+     * @param projectId
+     *       Identifier of the project
+     * @deprecated
+     *       Instead use  getAllExperimentsInProjectWithPagination
      * 
      * @param projectId
      */
     public List<org.apache.airavata.model.workspace.experiment.Experiment> getAllExperimentsInProject(String projectId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.ProjectNotFoundException, org.apache.thrift.TException;
 
     /**
+     * Get all Experiments within project with pagination. Results will be sorted
+     * based on creation time DESC
+     * 
+     * @param projectId
+     *       Identifier of the project
+     * @param limit
+     *       Amount of results to be fetched
+     * @param offset
+     *       The starting point of the results to be fetched
+     * 
+     * @param projectId
+     * @param limit
+     * @param offset
+     */
+    public List<org.apache.airavata.model.workspace.experiment.Experiment> getAllExperimentsInProjectWithPagination(String projectId, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.ProjectNotFoundException, org.apache.thrift.TException;
+
+    /**
      * Get all Experiments by user
      * 
+     * @param gatewayId
+     *       Identifier of the requesting gateway
+     * @param userName
+     *       Username of the requested user
+     * @deprecated
+     *       Instead use getAllUserExperimentsWithPagination
      * 
      * @param gatewayId
      * @param userName
@@ -235,6 +503,26 @@ import org.slf4j.LoggerFactory;
     public List<org.apache.airavata.model.workspace.experiment.Experiment> getAllUserExperiments(String gatewayId, String userName) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
 
     /**
+     * Get all Experiments by user pagination. Results will be sorted
+     * based on creation time DESC
+     * 
+     * @param gatewayId
+     *       Identifier of the requesting gateway
+     * @param userName
+     *       Username of the requested user
+     * @param limit
+     *       Amount of results to be fetched
+     * @param offset
+     *       The starting point of the results to be fetched
+     * 
+     * @param gatewayId
+     * @param userName
+     * @param limit
+     * @param offset
+     */
+    public List<org.apache.airavata.model.workspace.experiment.Experiment> getAllUserExperimentsWithPagination(String gatewayId, String userName, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
+
+    /**
      * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
      *   but inferred from the authentication header. This experiment is just a persistent place holder. The client
      *   has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
@@ -1534,24 +1822,44 @@ import org.slf4j.LoggerFactory;
 
     public void getAllUserProjects(String gatewayId, String userName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
+    public void getAllUserProjectsWithPagination(String gatewayId, String userName, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
     public void searchProjectsByProjectName(String gatewayId, String userName, String projectName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
+    public void searchProjectsByProjectNameWithPagination(String gatewayId, String userName, String projectName, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
     public void searchProjectsByProjectDesc(String gatewayId, String userName, String description, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
+    public void searchProjectsByProjectDescWithPagination(String gatewayId, String userName, String description, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
     public void searchExperimentsByName(String gatewayId, String userName, String expName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
+    public void searchExperimentsByNameWithPagination(String gatewayId, String userName, String expName, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
     public void searchExperimentsByDesc(String gatewayId, String userName, String description, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
+    public void searchExperimentsByDescWithPagination(String gatewayId, String userName, String description, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
     public void searchExperimentsByApplication(String gatewayId, String userName, String applicationId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
+    public void searchExperimentsByApplicationWithPagination(String gatewayId, String userName, String applicationId, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
     public void searchExperimentsByStatus(String gatewayId, String userName, org.apache.airavata.model.workspace.experiment.ExperimentState experimentState, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
+    public void searchExperimentsByStatusWithPagination(String gatewayId, String userName, org.apache.airavata.model.workspace.experiment.ExperimentState experimentState, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
     public void searchExperimentsByCreationTime(String gatewayId, String userName, long fromTime, long toTime, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
+    public void searchExperimentsByCreationTimeWithPagination(String gatewayId, String userName, long fromTime, long toTime, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
     public void getAllExperimentsInProject(String projectId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
+    public void getAllExperimentsInProjectWithPagination(String projectId, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
     public void getAllUserExperiments(String gatewayId, String userName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
+    public void getAllUserExperimentsWithPagination(String gatewayId, String userName, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
     public void createExperiment(String gatewayId, org.apache.airavata.model.workspace.experiment.Experiment experiment, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void getExperiment(String airavataExperimentId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
@@ -2244,6 +2552,41 @@ import org.slf4j.LoggerFactory;
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getAllUserProjects failed: unknown result");
     }
 
+    public List<org.apache.airavata.model.workspace.Project> getAllUserProjectsWithPagination(String gatewayId, String userName, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_getAllUserProjectsWithPagination(gatewayId, userName, limit, offset);
+      return recv_getAllUserProjectsWithPagination();
+    }
+
+    public void send_getAllUserProjectsWithPagination(String gatewayId, String userName, int limit, int offset) throws org.apache.thrift.TException
+    {
+      getAllUserProjectsWithPagination_args args = new getAllUserProjectsWithPagination_args();
+      args.setGatewayId(gatewayId);
+      args.setUserName(userName);
+      args.setLimit(limit);
+      args.setOffset(offset);
+      sendBase("getAllUserProjectsWithPagination", args);
+    }
+
+    public List<org.apache.airavata.model.workspace.Project> recv_getAllUserProjectsWithPagination() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      getAllUserProjectsWithPagination_result result = new getAllUserProjectsWithPagination_result();
+      receiveBase(result, "getAllUserProjectsWithPagination");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getAllUserProjectsWithPagination failed: unknown result");
+    }
+
     public List<org.apache.airavata.model.workspace.Project> searchProjectsByProjectName(String gatewayId, String userName, String projectName) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
     {
       send_searchProjectsByProjectName(gatewayId, userName, projectName);
@@ -2278,6 +2621,42 @@ import org.slf4j.LoggerFactory;
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchProjectsByProjectName failed: unknown result");
     }
 
+    public List<org.apache.airavata.model.workspace.Project> searchProjectsByProjectNameWithPagination(String gatewayId, String userName, String projectName, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_searchProjectsByProjectNameWithPagination(gatewayId, userName, projectName, limit, offset);
+      return recv_searchProjectsByProjectNameWithPagination();
+    }
+
+    public void send_searchProjectsByProjectNameWithPagination(String gatewayId, String userName, String projectName, int limit, int offset) throws org.apache.thrift.TException
+    {
+      searchProjectsByProjectNameWithPagination_args args = new searchProjectsByProjectNameWithPagination_args();
+      args.setGatewayId(gatewayId);
+      args.setUserName(userName);
+      args.setProjectName(projectName);
+      args.setLimit(limit);
+      args.setOffset(offset);
+      sendBase("searchProjectsByProjectNameWithPagination", args);
+    }
+
+    public List<org.apache.airavata.model.workspace.Project> recv_searchProjectsByProjectNameWithPagination() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      searchProjectsByProjectNameWithPagination_result result = new searchProjectsByProjectNameWithPagination_result();
+      receiveBase(result, "searchProjectsByProjectNameWithPagination");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchProjectsByProjectNameWithPagination failed: unknown result");
+    }
+
     public List<org.apache.airavata.model.workspace.Project> searchProjectsByProjectDesc(String gatewayId, String userName, String description) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
     {
       send_searchProjectsByProjectDesc(gatewayId, userName, description);
@@ -2312,6 +2691,42 @@ import org.slf4j.LoggerFactory;
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchProjectsByProjectDesc failed: unknown result");
     }
 
+    public List<org.apache.airavata.model.workspace.Project> searchProjectsByProjectDescWithPagination(String gatewayId, String userName, String description, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_searchProjectsByProjectDescWithPagination(gatewayId, userName, description, limit, offset);
+      return recv_searchProjectsByProjectDescWithPagination();
+    }
+
+    public void send_searchProjectsByProjectDescWithPagination(String gatewayId, String userName, String description, int limit, int offset) throws org.apache.thrift.TException
+    {
+      searchProjectsByProjectDescWithPagination_args args = new searchProjectsByProjectDescWithPagination_args();
+      args.setGatewayId(gatewayId);
+      args.setUserName(userName);
+      args.setDescription(description);
+      args.setLimit(limit);
+      args.setOffset(offset);
+      sendBase("searchProjectsByProjectDescWithPagination", args);
+    }
+
+    public List<org.apache.airavata.model.workspace.Project> recv_searchProjectsByProjectDescWithPagination() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      searchProjectsByProjectDescWithPagination_result result = new searchProjectsByProjectDescWithPagination_result();
+      receiveBase(result, "searchProjectsByProjectDescWithPagination");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchProjectsByProjectDescWithPagination failed: unknown result");
+    }
+
     public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByName(String gatewayId, String userName, String expName) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
     {
       send_searchExperimentsByName(gatewayId, userName, expName);
@@ -2346,6 +2761,42 @@ import org.slf4j.LoggerFactory;
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchExperimentsByName failed: unknown result");
     }
 
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByNameWithPagination(String gatewayId, String userName, String expName, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_searchExperimentsByNameWithPagination(gatewayId, userName, expName, limit, offset);
+      return recv_searchExperimentsByNameWithPagination();
+    }
+
+    public void send_searchExperimentsByNameWithPagination(String gatewayId, String userName, String expName, int limit, int offset) throws org.apache.thrift.TException
+    {
+      searchExperimentsByNameWithPagination_args args = new searchExperimentsByNameWithPagination_args();
+      args.setGatewayId(gatewayId);
+      args.setUserName(userName);
+      args.setExpName(expName);
+      args.setLimit(limit);
+      args.setOffset(offset);
+      sendBase("searchExperimentsByNameWithPagination", args);
+    }
+
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> recv_searchExperimentsByNameWithPagination() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      searchExperimentsByNameWithPagination_result result = new searchExperimentsByNameWithPagination_result();
+      receiveBase(result, "searchExperimentsByNameWithPagination");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchExperimentsByNameWithPagination failed: unknown result");
+    }
+
     public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByDesc(String gatewayId, String userName, String description) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
     {
       send_searchExperimentsByDesc(gatewayId, userName, description);
@@ -2380,6 +2831,42 @@ import org.slf4j.LoggerFactory;
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchExperimentsByDesc failed: unknown result");
     }
 
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByDescWithPagination(String gatewayId, String userName, String description, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_searchExperimentsByDescWithPagination(gatewayId, userName, description, limit, offset);
+      return recv_searchExperimentsByDescWithPagination();
+    }
+
+    public void send_searchExperimentsByDescWithPagination(String gatewayId, String userName, String description, int limit, int offset) throws org.apache.thrift.TException
+    {
+      searchExperimentsByDescWithPagination_args args = new searchExperimentsByDescWithPagination_args();
+      args.setGatewayId(gatewayId);
+      args.setUserName(userName);
+      args.setDescription(description);
+      args.setLimit(limit);
+      args.setOffset(offset);
+      sendBase("searchExperimentsByDescWithPagination", args);
+    }
+
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> recv_searchExperimentsByDescWithPagination() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      searchExperimentsByDescWithPagination_result result = new searchExperimentsByDescWithPagination_result();
+      receiveBase(result, "searchExperimentsByDescWithPagination");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchExperimentsByDescWithPagination failed: unknown result");
+    }
+
     public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByApplication(String gatewayId, String userName, String applicationId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
     {
       send_searchExperimentsByApplication(gatewayId, userName, applicationId);
@@ -2414,6 +2901,42 @@ import org.slf4j.LoggerFactory;
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchExperimentsByApplication failed: unknown result");
     }
 
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByApplicationWithPagination(String gatewayId, String userName, String applicationId, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_searchExperimentsByApplicationWithPagination(gatewayId, userName, applicationId, limit, offset);
+      return recv_searchExperimentsByApplicationWithPagination();
+    }
+
+    public void send_searchExperimentsByApplicationWithPagination(String gatewayId, String userName, String applicationId, int limit, int offset) throws org.apache.thrift.TException
+    {
+      searchExperimentsByApplicationWithPagination_args args = new searchExperimentsByApplicationWithPagination_args();
+      args.setGatewayId(gatewayId);
+      args.setUserName(userName);
+      args.setApplicationId(applicationId);
+      args.setLimit(limit);
+      args.setOffset(offset);
+      sendBase("searchExperimentsByApplicationWithPagination", args);
+    }
+
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> recv_searchExperimentsByApplicationWithPagination() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      searchExperimentsByApplicationWithPagination_result result = new searchExperimentsByApplicationWithPagination_result();
+      receiveBase(result, "searchExperimentsByApplicationWithPagination");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchExperimentsByApplicationWithPagination failed: unknown result");
+    }
+
     public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByStatus(String gatewayId, String userName, org.apache.airavata.model.workspace.experiment.ExperimentState experimentState) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
     {
       send_searchExperimentsByStatus(gatewayId, userName, experimentState);
@@ -2448,6 +2971,42 @@ import org.slf4j.LoggerFactory;
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchExperimentsByStatus failed: unknown result");
     }
 
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByStatusWithPagination(String gatewayId, String userName, org.apache.airavata.model.workspace.experiment.ExperimentState experimentState, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_searchExperimentsByStatusWithPagination(gatewayId, userName, experimentState, limit, offset);
+      return recv_searchExperimentsByStatusWithPagination();
+    }
+
+    public void send_searchExperimentsByStatusWithPagination(String gatewayId, String userName, org.apache.airavata.model.workspace.experiment.ExperimentState experimentState, int limit, int offset) throws org.apache.thrift.TException
+    {
+      searchExperimentsByStatusWithPagination_args args = new searchExperimentsByStatusWithPagination_args();
+      args.setGatewayId(gatewayId);
+      args.setUserName(userName);
+      args.setExperimentState(experimentState);
+      args.setLimit(limit);
+      args.setOffset(offset);
+      sendBase("searchExperimentsByStatusWithPagination", args);
+    }
+
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> recv_searchExperimentsByStatusWithPagination() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      searchExperimentsByStatusWithPagination_result result = new searchExperimentsByStatusWithPagination_result();
+      receiveBase(result, "searchExperimentsByStatusWithPagination");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchExperimentsByStatusWithPagination failed: unknown result");
+    }
+
     public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByCreationTime(String gatewayId, String userName, long fromTime, long toTime) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
     {
       send_searchExperimentsByCreationTime(gatewayId, userName, fromTime, toTime);
@@ -2483,6 +3042,43 @@ import org.slf4j.LoggerFactory;
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchExperimentsByCreationTime failed: unknown result");
     }
 
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> searchExperimentsByCreationTimeWithPagination(String gatewayId, String userName, long fromTime, long toTime, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_searchExperimentsByCreationTimeWithPagination(gatewayId, userName, fromTime, toTime, limit, offset);
+      return recv_searchExperimentsByCreationTimeWithPagination();
+    }
+
+    public void send_searchExperimentsByCreationTimeWithPagination(String gatewayId, String userName, long fromTime, long toTime, int limit, int offset) throws org.apache.thrift.TException
+    {
+      searchExperimentsByCreationTimeWithPagination_args args = new searchExperimentsByCreationTimeWithPagination_args();
+      args.setGatewayId(gatewayId);
+      args.setUserName(userName);
+      args.setFromTime(fromTime);
+      args.setToTime(toTime);
+      args.setLimit(limit);
+      args.setOffset(offset);
+      sendBase("searchExperimentsByCreationTimeWithPagination", args);
+    }
+
+    public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> recv_searchExperimentsByCreationTimeWithPagination() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      searchExperimentsByCreationTimeWithPagination_result result = new searchExperimentsByCreationTimeWithPagination_result();
+      receiveBase(result, "searchExperimentsByCreationTimeWithPagination");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "searchExperimentsByCreationTimeWithPagination failed: unknown result");
+    }
+
     public List<org.apache.airavata.model.workspace.experiment.Experiment> getAllExperimentsInProject(String projectId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.ProjectNotFoundException, org.apache.thrift.TException
     {
       send_getAllExperimentsInProject(projectId);
@@ -2518,6 +3114,43 @@ import org.slf4j.LoggerFactory;
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getAllExperimentsInProject failed: unknown result");
     }
 
+    public List<org.apache.airavata.model.workspace.experiment.Experiment> getAllExperimentsInProjectWithPagination(String projectId, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.ProjectNotFoundException, org.apache.thrift.TException
+    {
+      send_getAllExperimentsInProjectWithPagination(projectId, limit, offset);
+      return recv_getAllExperimentsInProjectWithPagination();
+    }
+
+    public void send_getAllExperimentsInProjectWithPagination(String projectId, int limit, int offset) throws org.apache.thrift.TException
+    {
+      getAllExperimentsInProjectWithPagination_args args = new getAllExperimentsInProjectWithPagination_args();
+      args.setProjectId(projectId);
+      args.setLimit(limit);
+      args.setOffset(offset);
+      sendBase("getAllExperimentsInProjectWithPagination", args);
+    }
+
+    public List<org.apache.airavata.model.workspace.experiment.Experiment> recv_getAllExperimentsInProjectWithPagination() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.ProjectNotFoundException, org.apache.thrift.TException
+    {
+      getAllExperimentsInProjectWithPagination_result result = new getAllExperimentsInProjectWithPagination_result();
+      receiveBase(result, "getAllExperimentsInProjectWithPagination");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      if (result.pnfe != null) {
+        throw result.pnfe;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getAllExperimentsInProjectWithPagination failed: unknown result");
+    }
+
     public List<org.apache.airavata.model.workspace.experiment.Experiment> getAllUserExperiments(String gatewayId, String userName) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
     {
       send_getAllUserExperiments(gatewayId, userName);
@@ -2551,6 +3184,41 @@ import org.slf4j.LoggerFactory;
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getAllUserExperiments failed: unknown result");
     }
 
+    public List<org.apache.airavata.model.workspace.experiment.Experiment> getAllUserExperimentsWithPagination(String gatewayId, String userName, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      send_getAllUserExperimentsWithPagination(gatewayId, userName, limit, offset);
+      return recv_getAllUserExperimentsWithPagination();
+    }
+
+    public void send_getAllUserExperimentsWithPagination(String gatewayId, String userName, int limit, int offset) throws org.apache.thrift.TException
+    {
+      getAllUserExperimentsWithPagination_args args = new getAllUserExperimentsWithPagination_args();
+      args.setGatewayId(gatewayId);
+      args.setUserName(userName);
+      args.setLimit(limit);
+      args.setOffset(offset);
+      sendBase("getAllUserExperimentsWithPagination", args);
+    }
+
+    public List<org.apache.airavata.model.workspace.experiment.Experiment> recv_getAllUserExperimentsWithPagination() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
+    {
+      getAllUserExperimentsWithPagination_result result = new getAllUserExperimentsWithPagination_result();
+      receiveBase(result, "getAllUserExperimentsWithPagination");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getAllUserExperimentsWithPagination failed: unknown result");
+    }
+
     public String createExperiment(String gatewayId, org.apache.airavata.model.workspace.experiment.Experiment experiment) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException
     {
       send_createExperiment(gatewayId, experiment);
@@ -6053,6 +6721,47 @@ import org.slf4j.LoggerFactory;
       }
     }
 
+    public void getAllUserProjectsWithPagination(String gatewayId, String userName, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      getAllUserProjectsWithPagination_call method_call = new getAllUserProjectsWithPagination_call(gatewayId, userName, limit, offset, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class getAllUserProjectsWithPagination_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String gatewayId;
+      private String userName;
+      private int limit;
+      private int offset;
+      public getAllUserProjectsWithPagination_call(String gatewayId, String userName, int limit, int offset, 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.gatewayId = gatewayId;
+        this.userName = userName;
+        this.limit = limit;
+        this.offset = offset;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getAllUserProjectsWithPagination", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        getAllUserProjectsWithPagination_args args = new getAllUserProjectsWithPagination_args();
+        args.setGatewayId(gatewayId);
+        args.setUserName(userName);
+        args.setLimit(limit);
+        args.setOffset(offset);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public List<org.apache.airavata.model.workspace.Project> getResult() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_getAllUserProjectsWithPagination();
+      }
+    }
+
     public void searchProjectsByProjectName(String gatewayId, String userName, String projectName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
       searchProjectsByProjectName_call method_call = new searchProjectsByProjectName_call(gatewayId, userName, projectName, resultHandler, this, ___protocolFactory, ___transport);
@@ -6091,6 +6800,50 @@ import org.slf4j.LoggerFactory;
       }
     }
 
+    public void searchProjectsByProjectNameWithPagination(String gatewayId, String userName, String projectName, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      searchProjectsByProjectNameWithPagination_call method_call = new searchProjectsByProjectNameWithPagination_call(gatewayId, userName, projectName, limit, offset, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class searchProjectsByProjectNameWithPagination_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String gatewayId;
+      private String userName;
+      private String projectName;
+      private int limit;
+      private int offset;
+      public searchProjectsByProjectNameWithPagination_call(String gatewayId, String userName, String projectName, int limit, int offset, 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.gatewayId = gatewayId;
+        this.userName = userName;
+        this.projectName = projectName;
+        this.limit = limit;
+        this.offset = offset;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("searchProjectsByProjectNameWithPagination", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        searchProjectsByProjectNameWithPagination_args args = new searchProjectsByProjectNameWithPagination_args();
+        args.setGatewayId(gatewayId);
+        args.setUserName(userName);
+        args.setProjectName(projectName);
+        args.setLimit(limit);
+        args.setOffset(offset);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public List<org.apache.airavata.model.workspace.Project> getResult() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_searchProjectsByProjectNameWithPagination();
+      }
+    }
+
     public void searchProjectsByProjectDesc(String gatewayId, String userName, String description, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
       searchProjectsByProjectDesc_call method_call = new searchProjectsByProjectDesc_call(gatewayId, userName, description, resultHandler, this, ___protocolFactory, ___transport);
@@ -6129,6 +6882,50 @@ import org.slf4j.LoggerFactory;
       }
     }
 
+    public void searchProjectsByProjectDescWithPagination(String gatewayId, String userName, String description, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      searchProjectsByProjectDescWithPagination_call method_call = new searchProjectsByProjectDescWithPagination_call(gatewayId, userName, description, limit, offset, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class searchProjectsByProjectDescWithPagination_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String gatewayId;
+      private String userName;
+      private String description;
+      private int limit;
+      private int offset;
+      public searchProjectsByProjectDescWithPagination_call(String gatewayId, String userName, String description, int limit, int offset, 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.gatewayId = gatewayId;
+        this.userName = userName;
+        this.description = description;
+        this.limit = limit;
+        this.offset = offset;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("searchProjectsByProjectDescWithPagination", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        searchProjectsByProjectDescWithPagination_args args = new searchProjectsByProjectDescWithPagination_args();
+        args.setGatewayId(gatewayId);
+        args.setUserName(userName);
+        args.setDescription(description);
+        args.setLimit(limit);
+        args.setOffset(offset);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public List<org.apache.airavata.model.workspace.Project> getResult() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_searchProjectsByProjectDescWithPagination();
+      }
+    }
+
     public void searchExperimentsByName(String gatewayId, String userName, String expName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
       searchExperimentsByName_call method_call = new searchExperimentsByName_call(gatewayId, userName, expName, resultHandler, this, ___protocolFactory, ___transport);
@@ -6167,6 +6964,50 @@ import org.slf4j.LoggerFactory;
       }
     }
 
+    public void searchExperimentsByNameWithPagination(String gatewayId, String userName, String expName, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      searchExperimentsByNameWithPagination_call method_call = new searchExperimentsByNameWithPagination_call(gatewayId, userName, expName, limit, offset, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class searchExperimentsByNameWithPagination_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String gatewayId;
+      private String userName;
+      private String expName;
+      private int limit;
+      private int offset;
+      public searchExperimentsByNameWithPagination_call(String gatewayId, String userName, String expName, int limit, int offset, 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.gatewayId = gatewayId;
+        this.userName = userName;
+        this.expName = expName;
+        this.limit = limit;
+        this.offset = offset;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("searchExperimentsByNameWithPagination", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        searchExperimentsByNameWithPagination_args args = new searchExperimentsByNameWithPagination_args();
+        args.setGatewayId(gatewayId);
+        args.setUserName(userName);
+        args.setExpName(expName);
+        args.setLimit(limit);
+        args.setOffset(offset);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> getResult() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_searchExperimentsByNameWithPagination();
+      }
+    }
+
     public void searchExperimentsByDesc(String gatewayId, String userName, String description, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
       searchExperimentsByDesc_call method_call = new searchExperimentsByDesc_call(gatewayId, userName, description, resultHandler, this, ___protocolFactory, ___transport);
@@ -6205,6 +7046,50 @@ import org.slf4j.LoggerFactory;
       }
     }
 
+    public void searchExperimentsByDescWithPagination(String gatewayId, String userName, String description, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      searchExperimentsByDescWithPagination_call method_call = new searchExperimentsByDescWithPagination_call(gatewayId, userName, description, limit, offset, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class searchExperimentsByDescWithPagination_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String gatewayId;
+      private String userName;
+      private String description;
+      private int limit;
+      private int offset;
+      public searchExperimentsByDescWithPagination_call(String gatewayId, String userName, String description, int limit, int offset, 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.gatewayId = gatewayId;
+        this.userName = userName;
+        this.description = description;
+        this.limit = limit;
+        this.offset = offset;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("searchExperimentsByDescWithPagination", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        searchExperimentsByDescWithPagination_args args = new searchExperimentsByDescWithPagination_args();
+        args.setGatewayId(gatewayId);
+        args.setUserName(userName);
+        args.setDescription(description);
+        args.setLimit(limit);
+        args.setOffset(offset);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> getResult() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_searchExperimentsByDescWithPagination();
+      }
+    }
+
     public void searchExperimentsByApplication(String gatewayId, String userName, String applicationId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
       searchExperimentsByApplication_call method_call = new searchExperimentsByApplication_call(gatewayId, userName, applicationId, resultHandler, this, ___protocolFactory, ___transport);
@@ -6243,6 +7128,50 @@ import org.slf4j.LoggerFactory;
       }
     }
 
+    public void searchExperimentsByApplicationWithPagination(String gatewayId, String userName, String applicationId, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      searchExperimentsByApplicationWithPagination_call method_call = new searchExperimentsByApplicationWithPagination_call(gatewayId, userName, applicationId, limit, offset, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class searchExperimentsByApplicationWithPagination_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String gatewayId;
+      private String userName;
+      private String applicationId;
+      private int limit;
+      private int offset;
+      public searchExperimentsByApplicationWithPagination_call(String gatewayId, String userName, String applicationId, int limit, int offset, 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.gatewayId = gatewayId;
+        this.userName = userName;
+        this.applicationId = applicationId;
+        this.limit = limit;
+        this.offset = offset;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("searchExperimentsByApplicationWithPagination", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        searchExperimentsByApplicationWithPagination_args args = new searchExperimentsByApplicationWithPagination_args();
+        args.setGatewayId(gatewayId);
+        args.setUserName(userName);
+        args.setApplicationId(applicationId);
+        args.setLimit(limit);
+        args.setOffset(offset);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> getResult() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_searchExperimentsByApplicationWithPagination();
+      }
+    }
+
     public void searchExperimentsByStatus(String gatewayId, String userName, org.apache.airavata.model.workspace.experiment.ExperimentState experimentState, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
       searchExperimentsByStatus_call method_call = new searchExperimentsByStatus_call(gatewayId, userName, experimentState, resultHandler, this, ___protocolFactory, ___transport);
@@ -6281,6 +7210,50 @@ import org.slf4j.LoggerFactory;
       }
     }
 
+    public void searchExperimentsByStatusWithPagination(String gatewayId, String userName, org.apache.airavata.model.workspace.experiment.ExperimentState experimentState, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      searchExperimentsByStatusWithPagination_call method_call = new searchExperimentsByStatusWithPagination_call(gatewayId, userName, experimentState, limit, offset, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class searchExperimentsByStatusWithPagination_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String gatewayId;
+      private String userName;
+      private org.apache.airavata.model.workspace.experiment.ExperimentState experimentState;
+      private int limit;
+      private int offset;
+      public searchExperimentsByStatusWithPagination_call(String gatewayId, String userName, org.apache.airavata.model.workspace.experiment.ExperimentState experimentState, int limit, int offset, 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.gatewayId = gatewayId;
+        this.userName = userName;
+        this.experimentState = experimentState;
+        this.limit = limit;
+        this.offset = offset;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("searchExperimentsByStatusWithPagination", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        searchExperimentsByStatusWithPagination_args args = new searchExperimentsByStatusWithPagination_args();
+        args.setGatewayId(gatewayId);
+        args.setUserName(userName);
+        args.setExperimentState(experimentState);
+        args.setLimit(limit);
+        args.setOffset(offset);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> getResult() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_searchExperimentsByStatusWithPagination();
+      }
+    }
+
     public void searchExperimentsByCreationTime(String gatewayId, String userName, long fromTime, long toTime, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
       searchExperimentsByCreationTime_call method_call = new searchExperimentsByCreationTime_call(gatewayId, userName, fromTime, toTime, resultHandler, this, ___protocolFactory, ___transport);
@@ -6322,6 +7295,53 @@ import org.slf4j.LoggerFactory;
       }
     }
 
+    public void searchExperimentsByCreationTimeWithPagination(String gatewayId, String userName, long fromTime, long toTime, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      searchExperimentsByCreationTimeWithPagination_call method_call = new searchExperimentsByCreationTimeWithPagination_call(gatewayId, userName, fromTime, toTime, limit, offset, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class searchExperimentsByCreationTimeWithPagination_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String gatewayId;
+      private String userName;
+      private long fromTime;
+      private long toTime;
+      private int limit;
+      private int offset;
+      public searchExperimentsByCreationTimeWithPagination_call(String gatewayId, String userName, long fromTime, long toTime, int limit, int offset, 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.gatewayId = gatewayId;
+        this.userName = userName;
+        this.fromTime = fromTime;
+        this.toTime = toTime;
+        this.limit = limit;
+        this.offset = offset;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("searchExperimentsByCreationTimeWithPagination", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        searchExperimentsByCreationTimeWithPagination_args args = new searchExperimentsByCreationTimeWithPagination_args();
+        args.setGatewayId(gatewayId);
+        args.setUserName(userName);
+        args.setFromTime(fromTime);
+        args.setToTime(toTime);
+        args.setLimit(limit);
+        args.setOffset(offset);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public List<org.apache.airavata.model.workspace.experiment.ExperimentSummary> getResult() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_searchExperimentsByCreationTimeWithPagination();
+      }
+    }
+
     public void getAllExperimentsInProject(String projectId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
       getAllExperimentsInProject_call method_call = new getAllExperimentsInProject_call(projectId, resultHandler, this, ___protocolFactory, ___transport);
@@ -6354,6 +7374,44 @@ import org.slf4j.LoggerFactory;
       }
     }
 
+    public void getAllExperimentsInProjectWithPagination(String projectId, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      getAllExperimentsInProjectWithPagination_call method_call = new getAllExperimentsInProjectWithPagination_call(projectId, limit, offset, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class getAllExperimentsInProjectWithPagination_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String projectId;
+      private int limit;
+      private int offset;
+      public getAllExperimentsInProjectWithPagination_call(String projectId, int limit, int offset, 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.projectId = projectId;
+        this.limit = limit;
+        this.offset = offset;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getAllExperimentsInProjectWithPagination", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        getAllExperimentsInProjectWithPagination_args args = new getAllExperimentsInProjectWithPagination_args();
+        args.setProjectId(projectId);
+        args.setLimit(limit);
+        args.setOffset(offset);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public List<org.apache.airavata.model.workspace.experiment.Experiment> getResult() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.ProjectNotFoundException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_getAllExperimentsInProjectWithPagination();
+      }
+    }
+
     public void getAllUserExperiments(String gatewayId, String userName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
       getAllUserExperiments_call method_call = new getAllUserExperiments_call(gatewayId, userName, resultHandler, this, ___protocolFactory, ___transport);
@@ -6389,6 +7447,47 @@ import org.slf4j.LoggerFactory;
       }
     }
 
+    public void getAllUserExperimentsWithPagination(String gatewayId, String userName, int limit, int offset, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      getAllUserExperimentsWithPagination_call method_call = new getAllUserExperimentsWithPagination_call(gatewayId, userName, limit, offset, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class getAllUserExperimentsWithPagination_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String gatewayId;
+      private String userName;
+      private int limit;
+      private int offset;
+      public getAllUserExperimentsWithPagination_call(String gatewayId, String userName, int limit, int offset, 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.gatewayId = gatewayId;
+        this.userName = userName;
+        this.limit = limit;
+        this.offset = offset;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getAllUserExperimentsWithPagination", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        getAllUserExperimentsWithPagination_args args = new getAllUserExperimentsWithPagination_args();
+        args.setGatewayId(gatewayId);
+        args.setUserName(userName);
+        args.setLimit(limit);
+        args.setOffset(offset);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public List<org.apache.airavata.model.workspace.experiment.Experiment> getResult() throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_getAllUserExperimentsWithPagination();
+      }
+    }
+
     public void createExperiment(String gatewayId, org.apache.airavata.model.workspace.experiment.Experiment experiment, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
       createExperiment_call method_call = new createExperiment_call(gatewayId, experiment, resultHandler, this, ___protocolFactory, ___transport);
@@ -9514,15 +10613,25 @@ import org.slf4j.LoggerFactory;
       processMap.put("getProject", new getProject());
       processMap.put("deleteProject", new deleteProject());
       processMap.put("getAllUserProjects", new getAllUserProjects());
+      processMap.put("getAllUserProjectsWithPagination", new getAllUserProjectsWithPagination());
       processMap.put("searchProjectsByProjectName", new searchProjectsByProjectName());
+      processMap.put("searchProjectsByProjectNameWithPagination", new searchProjectsByProjectNameWithPagination());
       processMap.put("searchProjectsByProjectDesc", new searchProjectsByProjectDesc());
+      processMap.put("searchProjectsByProjectDescWithPagination", new searchProjectsByProjectDescWithPagination());
       processMap.put("searchExperimentsByName", new searchExperimentsByName());
+      processMap.put("searchExperimentsByNameWithPagination", new searchExperimentsByNameWithPagination());
       processMap.put("searchExperimentsByDesc", new searchExperimentsByDesc());
+      processMap.put("searchExperimentsByDescWithPagination", new searchExperimentsByDescWithPagination());
       processMap.put("searchExperimentsByApplication", new searchExperimentsByApplication());
+      processMap.put("searchExperimentsByApplicationWithPagination", new searchExperimentsByApplicationWithPagination());
       processMap.put("searchExperimentsByStatus", new searchExperimentsByStatus());
+      processMap.put("searchExperimentsByStatusWithPagination", new searchExperimentsByStatusWithPagination());
       processMap.put("searchExperimentsByCreationTime", new searchExperimentsByCreationTime());
+      processMap.put("searchExperimentsByCreationTimeWithPagination", new searchExperimentsByCreationTimeWithPagination());
       processMap.put("getAllExperimentsInProject", new getAllExperimentsInProject());
+      processMap.put("getAllExperimentsInProjectWithPagination", new getAllExperimentsInProjectWithPagination());
       processMap.put("getAllUserExperiments", new getAllUserExperiments());
+      processMap.put("getAllUserExperimentsWithPagination", new getAllUserExperimentsWithPagination());
       processMap.put("createExperiment", new createExperiment());
       processMap.put("getExperiment", new getExperiment());
       processMap.put("updateExperiment", new updateExperiment());
@@ -10047,6 +11156,34 @@ import org.slf4j.LoggerFactory;
       }
     }
 
+    public static class getAllUserProjectsWithPagination<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getAllUserProjectsWithPagination_args> {
+      public getAllUserProjectsWithPagination() {
+        super("getAllUserProjectsWithPagination");
+      }
+
+      public getAllUserProjectsWithPagination_args getEmptyArgsInstance() {
+        return new getAllUserProjectsWithPagination_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getAllUserProjectsWithPagination_result getResult(I iface, getAllUserProjectsWithPagination_args args) throws org.apache.thrift.TException {
+        getAllUserProjectsWithPagination_result resul

<TRUNCATED>

[18/19] airavata git commit: Merge branch 'master' of https://github.com/apache/airavata

Posted by sm...@apache.org.
Merge branch 'master' of https://github.com/apache/airavata


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

Branch: refs/heads/master
Commit: 5d940d347f7f16164cef4a0f6456ec9845016574
Parents: 478b397 7c1c632
Author: Supun Nakandala <su...@gmail.com>
Authored: Thu Apr 30 21:17:33 2015 +0530
Committer: Supun Nakandala <su...@gmail.com>
Committed: Thu Apr 30 21:17:33 2015 +0530

----------------------------------------------------------------------
 .../main/resources/samples/createExperiment.py  |  74 ++++++++
 .../src/main/resources/samples/createProject.py |  70 ++++++++
 .../samples/getAllApplicationInterfaces.py      |  64 +++++++
 .../samples/getAllComputeResourceNames.py       |  64 +++++++
 .../src/main/resources/samples/getProjects.py   |  64 +++++++
 .../client/samples/CreateLaunchExperiment.java  |   8 +-
 .../airavata/gfac/core/cpi/BetterGfacImpl.java  | 175 +++++++++++--------
 .../gfac/core/utils/OutHandlerWorker.java       |   1 +
 .../core/impl/GFACPassiveJobSubmitter.java      |  31 ++--
 9 files changed, 451 insertions(+), 100 deletions(-)
----------------------------------------------------------------------



[16/19] airavata git commit: Merge branch 'master' of https://github.com/apache/airavata

Posted by sm...@apache.org.
Merge branch 'master' of https://github.com/apache/airavata


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

Branch: refs/heads/master
Commit: 464e95554c709e08f8ba6188fcffaf4bfdc29ec6
Parents: 6e94c35 135607c
Author: Supun Nakandala <su...@gmail.com>
Authored: Wed Apr 29 15:58:16 2015 +0530
Committer: Supun Nakandala <su...@gmail.com>
Committed: Wed Apr 29 15:58:16 2015 +0530

----------------------------------------------------------------------
 .../airavata/gfac/server/GfacServerHandler.java |  5 +-
 .../airavata/gfac/core/cpi/BetterGfacImpl.java  | 11 +++-
 .../gfac/monitor/email/EmailBasedMonitor.java   | 56 ++++++++++++--------
 .../monitor/email/parser/UGEEmailParser.java    | 42 ++++++++++++---
 .../server/OrchestratorServerHandler.java       |  3 ++
 5 files changed, 85 insertions(+), 32 deletions(-)
----------------------------------------------------------------------



[06/19] airavata git commit: Changing Airavata API to support paginated result retrieval of Project and Experiment data

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/0a3d857b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
index b39c56f..faf8c0f 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
@@ -114,51 +114,101 @@ class AiravataHandler : virtual public AiravataIf {
     printf("getAllUserProjects\n");
   }
 
+  void getAllUserProjectsWithPagination(std::vector< ::apache::airavata::model::workspace::Project> & _return, const std::string& gatewayId, const std::string& userName, const int32_t limit, const int32_t offset) {
+    // Your implementation goes here
+    printf("getAllUserProjectsWithPagination\n");
+  }
+
   void searchProjectsByProjectName(std::vector< ::apache::airavata::model::workspace::Project> & _return, const std::string& gatewayId, const std::string& userName, const std::string& projectName) {
     // Your implementation goes here
     printf("searchProjectsByProjectName\n");
   }
 
+  void searchProjectsByProjectNameWithPagination(std::vector< ::apache::airavata::model::workspace::Project> & _return, const std::string& gatewayId, const std::string& userName, const std::string& projectName, const int32_t limit, const int32_t offset) {
+    // Your implementation goes here
+    printf("searchProjectsByProjectNameWithPagination\n");
+  }
+
   void searchProjectsByProjectDesc(std::vector< ::apache::airavata::model::workspace::Project> & _return, const std::string& gatewayId, const std::string& userName, const std::string& description) {
     // Your implementation goes here
     printf("searchProjectsByProjectDesc\n");
   }
 
+  void searchProjectsByProjectDescWithPagination(std::vector< ::apache::airavata::model::workspace::Project> & _return, const std::string& gatewayId, const std::string& userName, const std::string& description, const int32_t limit, const int32_t offset) {
+    // Your implementation goes here
+    printf("searchProjectsByProjectDescWithPagination\n");
+  }
+
   void searchExperimentsByName(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const std::string& expName) {
     // Your implementation goes here
     printf("searchExperimentsByName\n");
   }
 
+  void searchExperimentsByNameWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const std::string& expName, const int32_t limit, const int32_t offset) {
+    // Your implementation goes here
+    printf("searchExperimentsByNameWithPagination\n");
+  }
+
   void searchExperimentsByDesc(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const std::string& description) {
     // Your implementation goes here
     printf("searchExperimentsByDesc\n");
   }
 
+  void searchExperimentsByDescWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const std::string& description, const int32_t limit, const int32_t offset) {
+    // Your implementation goes here
+    printf("searchExperimentsByDescWithPagination\n");
+  }
+
   void searchExperimentsByApplication(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const std::string& applicationId) {
     // Your implementation goes here
     printf("searchExperimentsByApplication\n");
   }
 
+  void searchExperimentsByApplicationWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const std::string& applicationId, const int32_t limit, const int32_t offset) {
+    // Your implementation goes here
+    printf("searchExperimentsByApplicationWithPagination\n");
+  }
+
   void searchExperimentsByStatus(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const  ::apache::airavata::model::workspace::experiment::ExperimentState::type experimentState) {
     // Your implementation goes here
     printf("searchExperimentsByStatus\n");
   }
 
+  void searchExperimentsByStatusWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const  ::apache::airavata::model::workspace::experiment::ExperimentState::type experimentState, const int32_t limit, const int32_t offset) {
+    // Your implementation goes here
+    printf("searchExperimentsByStatusWithPagination\n");
+  }
+
   void searchExperimentsByCreationTime(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const int64_t fromTime, const int64_t toTime) {
     // Your implementation goes here
     printf("searchExperimentsByCreationTime\n");
   }
 
+  void searchExperimentsByCreationTimeWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const int64_t fromTime, const int64_t toTime, const int32_t limit, const int32_t offset) {
+    // Your implementation goes here
+    printf("searchExperimentsByCreationTimeWithPagination\n");
+  }
+
   void getAllExperimentsInProject(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & _return, const std::string& projectId) {
     // Your implementation goes here
     printf("getAllExperimentsInProject\n");
   }
 
+  void getAllExperimentsInProjectWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & _return, const std::string& projectId, const int32_t limit, const int32_t offset) {
+    // Your implementation goes here
+    printf("getAllExperimentsInProjectWithPagination\n");
+  }
+
   void getAllUserExperiments(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & _return, const std::string& gatewayId, const std::string& userName) {
     // Your implementation goes here
     printf("getAllUserExperiments\n");
   }
 
+  void getAllUserExperimentsWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & _return, const std::string& gatewayId, const std::string& userName, const int32_t limit, const int32_t offset) {
+    // Your implementation goes here
+    printf("getAllUserExperimentsWithPagination\n");
+  }
+
   void createExperiment(std::string& _return, const std::string& gatewayId, const  ::apache::airavata::model::workspace::experiment::Experiment& experiment) {
     // Your implementation goes here
     printf("createExperiment\n");


[11/19] airavata git commit: Adding registry script files as resources in airavata-api-server module for testing

Posted by sm...@apache.org.
Adding registry script files as resources in airavata-api-server module for testing


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

Branch: refs/heads/master
Commit: c6ee5ce892a560432dbe800debebeeeb58dbb0ba
Parents: 0a3d857
Author: Supun Nakandala <su...@gmail.com>
Authored: Mon Apr 27 20:57:47 2015 +0530
Committer: Supun Nakandala <su...@gmail.com>
Committed: Mon Apr 27 20:57:47 2015 +0530

----------------------------------------------------------------------
 .../src/main/resources/registry-derby.sql       | 391 ++++++++++++++++++
 .../src/main/resources/registry-mysql.sql       | 392 +++++++++++++++++++
 2 files changed, 783 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/c6ee5ce8/airavata-api/airavata-api-server/src/main/resources/registry-derby.sql
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/resources/registry-derby.sql b/airavata-api/airavata-api-server/src/main/resources/registry-derby.sql
new file mode 100644
index 0000000..7ab3755
--- /dev/null
+++ b/airavata-api/airavata-api-server/src/main/resources/registry-derby.sql
@@ -0,0 +1,391 @@
+/*
+ *
+ * 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.
+ *
+ */
+CREATE TABLE GATEWAY
+(
+        GATEWAY_ID VARCHAR (255),
+        GATEWAY_NAME VARCHAR(255),
+	      DOMAIN VARCHAR(255),
+	      EMAIL_ADDRESS VARCHAR(255),
+        PRIMARY KEY (GATEWAY_ID)
+);
+
+CREATE TABLE CONFIGURATION
+(
+        CONFIG_KEY VARCHAR(255),
+        CONFIG_VAL VARCHAR(255),
+        EXPIRE_DATE TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+        CATEGORY_ID VARCHAR (255),
+        PRIMARY KEY(CONFIG_KEY, CONFIG_VAL, CATEGORY_ID)
+);
+
+INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL, EXPIRE_DATE, CATEGORY_ID) VALUES('registry.version', '0.15', CURRENT_TIMESTAMP ,'SYSTEM');
+
+CREATE TABLE USERS
+(
+        USER_NAME VARCHAR(255),
+        PASSWORD VARCHAR(255),
+        PRIMARY KEY(USER_NAME)
+);
+
+CREATE TABLE GATEWAY_WORKER
+(
+        GATEWAY_ID VARCHAR(255),
+        USER_NAME VARCHAR(255),
+        PRIMARY KEY (GATEWAY_ID, USER_NAME),
+        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
+        FOREIGN KEY (USER_NAME) REFERENCES USERS(USER_NAME) ON DELETE CASCADE
+);
+
+CREATE TABLE PROJECT
+(
+         GATEWAY_ID VARCHAR(255),
+         USER_NAME VARCHAR(255) NOT NULL,
+         PROJECT_ID VARCHAR(255),
+         PROJECT_NAME VARCHAR(255) NOT NULL,
+         DESCRIPTION VARCHAR(255),
+         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+         PRIMARY KEY (PROJECT_ID),
+         FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
+         FOREIGN KEY (USER_NAME) REFERENCES USERS(USER_NAME) ON DELETE CASCADE
+);
+
+CREATE TABLE PROJECT_USER
+(
+    PROJECT_ID VARCHAR(255),
+    USER_NAME VARCHAR(255),
+    PRIMARY KEY (PROJECT_ID,USER_NAME),
+    FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID) ON DELETE CASCADE,
+    FOREIGN KEY (USER_NAME) REFERENCES USERS(USER_NAME) ON DELETE CASCADE
+);
+
+CREATE TABLE EXPERIMENT
+(
+        EXPERIMENT_ID VARCHAR(255),
+        GATEWAY_ID VARCHAR(255),
+        EXECUTION_USER VARCHAR(255) NOT NULL,
+        PROJECT_ID VARCHAR(255) NOT NULL,
+        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+        EXPERIMENT_NAME VARCHAR(255) NOT NULL,
+        EXPERIMENT_DESCRIPTION VARCHAR(255),
+        APPLICATION_ID VARCHAR(255),
+        APPLICATION_VERSION VARCHAR(255),
+        WORKFLOW_TEMPLATE_ID VARCHAR(255),
+        WORKFLOW_TEMPLATE_VERSION VARCHAR(255),
+        WORKFLOW_EXECUTION_ID VARCHAR(255),
+        ALLOW_NOTIFICATION SMALLINT,
+        GATEWAY_EXECUTION_ID VARCHAR(255),
+        PRIMARY KEY(EXPERIMENT_ID),
+        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
+        FOREIGN KEY (EXECUTION_USER) REFERENCES USERS(USER_NAME) ON DELETE CASCADE,
+        FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE EXPERIMENT_INPUT
+(
+        EXPERIMENT_ID VARCHAR(255),
+        INPUT_KEY VARCHAR(255) NOT NULL,
+        DATA_TYPE VARCHAR(255),
+        METADATA VARCHAR(255),
+        APP_ARGUMENT VARCHAR(255),
+        STANDARD_INPUT SMALLINT,
+        USER_FRIENDLY_DESC VARCHAR(255),
+        VALUE CLOB,
+        INPUT_ORDER INTEGER,
+        IS_REQUIRED SMALLINT,
+        REQUIRED_TO_COMMANDLINE SMALLINT,
+        DATA_STAGED SMALLINT,
+        PRIMARY KEY(EXPERIMENT_ID,INPUT_KEY),
+        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE EXPERIMENT_OUTPUT
+(
+        EXPERIMENT_ID VARCHAR(255),
+        OUTPUT_KEY VARCHAR(255) NOT NULL,
+        DATA_TYPE VARCHAR(255),
+        VALUE CLOB,
+        IS_REQUIRED SMALLINT,
+        REQUIRED_TO_COMMANDLINE SMALLINT,
+        DATA_MOVEMENT SMALLINT,
+        DATA_NAME_LOCATION VARCHAR(255),
+        SEARCH_QUERY VARCHAR(255),
+        APP_ARGUMENT VARCHAR(255),
+        PRIMARY KEY(EXPERIMENT_ID,OUTPUT_KEY),
+        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+);
+
+
+CREATE TABLE WORKFLOW_NODE_DETAIL
+(
+        EXPERIMENT_ID VARCHAR(255) NOT NULL,
+        NODE_INSTANCE_ID VARCHAR(255),
+        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+        NODE_NAME VARCHAR(255) NOT NULL,
+        EXECUTION_UNIT VARCHAR(255) NOT NULL,
+        EXECUTION_UNIT_DATA VARCHAR(255),
+        PRIMARY KEY(NODE_INSTANCE_ID),
+        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE TASK_DETAIL
+(
+        TASK_ID VARCHAR(255),
+        NODE_INSTANCE_ID VARCHAR(255),
+        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+        APPLICATION_ID VARCHAR(255),
+        APPLICATION_VERSION VARCHAR(255),
+        APPLICATION_DEPLOYMENT_ID VARCHAR(255),
+        ALLOW_NOTIFICATION SMALLINT,
+        PRIMARY KEY(TASK_ID),
+        FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE NOTIFICATION_EMAIL
+(
+  EMAIL_ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+  EXPERIMENT_ID VARCHAR(255),
+  TASK_ID VARCHAR(255),
+  EMAIL_ADDRESS VARCHAR(255),
+  PRIMARY KEY(EMAIL_ID),
+  FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
+  FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE ERROR_DETAIL
+(
+         ERROR_ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+         EXPERIMENT_ID VARCHAR(255),
+         TASK_ID VARCHAR(255),
+         NODE_INSTANCE_ID VARCHAR(255),
+         JOB_ID VARCHAR(255),
+         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+         ACTUAL_ERROR_MESSAGE CLOB,
+         USER_FRIEDNLY_ERROR_MSG VARCHAR(255),
+         TRANSIENT_OR_PERSISTENT SMALLINT,
+         ERROR_CATEGORY VARCHAR(255),
+         CORRECTIVE_ACTION VARCHAR(255),
+         ACTIONABLE_GROUP VARCHAR(255),
+         PRIMARY KEY(ERROR_ID),
+         FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
+         FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE,
+         FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE APPLICATION_INPUT
+(
+        TASK_ID VARCHAR(255),
+        INPUT_KEY VARCHAR(255) NOT NULL,
+        DATA_TYPE VARCHAR(255),
+        METADATA VARCHAR(255),
+        APP_ARGUMENT VARCHAR(255),
+        STANDARD_INPUT SMALLINT,
+        USER_FRIENDLY_DESC VARCHAR(255),
+        VALUE CLOB,
+        INPUT_ORDER INTEGER,
+        IS_REQUIRED SMALLINT,
+        REQUIRED_TO_COMMANDLINE SMALLINT,
+        DATA_STAGED SMALLINT,
+        PRIMARY KEY(TASK_ID,INPUT_KEY),
+        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE APPLICATION_OUTPUT
+(
+        TASK_ID VARCHAR(255),
+        OUTPUT_KEY VARCHAR(255) NOT NULL,
+        DATA_TYPE VARCHAR(255),
+        VALUE CLOB,
+        IS_REQUIRED SMALLINT,
+        REQUIRED_TO_COMMANDLINE SMALLINT,
+        DATA_MOVEMENT SMALLINT,
+        DATA_NAME_LOCATION VARCHAR(255),
+        SEARCH_QUERY VARCHAR(255),
+        APP_ARGUMENT VARCHAR(255),
+        PRIMARY KEY(TASK_ID,OUTPUT_KEY),
+        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE NODE_INPUT
+(
+       NODE_INSTANCE_ID VARCHAR(255),
+       INPUT_KEY VARCHAR(255) NOT NULL,
+       DATA_TYPE VARCHAR(255),
+       METADATA VARCHAR(255),
+       APP_ARGUMENT VARCHAR(255),
+       STANDARD_INPUT SMALLINT,
+       USER_FRIENDLY_DESC VARCHAR(255),
+       VALUE VARCHAR(255),
+       INPUT_ORDER INTEGER,
+       IS_REQUIRED SMALLINT,
+       REQUIRED_TO_COMMANDLINE SMALLINT,
+       DATA_STAGED SMALLINT,
+       PRIMARY KEY(NODE_INSTANCE_ID,INPUT_KEY),
+       FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE NODE_OUTPUT
+(
+       NODE_INSTANCE_ID VARCHAR(255),
+       OUTPUT_KEY VARCHAR(255) NOT NULL,
+       DATA_TYPE VARCHAR(255),
+       VALUE VARCHAR(255),
+       IS_REQUIRED SMALLINT,
+       REQUIRED_TO_COMMANDLINE SMALLINT,
+       DATA_MOVEMENT SMALLINT,
+       DATA_NAME_LOCATION VARCHAR(255),
+       SEARCH_QUERY VARCHAR(255),
+       APP_ARGUMENT VARCHAR(255),
+       PRIMARY KEY(NODE_INSTANCE_ID,OUTPUT_KEY),
+       FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE JOB_DETAIL
+(
+        JOB_ID VARCHAR(255),
+        TASK_ID VARCHAR(255),
+        JOB_DESCRIPTION CLOB NOT NULL,
+        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+        COMPUTE_RESOURCE_CONSUMED VARCHAR(255),
+        JOBNAME VARCHAR (255),
+        WORKING_DIR VARCHAR(255),
+        PRIMARY KEY (TASK_ID, JOB_ID),
+        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE DATA_TRANSFER_DETAIL
+(
+        TRANSFER_ID VARCHAR(255),
+        TASK_ID VARCHAR(255),
+        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+        TRANSFER_DESC VARCHAR(255) NOT NULL,
+        PRIMARY KEY(TRANSFER_ID),
+        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE STATUS
+(
+        STATUS_ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+        EXPERIMENT_ID VARCHAR(255),
+        NODE_INSTANCE_ID VARCHAR(255),
+        TRANSFER_ID VARCHAR(255),
+        TASK_ID VARCHAR(255),
+        JOB_ID VARCHAR(255),
+        STATE VARCHAR(255),
+        STATUS_UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+        STATUS_TYPE VARCHAR(255),
+        PRIMARY KEY(STATUS_ID),
+        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
+        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE,
+        FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE,
+        FOREIGN KEY (TRANSFER_ID) REFERENCES DATA_TRANSFER_DETAIL(TRANSFER_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE CONFIG_DATA
+(
+        EXPERIMENT_ID VARCHAR(255),
+        AIRAVATA_AUTO_SCHEDULE SMALLINT NOT NULL,
+        OVERRIDE_MANUAL_SCHEDULE_PARAMS SMALLINT NOT NULL,
+        SHARE_EXPERIMENT SMALLINT,
+        USER_DN VARCHAR(255),
+        GENERATE_CERT SMALLINT,
+        PRIMARY KEY(EXPERIMENT_ID)
+);
+
+CREATE TABLE COMPUTATIONAL_RESOURCE_SCHEDULING
+(
+        RESOURCE_SCHEDULING_ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+        EXPERIMENT_ID VARCHAR(255),
+        TASK_ID VARCHAR(255),
+        RESOURCE_HOST_ID VARCHAR(255),
+        CPU_COUNT INTEGER,
+        NODE_COUNT INTEGER,
+        NO_OF_THREADS INTEGER,
+        QUEUE_NAME VARCHAR(255),
+        WALLTIME_LIMIT INTEGER,
+        JOB_START_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+        TOTAL_PHYSICAL_MEMORY INTEGER,
+        COMPUTATIONAL_PROJECT_ACCOUNT VARCHAR(255),
+        CHESSIS_NAME VARCHAR(255),
+        PRIMARY KEY(RESOURCE_SCHEDULING_ID),
+        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
+        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE ADVANCE_INPUT_DATA_HANDLING
+(
+       INPUT_DATA_HANDLING_ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+       EXPERIMENT_ID VARCHAR(255),
+       TASK_ID VARCHAR(255),
+       WORKING_DIR_PARENT VARCHAR(255),
+       UNIQUE_WORKING_DIR VARCHAR(255),
+       STAGE_INPUT_FILES_TO_WORKING_DIR SMALLINT,
+       CLEAN_AFTER_JOB SMALLINT,
+       PRIMARY KEY(INPUT_DATA_HANDLING_ID),
+       FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
+       FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE ADVANCE_OUTPUT_DATA_HANDLING
+(
+       OUTPUT_DATA_HANDLING_ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+       EXPERIMENT_ID VARCHAR(255),
+       TASK_ID VARCHAR(255),
+       OUTPUT_DATA_DIR VARCHAR(255),
+       DATA_REG_URL VARCHAR (255),
+       PERSIST_OUTPUT_DATA SMALLINT,
+       PRIMARY KEY(OUTPUT_DATA_HANDLING_ID),
+       FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
+       FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE QOS_PARAM
+(
+        QOS_ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+        EXPERIMENT_ID VARCHAR(255),
+        TASK_ID VARCHAR(255),
+        START_EXECUTION_AT VARCHAR(255),
+        EXECUTE_BEFORE VARCHAR(255),
+        NO_OF_RETRIES INTEGER,
+        PRIMARY KEY(QOS_ID),
+        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
+        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE COMMUNITY_USER
+(
+        GATEWAY_ID VARCHAR(256) NOT NULL,
+        COMMUNITY_USER_NAME VARCHAR(256) NOT NULL,
+        TOKEN_ID VARCHAR(256) NOT NULL,
+        COMMUNITY_USER_EMAIL VARCHAR(256) NOT NULL,
+        PRIMARY KEY (GATEWAY_ID, COMMUNITY_USER_NAME, TOKEN_ID)
+);
+
+CREATE TABLE CREDENTIALS
+(
+        GATEWAY_ID VARCHAR(256) NOT NULL,
+        TOKEN_ID VARCHAR(256) NOT NULL,
+        CREDENTIAL BLOB NOT NULL,
+        PORTAL_USER_ID VARCHAR(256) NOT NULL,
+        TIME_PERSISTED TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+        PRIMARY KEY (GATEWAY_ID, TOKEN_ID)
+);
+
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/c6ee5ce8/airavata-api/airavata-api-server/src/main/resources/registry-mysql.sql
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/resources/registry-mysql.sql b/airavata-api/airavata-api-server/src/main/resources/registry-mysql.sql
new file mode 100644
index 0000000..14d7fc8
--- /dev/null
+++ b/airavata-api/airavata-api-server/src/main/resources/registry-mysql.sql
@@ -0,0 +1,392 @@
+/*
+ *
+ * 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.
+ *
+ */
+CREATE TABLE GATEWAY
+(
+        GATEWAY_ID VARCHAR(255),
+        GATEWAY_NAME VARCHAR(255),
+	      DOMAIN VARCHAR(255),
+	      EMAIL_ADDRESS VARCHAR(255),
+        PRIMARY KEY (GATEWAY_ID)
+);
+
+CREATE TABLE CONFIGURATION
+(
+        CONFIG_KEY VARCHAR(255),
+        CONFIG_VAL VARCHAR(255),
+        EXPIRE_DATE TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+        CATEGORY_ID VARCHAR (255),
+        PRIMARY KEY(CONFIG_KEY, CONFIG_VAL, CATEGORY_ID)
+);
+
+INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL, EXPIRE_DATE, CATEGORY_ID) VALUES('registry.version', '0.15', CURRENT_TIMESTAMP ,'SYSTEM');
+
+CREATE TABLE USERS
+(
+        USER_NAME VARCHAR(255),
+        PASSWORD VARCHAR(255),
+        PRIMARY KEY(USER_NAME)
+);
+
+CREATE TABLE GATEWAY_WORKER
+(
+        GATEWAY_ID VARCHAR(255),
+        USER_NAME VARCHAR(255),
+        PRIMARY KEY (GATEWAY_ID, USER_NAME),
+        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
+        FOREIGN KEY (USER_NAME) REFERENCES USERS(USER_NAME) ON DELETE CASCADE
+);
+
+CREATE TABLE PROJECT
+(
+         GATEWAY_ID VARCHAR(255),
+         USER_NAME VARCHAR(255),
+         PROJECT_NAME VARCHAR(255) NOT NULL,
+         PROJECT_ID VARCHAR(255),
+         DESCRIPTION VARCHAR(255),
+         CREATION_TIME TIMESTAMP DEFAULT NOW(),
+         PRIMARY KEY (PROJECT_ID),
+         FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
+         FOREIGN KEY (USER_NAME) REFERENCES USERS(USER_NAME) ON DELETE CASCADE
+);
+
+CREATE TABLE PROJECT_USER
+(
+    PROJECT_ID VARCHAR(255),
+    USER_NAME VARCHAR(255),
+    PRIMARY KEY (PROJECT_ID,USER_NAME),
+    FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID) ON DELETE CASCADE,
+    FOREIGN KEY (USER_NAME) REFERENCES USERS(USER_NAME) ON DELETE CASCADE
+);
+
+CREATE TABLE EXPERIMENT
+(
+        EXPERIMENT_ID VARCHAR(255),
+        GATEWAY_ID VARCHAR(255),
+        EXECUTION_USER VARCHAR(255) NOT NULL,
+        PROJECT_ID VARCHAR(255) NOT NULL,
+        CREATION_TIME TIMESTAMP DEFAULT NOW(),
+        EXPERIMENT_NAME VARCHAR(255) NOT NULL,
+        EXPERIMENT_DESCRIPTION VARCHAR(255),
+        APPLICATION_ID VARCHAR(255),
+        APPLICATION_VERSION VARCHAR(255),
+        WORKFLOW_TEMPLATE_ID VARCHAR(255),
+        WORKFLOW_TEMPLATE_VERSION VARCHAR(255),
+        WORKFLOW_EXECUTION_ID VARCHAR(255),
+        ALLOW_NOTIFICATION SMALLINT,
+        GATEWAY_EXECUTION_ID VARCHAR(255),
+        PRIMARY KEY(EXPERIMENT_ID),
+        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
+        FOREIGN KEY (EXECUTION_USER) REFERENCES USERS(USER_NAME) ON DELETE CASCADE,
+        FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE EXPERIMENT_INPUT
+(
+        EXPERIMENT_ID VARCHAR(255),
+        INPUT_KEY VARCHAR(255) NOT NULL,
+        DATA_TYPE VARCHAR(255),
+        APP_ARGUMENT VARCHAR(255),
+        STANDARD_INPUT SMALLINT,
+        USER_FRIENDLY_DESC VARCHAR(255),
+        METADATA VARCHAR(255),
+        VALUE LONGTEXT,
+        INPUT_ORDER INTEGER,
+        IS_REQUIRED SMALLINT,
+        REQUIRED_TO_COMMANDLINE SMALLINT,
+        DATA_STAGED SMALLINT,
+        PRIMARY KEY(EXPERIMENT_ID,INPUT_KEY),
+        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE EXPERIMENT_OUTPUT
+(
+        EXPERIMENT_ID VARCHAR(255),
+        OUTPUT_KEY VARCHAR(255) NOT NULL,
+        DATA_TYPE VARCHAR(255),
+        VALUE LONGTEXT,
+        IS_REQUIRED SMALLINT,
+        REQUIRED_TO_COMMANDLINE SMALLINT,
+        DATA_MOVEMENT SMALLINT,
+        DATA_NAME_LOCATION VARCHAR(255),
+        SEARCH_QUERY VARCHAR(255),
+        APP_ARGUMENT VARCHAR(255),
+        PRIMARY KEY(EXPERIMENT_ID,OUTPUT_KEY),
+        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE WORKFLOW_NODE_DETAIL
+(
+        EXPERIMENT_ID VARCHAR(255) NOT NULL,
+        NODE_INSTANCE_ID VARCHAR(255),
+        CREATION_TIME TIMESTAMP DEFAULT NOW(),
+        NODE_NAME VARCHAR(255) NOT NULL,
+        EXECUTION_UNIT VARCHAR(255) NOT NULL,
+        EXECUTION_UNIT_DATA VARCHAR(255),
+        PRIMARY KEY(NODE_INSTANCE_ID),
+        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE TASK_DETAIL
+(
+        TASK_ID VARCHAR(255),
+        NODE_INSTANCE_ID VARCHAR(255),
+        CREATION_TIME TIMESTAMP DEFAULT NOW(),
+        APPLICATION_ID VARCHAR(255),
+        APPLICATION_VERSION VARCHAR(255),
+        APPLICATION_DEPLOYMENT_ID VARCHAR(255),
+        ALLOW_NOTIFICATION SMALLINT,
+        PRIMARY KEY(TASK_ID),
+        FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE NOTIFICATION_EMAIL
+(
+  EMAIL_ID INTEGER NOT NULL AUTO_INCREMENT,
+  EXPERIMENT_ID VARCHAR(255),
+  TASK_ID VARCHAR(255),
+  EMAIL_ADDRESS VARCHAR(255),
+  PRIMARY KEY(EMAIL_ID),
+  FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
+  FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE APPLICATION_INPUT
+(
+        TASK_ID VARCHAR(255),
+        INPUT_KEY VARCHAR(255) NOT NULL,
+        DATA_TYPE VARCHAR(255),
+        APP_ARGUMENT VARCHAR(255),
+        STANDARD_INPUT SMALLINT,
+        USER_FRIENDLY_DESC VARCHAR(255),
+        METADATA VARCHAR(255),
+        VALUE LONGTEXT,
+        INPUT_ORDER INTEGER,
+        IS_REQUIRED SMALLINT,
+        REQUIRED_TO_COMMANDLINE SMALLINT,
+        DATA_STAGED SMALLINT,
+        PRIMARY KEY(TASK_ID,INPUT_KEY),
+        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE APPLICATION_OUTPUT
+(
+        TASK_ID VARCHAR(255),
+        OUTPUT_KEY VARCHAR(255) NOT NULL,
+        DATA_TYPE VARCHAR(255),
+        VALUE LONGTEXT,
+        DATA_MOVEMENT SMALLINT,
+        IS_REQUIRED SMALLINT,
+        REQUIRED_TO_COMMANDLINE SMALLINT,
+        DATA_NAME_LOCATION VARCHAR(255),
+        SEARCH_QUERY VARCHAR(255),
+        APP_ARGUMENT VARCHAR(255),
+        PRIMARY KEY(TASK_ID,OUTPUT_KEY),
+        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE NODE_INPUT
+(
+       NODE_INSTANCE_ID VARCHAR(255),
+       INPUT_KEY VARCHAR(255) NOT NULL,
+       DATA_TYPE VARCHAR(255),
+       APP_ARGUMENT VARCHAR(255),
+       STANDARD_INPUT SMALLINT,
+       USER_FRIENDLY_DESC VARCHAR(255),
+       METADATA VARCHAR(255),
+       VALUE VARCHAR(255),
+       INPUT_ORDER INTEGER,
+       IS_REQUIRED SMALLINT,
+       REQUIRED_TO_COMMANDLINE SMALLINT,
+       DATA_STAGED SMALLINT,
+       PRIMARY KEY(NODE_INSTANCE_ID,INPUT_KEY),
+       FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE NODE_OUTPUT
+(
+       NODE_INSTANCE_ID VARCHAR(255),
+       OUTPUT_KEY VARCHAR(255) NOT NULL,
+       DATA_TYPE VARCHAR(255),
+       VALUE VARCHAR(255),
+       IS_REQUIRED SMALLINT,
+       REQUIRED_TO_COMMANDLINE SMALLINT,
+       DATA_MOVEMENT SMALLINT,
+       DATA_NAME_LOCATION VARCHAR(255),
+       SEARCH_QUERY VARCHAR(255),
+       APP_ARGUMENT VARCHAR(255),
+       PRIMARY KEY(NODE_INSTANCE_ID,OUTPUT_KEY),
+       FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE JOB_DETAIL
+(
+        JOB_ID VARCHAR(255),
+        TASK_ID VARCHAR(255),
+        JOB_DESCRIPTION LONGTEXT NOT NULL,
+        CREATION_TIME TIMESTAMP DEFAULT NOW(),
+        COMPUTE_RESOURCE_CONSUMED VARCHAR(255),
+        JOBNAME VARCHAR (255),
+        WORKING_DIR VARCHAR(255),
+        PRIMARY KEY (TASK_ID, JOB_ID),
+        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE DATA_TRANSFER_DETAIL
+(
+        TRANSFER_ID VARCHAR(255),
+        TASK_ID VARCHAR(255),
+        CREATION_TIME TIMESTAMP DEFAULT NOW(),
+        TRANSFER_DESC VARCHAR(255) NOT NULL,
+        PRIMARY KEY(TRANSFER_ID),
+        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE ERROR_DETAIL
+(
+         ERROR_ID INTEGER NOT NULL AUTO_INCREMENT,
+         EXPERIMENT_ID VARCHAR(255),
+         TASK_ID VARCHAR(255),
+         NODE_INSTANCE_ID VARCHAR(255),
+         JOB_ID VARCHAR(255),
+         CREATION_TIME TIMESTAMP DEFAULT NOW(),
+         ACTUAL_ERROR_MESSAGE LONGTEXT,
+         USER_FRIEDNLY_ERROR_MSG VARCHAR(255),
+         TRANSIENT_OR_PERSISTENT SMALLINT,
+         ERROR_CATEGORY VARCHAR(255),
+         CORRECTIVE_ACTION VARCHAR(255),
+         ACTIONABLE_GROUP VARCHAR(255),
+         PRIMARY KEY(ERROR_ID),
+         FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
+         FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE,
+         FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE STATUS
+(
+        STATUS_ID INTEGER NOT NULL AUTO_INCREMENT,
+        EXPERIMENT_ID VARCHAR(255),
+        NODE_INSTANCE_ID VARCHAR(255),
+        TRANSFER_ID VARCHAR(255),
+        TASK_ID VARCHAR(255),
+        JOB_ID VARCHAR(255),
+        STATE VARCHAR(255),
+        STATUS_UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE now(),
+        STATUS_TYPE VARCHAR(255),
+        PRIMARY KEY(STATUS_ID),
+        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
+        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE,
+        FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE,
+        FOREIGN KEY (TRANSFER_ID) REFERENCES DATA_TRANSFER_DETAIL(TRANSFER_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE CONFIG_DATA
+(
+        EXPERIMENT_ID VARCHAR(255),
+        AIRAVATA_AUTO_SCHEDULE SMALLINT NOT NULL,
+        OVERRIDE_MANUAL_SCHEDULE_PARAMS SMALLINT NOT NULL,
+        SHARE_EXPERIMENT SMALLINT,
+        USER_DN VARCHAR(255),
+        GENERATE_CERT SMALLINT,
+        PRIMARY KEY(EXPERIMENT_ID),
+        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+
+);
+
+CREATE TABLE COMPUTATIONAL_RESOURCE_SCHEDULING
+(
+        RESOURCE_SCHEDULING_ID INTEGER NOT NULL AUTO_INCREMENT,
+        EXPERIMENT_ID VARCHAR(255),
+        TASK_ID VARCHAR(255),
+        RESOURCE_HOST_ID VARCHAR(255),
+        CPU_COUNT INTEGER,
+        NODE_COUNT INTEGER,
+        NO_OF_THREADS INTEGER,
+        QUEUE_NAME VARCHAR(255),
+        WALLTIME_LIMIT INTEGER,
+        JOB_START_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+        TOTAL_PHYSICAL_MEMORY INTEGER,
+        COMPUTATIONAL_PROJECT_ACCOUNT VARCHAR(255),
+        CHESSIS_NAME VARCHAR(255),
+        PRIMARY KEY(RESOURCE_SCHEDULING_ID),
+        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
+        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE ADVANCE_INPUT_DATA_HANDLING
+(
+       INPUT_DATA_HANDLING_ID INTEGER NOT NULL AUTO_INCREMENT,
+       EXPERIMENT_ID VARCHAR(255),
+       TASK_ID VARCHAR(255),
+       WORKING_DIR_PARENT VARCHAR(255),
+       UNIQUE_WORKING_DIR VARCHAR(255),
+       STAGE_INPUT_FILES_TO_WORKING_DIR SMALLINT,
+       CLEAN_AFTER_JOB SMALLINT,
+       PRIMARY KEY(INPUT_DATA_HANDLING_ID),
+       FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
+       FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE ADVANCE_OUTPUT_DATA_HANDLING
+(
+       OUTPUT_DATA_HANDLING_ID INTEGER NOT NULL AUTO_INCREMENT,
+       EXPERIMENT_ID VARCHAR(255),
+       TASK_ID VARCHAR(255),
+       OUTPUT_DATA_DIR VARCHAR(255),
+       DATA_REG_URL VARCHAR (255),
+       PERSIST_OUTPUT_DATA SMALLINT,
+       PRIMARY KEY(OUTPUT_DATA_HANDLING_ID),
+       FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
+       FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE QOS_PARAM
+(
+        QOS_ID INTEGER NOT NULL AUTO_INCREMENT,
+        EXPERIMENT_ID VARCHAR(255),
+        TASK_ID VARCHAR(255),
+        START_EXECUTION_AT VARCHAR(255),
+        EXECUTE_BEFORE VARCHAR(255),
+        NO_OF_RETRIES INTEGER,
+        PRIMARY KEY(QOS_ID),
+        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
+        FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE COMMUNITY_USER
+(
+        GATEWAY_ID VARCHAR(256) NOT NULL,
+        COMMUNITY_USER_NAME VARCHAR(256) NOT NULL,
+        TOKEN_ID VARCHAR(256) NOT NULL,
+        COMMUNITY_USER_EMAIL VARCHAR(256) NOT NULL,
+        PRIMARY KEY (GATEWAY_ID, COMMUNITY_USER_NAME, TOKEN_ID)
+);
+
+CREATE TABLE CREDENTIALS
+(
+        GATEWAY_ID VARCHAR(256) NOT NULL,
+        TOKEN_ID VARCHAR(256) NOT NULL,
+        CREDENTIAL BLOB NOT NULL,
+        PORTAL_USER_ID VARCHAR(256) NOT NULL,
+        TIME_PERSISTED TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
+        PRIMARY KEY (GATEWAY_ID, TOKEN_ID)
+);
+
+


[13/19] airavata git commit: updating AiravataServerHandlerTest

Posted by sm...@apache.org.
updating AiravataServerHandlerTest


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

Branch: refs/heads/master
Commit: 0b572c28208f0d185cafb9f15fd617752f2517d9
Parents: 7bf5fc1
Author: Supun Nakandala <su...@gmail.com>
Authored: Mon Apr 27 22:53:51 2015 +0530
Committer: Supun Nakandala <su...@gmail.com>
Committed: Mon Apr 27 22:53:51 2015 +0530

----------------------------------------------------------------------
 .../api/server/handler/AiravataServerHandlerTest.java        | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/0b572c28/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/AiravataServerHandlerTest.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/AiravataServerHandlerTest.java b/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/AiravataServerHandlerTest.java
index 799f8e9..1094563 100644
--- a/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/AiravataServerHandlerTest.java
+++ b/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/AiravataServerHandlerTest.java
@@ -44,7 +44,7 @@ public class AiravataServerHandlerTest {
     private final static Logger logger = LoggerFactory.getLogger(AiravataServerHandlerTest.class);
 
     private static AiravataServerHandler airavataServerHandler;
-    private static String gatewayId = "default";
+    private static String gatewayId = "php_reference_gateway";
 
     @BeforeClass
     public static void setupBeforeClass() throws Exception{
@@ -272,7 +272,7 @@ public class AiravataServerHandlerTest {
             ExperimentState experimentState = ExperimentState.findByValue(0);
             results = airavataServerHandler.searchExperimentsByStatus(
                     gatewayId, "TestUser" + TAG, experimentState);
-            Assert.assertTrue(results.size() > 0);
+            Assert.assertTrue(results.size() == 3);
             //with pagination
             results = airavataServerHandler.searchExperimentsByStatusWithPagination(
                     gatewayId, "TestUser" + TAG, experimentState, 2, 0);
@@ -281,7 +281,7 @@ public class AiravataServerHandlerTest {
             //searching based on application
             results = airavataServerHandler.searchExperimentsByApplication(
                     gatewayId, "TestUser" + TAG, "Ech");
-            Assert.assertTrue(results.size() > 0);
+            Assert.assertTrue(results.size() == 3);
             //with pagination
             results = airavataServerHandler.searchExperimentsByApplicationWithPagination(
                     gatewayId, "TestUser" + TAG, "Ech", 2, 0);
@@ -290,7 +290,7 @@ public class AiravataServerHandlerTest {
             //searching experiments by description
             results = airavataServerHandler.searchExperimentsByDesc(
                     gatewayId, "TestUser" + TAG, "exp");
-            Assert.assertTrue(results.size() > 0);
+            Assert.assertTrue(results.size() == 3);
             //with pagination
             results = airavataServerHandler.searchExperimentsByDescWithPagination(
                     gatewayId, "TestUser" + TAG, "exp", 2, 0);


[02/19] airavata git commit: Changing Airavata API to support paginated result retrieval of Project and Experiment data

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/0a3d857b/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/airavataAPI.thrift b/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
index b1f644b..7f027f5 100644
--- a/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
+++ b/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
@@ -190,7 +190,7 @@ service Airavata {
    *
    * @param userName
    *    The Project Object described in the workspaceModel
-   *
+   * @deprecated Instead use getAllUserProjectsWithPagination
  **/
   list<workspaceModel.Project> getAllUserProjects (1: required string gatewayId,
                                                    2: required string userName)
@@ -198,10 +198,38 @@ service Airavata {
                 2: airavataErrors.AiravataClientException ace,
                 3: airavataErrors.AiravataSystemException ase)
 
+ /**
+   * Get all Project by user with pagination. Results will be ordered based
+   * on creation time DESC
+   *
+   * @param gatewayId
+   *    The identifier for the requested gateway.
+   * @param userName
+   *    The identifier of the user
+   * @param limit
+   *    The amount results to be fetched
+   * @param offset
+   *    The starting point of the results to be fetched
+ **/
+  list<workspaceModel.Project> getAllUserProjectsWithPagination (1: required string gatewayId,
+                                                   2: required string userName,
+                                                   3: required i32 limit,
+                                                   4: required i32 offset)
+        throws (1: airavataErrors.InvalidRequestException ire,
+                2: airavataErrors.AiravataClientException ace,
+                3: airavataErrors.AiravataSystemException ase)
+
   /**
-     * Get all Project for user by project name
-     *
-    */
+   * Get all Project for user by project name
+   *
+   * @param gatewayId
+   *    The identifier for the requested gateway.
+   * @param userName
+   *    The identifier of the user
+   * @param projectName
+   *    The name of the project on which the results to be fetched
+   * @deprecated Instead use searchProjectsByProjectNameWithPagination
+   */
   list<workspaceModel.Project> searchProjectsByProjectName (1: required string gatewayId,
                         2: required string userName, 3: required string projectName)
           throws (1: airavataErrors.InvalidRequestException ire,
@@ -209,8 +237,36 @@ service Airavata {
                   3: airavataErrors.AiravataSystemException ase)
 
   /**
+   * Get all Project for user by project name with pagination.Results will be ordered based
+   * on creation time DESC
+   *
+   * @param gatewayId
+   *    The identifier for the requested gateway.
+   * @param userName
+   *    The identifier of the user
+   * @param projectName
+   *    The name of the project on which the results to be fetched
+   * @param limit
+   *    The amount results to be fetched
+   * @param offset
+   *    The starting point of the results to be fetched
+  */
+  list<workspaceModel.Project> searchProjectsByProjectNameWithPagination (1: required string gatewayId,
+                        2: required string userName, 3: required string projectName,4: required i32 limit,
+                        5: required i32 offset)
+          throws (1: airavataErrors.InvalidRequestException ire,
+                  2: airavataErrors.AiravataClientException ace,
+                  3: airavataErrors.AiravataSystemException ase)
+
+  /**
     * Get all Project for user by project description
-    *
+    * @param gatewayId
+    *    The identifier for the requested gateway.
+    * @param userName
+    *    The identifier of the user
+    * @param description
+    *    The description to be matched
+    * @deprecated Instead use searchProjectsByProjectDescWithPagination
   */
   list<workspaceModel.Project> searchProjectsByProjectDesc (1: required string gatewayId,
                         2: required string userName, 3: required string description)
@@ -218,10 +274,41 @@ service Airavata {
                     2: airavataErrors.AiravataClientException ace,
                     3: airavataErrors.AiravataSystemException ase)
 
+  /**
+    * Search and get all Projects for user by project description with pagination. Results
+    * will be ordered based on creation time DESC
+    *
+    * @param gatewayId
+    *    The identifier for the requested gateway.
+    * @param userName
+    *    The identifier of the user
+    * @param description
+    *    The description to be matched
+    * @param limit
+    *    The amount results to be fetched
+    * @param offset
+    *    The starting point of the results to be fetched
+   */
+  list<workspaceModel.Project> searchProjectsByProjectDescWithPagination (1: required string gatewayId,
+                        2: required string userName, 3: required string description, 4: required i32 limit,
+                        5: required i32 offset)
+            throws (1: airavataErrors.InvalidRequestException ire,
+                    2: airavataErrors.AiravataClientException ace,
+                    3: airavataErrors.AiravataSystemException ase)
+
 
   /**
-       * Search Experiments by experiment name
-       *
+    * Search Experiments by experiment name
+    *
+    * @param gatewayId
+    *       Identifier of the requested gateway
+    * @param useNname
+    *       Username of the requested user
+    * @param expName
+    *       Experiment name to be matched
+    * @deprecated
+    *       Instead use searchExperimentsByNameWithPagination
+    *
     */
   list<experimentModel.ExperimentSummary> searchExperimentsByName (1: required string gatewayId,
                           2: required string userName, 3: required string expName)
@@ -230,8 +317,38 @@ service Airavata {
                     3: airavataErrors.AiravataSystemException ase)
 
   /**
-       * Search Experiments by experiment name
-       *
+    * Search Experiments by experiment name with pagination. Results will be sorted
+    * based on creation time DESC
+    *
+    * @param gatewayId
+    *       Identifier of the requested gateway
+    * @param userName
+    *       Username of the requested user
+    * @param expName
+    *       Experiment name to be matched
+    * @param limit
+    *       Amount of results to be fetched
+    * @param offset
+    *       The starting point of the results to be fetched
+    */
+  list<experimentModel.ExperimentSummary> searchExperimentsByNameWithPagination (1: required string gatewayId,
+                          2: required string userName, 3: required string expName, 4: required i32 limit,
+                          5: required i32 offset)
+            throws (1: airavataErrors.InvalidRequestException ire,
+                    2: airavataErrors.AiravataClientException ace,
+                    3: airavataErrors.AiravataSystemException ase)
+
+  /**
+    * Search Experiments by experiment name
+    *
+    * @param gatewayId
+    *       Identifier of the requested gateway
+    * @param userName
+    *       Username of the requested user
+    * @param description
+    *       Experiment description to be matched
+    * @deprecated
+    *       Instead use searchExperimentsByDescWithPagination
   */
   list<experimentModel.ExperimentSummary> searchExperimentsByDesc (1: required string gatewayId,
                             2: required string userName, 3: required string description)
@@ -240,18 +357,77 @@ service Airavata {
                       3: airavataErrors.AiravataSystemException ase)
 
   /**
-       * Search Experiments by application id
-       *
-  */
+    * Search Experiments by experiment name with pagination. Results will be sorted
+    * based on creation time DESC
+    *
+    * @param gatewayId
+    *       Identifier of the requested gateway
+    * @param userName
+    *       Username of the requested user
+    * @param description
+    *       Experiment description to be matched
+    * @param limit
+    *       Amount of results to be fetched
+    * @param offset
+    *       The starting point of the results to be fetched
+    */
+  list<experimentModel.ExperimentSummary> searchExperimentsByDescWithPagination (1: required string gatewayId,
+                            2: required string userName, 3: required string description, 4: required i32 limit,
+                            5: required i32 offset)
+              throws (1: airavataErrors.InvalidRequestException ire,
+                      2: airavataErrors.AiravataClientException ace,
+                      3: airavataErrors.AiravataSystemException ase)
+
+
+  /**
+   * Search Experiments by application id
+   *
+   * @param gatewayId
+   *       Identifier of the requested gateway
+   * @param userName
+   *       Username of the requested user
+   * @param applicationId
+   *       Application id to be matched
+   * @deprecated
+   *       Instead use searchExperimentsByApplicationWithPagination
+   */
   list<experimentModel.ExperimentSummary> searchExperimentsByApplication (1: required string gatewayId,
                              2: required string userName, 3: required string applicationId)
               throws (1: airavataErrors.InvalidRequestException ire,
                       2: airavataErrors.AiravataClientException ace,
                       3: airavataErrors.AiravataSystemException ase)
-
-    /**
-         * Search Experiments by experiment status
-         *
+  /**
+   * Search Experiments by application id with pagination. Results will be sorted
+   * based on creation time DESC
+   *
+   * @param gatewayId
+   *       Identifier of the requested gateway
+   * @param userName
+   *       Username of the requested user
+   * @param applicationId
+   *       Application id to be matched
+   * @param limit
+   *       Amount of results to be fetched
+   * @param offset
+   *       The starting point of the results to be fetched
+   */
+  list<experimentModel.ExperimentSummary> searchExperimentsByApplicationWithPagination (1: required string gatewayId,
+                             2: required string userName, 3: required string applicationId, 4: required i32 limit,
+                             5: required i32 offset)
+              throws (1: airavataErrors.InvalidRequestException ire,
+                      2: airavataErrors.AiravataClientException ace,
+                      3: airavataErrors.AiravataSystemException ase)
+   /**
+    * Search Experiments by experiment status
+    *
+    * @param gatewayId
+    *       Identifier of the requested gateway
+    * @param userName
+    *       Username of the requested user
+    * @param experimentState
+    *       Experiement state to be matched
+    * @deprecated
+    *       Instead use searchExperimentsByStatusWithPagination
     */
     list<experimentModel.ExperimentSummary> searchExperimentsByStatus (1: required string gatewayId,
                             2: required string userName, 3: required experimentModel.ExperimentState experimentState)
@@ -259,10 +435,42 @@ service Airavata {
                         2: airavataErrors.AiravataClientException ace,
                         3: airavataErrors.AiravataSystemException ase)
 
-    /**
-         * Search Experiments by experiment status
-         *
-    */
+  /**
+   * Search Experiments by experiment status with pagination. Results will be sorted
+   * based on creation time DESC
+   *
+   * @param gatewayId
+   *       Identifier of the requested gateway
+   * @param userName
+   *       Username of the requested user
+   * @param experimentState
+   *       Experiement state to be matched
+   * @param limit
+   *       Amount of results to be fetched
+   * @param offset
+   *       The starting point of the results to be fetched
+   */
+    list<experimentModel.ExperimentSummary> searchExperimentsByStatusWithPagination (1: required string gatewayId,
+                            2: required string userName, 3: required experimentModel.ExperimentState experimentState,
+                            4: required i32 limit, 5: required i32 offset)
+                throws (1: airavataErrors.InvalidRequestException ire,
+                        2: airavataErrors.AiravataClientException ace,
+                        3: airavataErrors.AiravataSystemException ase)
+
+  /**
+   * Search Experiments by experiment creation time
+   *
+   * @param gatewayId
+   *       Identifier of the requested gateway
+   * @param userName
+   *       Username of the requested user
+   * @param fromTime
+   *       Start time of the experiments creation time
+   * @param toTime
+   *       End time of the  experiement creation time
+   * @deprecated
+   *       Instead use searchExperimentsByCreationTimeWithPagination
+   */
     list<experimentModel.ExperimentSummary> searchExperimentsByCreationTime (1: required string gatewayId,
                             2: required string userName, 3: required i64 fromTime, 4: required i64 toTime)
                 throws (1: airavataErrors.InvalidRequestException ire,
@@ -270,9 +478,37 @@ service Airavata {
                         3: airavataErrors.AiravataSystemException ase)
 
   /**
-     * Get all Experiments within a Project
-     *
-  */
+   * Search Experiments by experiment creation time with pagination. Results will be sorted
+   * based on creation time DESC
+   *
+   * @param gatewayId
+   *       Identifier of the requested gateway
+   * @param userName
+   *       Username of the requested user
+   * @param fromTime
+   *       Start time of the experiments creation time
+   * @param toTime
+   *       End time of the  experiement creation time
+   * @param limit
+   *       Amount of results to be fetched
+   * @param offset
+   *       The starting point of the results to be fetched
+   */
+    list<experimentModel.ExperimentSummary> searchExperimentsByCreationTimeWithPagination (1: required string gatewayId,
+                            2: required string userName, 3: required i64 fromTime, 4: required i64 toTime,
+                            5: required i32 limit, 6: required i32 offset)
+                throws (1: airavataErrors.InvalidRequestException ire,
+                        2: airavataErrors.AiravataClientException ace,
+                        3: airavataErrors.AiravataSystemException ase)
+
+   /**
+    * Get all Experiments within a Project
+    *
+    * @param projectId
+    *       Identifier of the project
+    * @deprecated
+    *       Instead use  getAllExperimentsInProjectWithPagination
+    */
   list<experimentModel.Experiment> getAllExperimentsInProject(1: required string projectId)
           throws (1: airavataErrors.InvalidRequestException ire,
                   2: airavataErrors.AiravataClientException ace,
@@ -280,9 +516,34 @@ service Airavata {
                   4: airavataErrors.ProjectNotFoundException pnfe)
 
   /**
-     * Get all Experiments by user
-     *
-  */
+   * Get all Experiments within project with pagination. Results will be sorted
+   * based on creation time DESC
+   *
+   * @param projectId
+   *       Identifier of the project
+   * @param limit
+   *       Amount of results to be fetched
+   * @param offset
+   *       The starting point of the results to be fetched
+   */
+  list<experimentModel.Experiment> getAllExperimentsInProjectWithPagination(1: required string projectId,
+                  2: required i32 limit, 3: required i32 offset)
+          throws (1: airavataErrors.InvalidRequestException ire,
+                  2: airavataErrors.AiravataClientException ace,
+                  3: airavataErrors.AiravataSystemException ase,
+                  4: airavataErrors.ProjectNotFoundException pnfe)
+
+
+  /**
+   * Get all Experiments by user
+   *
+   * @param gatewayId
+   *       Identifier of the requesting gateway
+   * @param userName
+   *       Username of the requested user
+   * @deprecated
+   *       Instead use getAllUserExperimentsWithPagination
+   */
   list<experimentModel.Experiment> getAllUserExperiments(1: required string gatewayId,
                         2: required string userName)
             throws (1: airavataErrors.InvalidRequestException ire,
@@ -290,6 +551,25 @@ service Airavata {
                     3: airavataErrors.AiravataSystemException ase)
 
   /**
+   * Get all Experiments by user pagination. Results will be sorted
+   * based on creation time DESC
+   *
+   * @param gatewayId
+   *       Identifier of the requesting gateway
+   * @param userName
+   *       Username of the requested user
+   * @param limit
+   *       Amount of results to be fetched
+   * @param offset
+   *       The starting point of the results to be fetched
+   */
+  list<experimentModel.Experiment> getAllUserExperimentsWithPagination(1: required string gatewayId,
+                        2: required string userName, 3: required i32 limit, 4: required i32 offset)
+            throws (1: airavataErrors.InvalidRequestException ire,
+                    2: airavataErrors.AiravataClientException ace,
+                    3: airavataErrors.AiravataSystemException ase)
+
+  /**
      * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
      *   but inferred from the authentication header. This experiment is just a persistent place holder. The client
      *   has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except

http://git-wip-us.apache.org/repos/asf/airavata/blob/0a3d857b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/Registry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/Registry.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/Registry.java
index c0bb059..523cc73 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/Registry.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/Registry.java
@@ -103,6 +103,23 @@ public interface Registry {
     public List<Object> get(RegistryModelType dataType, String fieldName, Object value) throws RegistryException;
 
     /**
+     * This method is to retrieve list of objects according to a given criteria with pagination and ordering
+     *
+     * @param dataType  Data type is a predefined type which the programmer should choose according to the object he
+     *                  is going to save in to registry
+     * @param fieldName FieldName is the field that filtering should be done. For example, if we want to retrieve all
+     *                  the experiments for a given user, filterBy will be "userName"
+     * @param value     value for the filtering field. In the experiment case, value for "userName" can be "admin"
+     * @param limit     Size of the results to be returned
+     * @param offset    Start position of the results to be retrieved
+     * @param orderByIdentifier     Named of the column in which the ordering is based
+     * @param resultOrderType       Type of ordering i.e ASC or DESC
+     * @return
+     * @throws RegistryException
+     */
+    public List<Object> get(RegistryModelType dataType, String fieldName, Object value, int limit,
+                            int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException ;
+    /**
      * This method is to retrieve list of objects according to a given criteria
      * @param dataType Data type is a predefined type which the programmer should choose according to the object he
      *                 is going to save in to registry
@@ -123,7 +140,7 @@ public interface Registry {
      * @param resultOrderType    The type of ordering (i.e ASC or DESC) that has to be used when retrieving the results
      * @return List of objects according to the given criteria
      */
-    public List<Object> searchWithPagination(RegistryModelType dataType, Map<String, String> filters,
+    public List<Object> search(RegistryModelType dataType, Map<String, String> filters,
                                              int limit, int offset, Object orderByIdentifier,
                                              ResultOrderType resultOrderType) throws RegistryException;
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/0a3d857b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
index 5defafe..034ee77 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
@@ -29,6 +29,7 @@ public class Constants {
             public static final String OWNER = "owner";
             public static final String PROJECT_NAME = "name";
             public static final String DESCRIPTION = "description";
+            public static final String CREATION_TIME = "creationTime";
         }
 
         public final class ExperimentConstants {


[14/19] airavata git commit: Merge branch 'master' of https://github.com/apache/airavata

Posted by sm...@apache.org.
Merge branch 'master' of https://github.com/apache/airavata


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

Branch: refs/heads/master
Commit: 6bf56d393f7385e532998101c01f23e4b186a0ff
Parents: 0b572c2 ab2efea
Author: Supun Nakandala <su...@gmail.com>
Authored: Tue Apr 28 00:43:48 2015 +0530
Committer: Supun Nakandala <su...@gmail.com>
Committed: Tue Apr 28 00:43:48 2015 +0530

----------------------------------------------------------------------
 .../server/src/main/resources/SGETemplate.xslt  | 10 +--
 .../gfac/monitor/email/EmailBasedMonitor.java   |  6 ++
 .../monitor/email/parser/UGEEmailParser.java    | 73 ++++++++++++++++++++
 .../validator/impl/SimpleAppDataValidator.java  |  2 +-
 .../gsissh/src/main/resources/SGETemplate.xslt  |  7 +-
 5 files changed, 83 insertions(+), 15 deletions(-)
----------------------------------------------------------------------



[17/19] airavata git commit: Merge branch 'master' of https://github.com/apache/airavata

Posted by sm...@apache.org.
Merge branch 'master' of https://github.com/apache/airavata


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

Branch: refs/heads/master
Commit: 478b39726a1e6386e3b669f56f6c7af7929a98e3
Parents: 464e955 b90498f
Author: Supun Nakandala <su...@gmail.com>
Authored: Wed Apr 29 21:38:26 2015 +0530
Committer: Supun Nakandala <su...@gmail.com>
Committed: Wed Apr 29 21:38:26 2015 +0530

----------------------------------------------------------------------
 .../AiravataExperimentStatusUpdator.java        |   1 -
 .../airavata/gfac/server/GfacServerHandler.java |  21 ++-
 .../airavata/gfac/core/cpi/BetterGfacImpl.java  | 160 +++++++++++--------
 .../core/monitor/GfacInternalStatusUpdator.java |   3 +-
 .../gfac/monitor/email/EmailBasedMonitor.java   |   1 +
 .../server/OrchestratorServerHandler.java       |   8 +-
 .../util/OrchestratorRecoveryHandler.java       |   3 +-
 .../core/impl/GFACEmbeddedJobSubmitter.java     |  13 +-
 .../core/impl/GFACPassiveJobSubmitter.java      |   6 +-
 .../engine/concurrent/PredicatedTaskRunner.java |   2 -
 10 files changed, 130 insertions(+), 88 deletions(-)
----------------------------------------------------------------------



[04/19] airavata git commit: Changing Airavata API to support paginated result retrieval of Project and Experiment data

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/0a3d857b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote
index 240a5c7..bba4dff 100755
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote
@@ -38,15 +38,25 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help':
   print '  Project getProject(string projectId)'
   print '  bool deleteProject(string projectId)'
   print '   getAllUserProjects(string gatewayId, string userName)'
+  print '   getAllUserProjectsWithPagination(string gatewayId, string userName, i32 limit, i32 offset)'
   print '   searchProjectsByProjectName(string gatewayId, string userName, string projectName)'
+  print '   searchProjectsByProjectNameWithPagination(string gatewayId, string userName, string projectName, i32 limit, i32 offset)'
   print '   searchProjectsByProjectDesc(string gatewayId, string userName, string description)'
+  print '   searchProjectsByProjectDescWithPagination(string gatewayId, string userName, string description, i32 limit, i32 offset)'
   print '   searchExperimentsByName(string gatewayId, string userName, string expName)'
+  print '   searchExperimentsByNameWithPagination(string gatewayId, string userName, string expName, i32 limit, i32 offset)'
   print '   searchExperimentsByDesc(string gatewayId, string userName, string description)'
+  print '   searchExperimentsByDescWithPagination(string gatewayId, string userName, string description, i32 limit, i32 offset)'
   print '   searchExperimentsByApplication(string gatewayId, string userName, string applicationId)'
+  print '   searchExperimentsByApplicationWithPagination(string gatewayId, string userName, string applicationId, i32 limit, i32 offset)'
   print '   searchExperimentsByStatus(string gatewayId, string userName, ExperimentState experimentState)'
+  print '   searchExperimentsByStatusWithPagination(string gatewayId, string userName, ExperimentState experimentState, i32 limit, i32 offset)'
   print '   searchExperimentsByCreationTime(string gatewayId, string userName, i64 fromTime, i64 toTime)'
+  print '   searchExperimentsByCreationTimeWithPagination(string gatewayId, string userName, i64 fromTime, i64 toTime, i32 limit, i32 offset)'
   print '   getAllExperimentsInProject(string projectId)'
+  print '   getAllExperimentsInProjectWithPagination(string projectId, i32 limit, i32 offset)'
   print '   getAllUserExperiments(string gatewayId, string userName)'
+  print '   getAllUserExperimentsWithPagination(string gatewayId, string userName, i32 limit, i32 offset)'
   print '  string createExperiment(string gatewayId, Experiment experiment)'
   print '  Experiment getExperiment(string airavataExperimentId)'
   print '  void updateExperiment(string airavataExperimentId, Experiment experiment)'
@@ -280,60 +290,120 @@ elif cmd == 'getAllUserProjects':
     sys.exit(1)
   pp.pprint(client.getAllUserProjects(args[0],args[1],))
 
+elif cmd == 'getAllUserProjectsWithPagination':
+  if len(args) != 4:
+    print 'getAllUserProjectsWithPagination requires 4 args'
+    sys.exit(1)
+  pp.pprint(client.getAllUserProjectsWithPagination(args[0],args[1],eval(args[2]),eval(args[3]),))
+
 elif cmd == 'searchProjectsByProjectName':
   if len(args) != 3:
     print 'searchProjectsByProjectName requires 3 args'
     sys.exit(1)
   pp.pprint(client.searchProjectsByProjectName(args[0],args[1],args[2],))
 
+elif cmd == 'searchProjectsByProjectNameWithPagination':
+  if len(args) != 5:
+    print 'searchProjectsByProjectNameWithPagination requires 5 args'
+    sys.exit(1)
+  pp.pprint(client.searchProjectsByProjectNameWithPagination(args[0],args[1],args[2],eval(args[3]),eval(args[4]),))
+
 elif cmd == 'searchProjectsByProjectDesc':
   if len(args) != 3:
     print 'searchProjectsByProjectDesc requires 3 args'
     sys.exit(1)
   pp.pprint(client.searchProjectsByProjectDesc(args[0],args[1],args[2],))
 
+elif cmd == 'searchProjectsByProjectDescWithPagination':
+  if len(args) != 5:
+    print 'searchProjectsByProjectDescWithPagination requires 5 args'
+    sys.exit(1)
+  pp.pprint(client.searchProjectsByProjectDescWithPagination(args[0],args[1],args[2],eval(args[3]),eval(args[4]),))
+
 elif cmd == 'searchExperimentsByName':
   if len(args) != 3:
     print 'searchExperimentsByName requires 3 args'
     sys.exit(1)
   pp.pprint(client.searchExperimentsByName(args[0],args[1],args[2],))
 
+elif cmd == 'searchExperimentsByNameWithPagination':
+  if len(args) != 5:
+    print 'searchExperimentsByNameWithPagination requires 5 args'
+    sys.exit(1)
+  pp.pprint(client.searchExperimentsByNameWithPagination(args[0],args[1],args[2],eval(args[3]),eval(args[4]),))
+
 elif cmd == 'searchExperimentsByDesc':
   if len(args) != 3:
     print 'searchExperimentsByDesc requires 3 args'
     sys.exit(1)
   pp.pprint(client.searchExperimentsByDesc(args[0],args[1],args[2],))
 
+elif cmd == 'searchExperimentsByDescWithPagination':
+  if len(args) != 5:
+    print 'searchExperimentsByDescWithPagination requires 5 args'
+    sys.exit(1)
+  pp.pprint(client.searchExperimentsByDescWithPagination(args[0],args[1],args[2],eval(args[3]),eval(args[4]),))
+
 elif cmd == 'searchExperimentsByApplication':
   if len(args) != 3:
     print 'searchExperimentsByApplication requires 3 args'
     sys.exit(1)
   pp.pprint(client.searchExperimentsByApplication(args[0],args[1],args[2],))
 
+elif cmd == 'searchExperimentsByApplicationWithPagination':
+  if len(args) != 5:
+    print 'searchExperimentsByApplicationWithPagination requires 5 args'
+    sys.exit(1)
+  pp.pprint(client.searchExperimentsByApplicationWithPagination(args[0],args[1],args[2],eval(args[3]),eval(args[4]),))
+
 elif cmd == 'searchExperimentsByStatus':
   if len(args) != 3:
     print 'searchExperimentsByStatus requires 3 args'
     sys.exit(1)
   pp.pprint(client.searchExperimentsByStatus(args[0],args[1],eval(args[2]),))
 
+elif cmd == 'searchExperimentsByStatusWithPagination':
+  if len(args) != 5:
+    print 'searchExperimentsByStatusWithPagination requires 5 args'
+    sys.exit(1)
+  pp.pprint(client.searchExperimentsByStatusWithPagination(args[0],args[1],eval(args[2]),eval(args[3]),eval(args[4]),))
+
 elif cmd == 'searchExperimentsByCreationTime':
   if len(args) != 4:
     print 'searchExperimentsByCreationTime requires 4 args'
     sys.exit(1)
   pp.pprint(client.searchExperimentsByCreationTime(args[0],args[1],eval(args[2]),eval(args[3]),))
 
+elif cmd == 'searchExperimentsByCreationTimeWithPagination':
+  if len(args) != 6:
+    print 'searchExperimentsByCreationTimeWithPagination requires 6 args'
+    sys.exit(1)
+  pp.pprint(client.searchExperimentsByCreationTimeWithPagination(args[0],args[1],eval(args[2]),eval(args[3]),eval(args[4]),eval(args[5]),))
+
 elif cmd == 'getAllExperimentsInProject':
   if len(args) != 1:
     print 'getAllExperimentsInProject requires 1 args'
     sys.exit(1)
   pp.pprint(client.getAllExperimentsInProject(args[0],))
 
+elif cmd == 'getAllExperimentsInProjectWithPagination':
+  if len(args) != 3:
+    print 'getAllExperimentsInProjectWithPagination requires 3 args'
+    sys.exit(1)
+  pp.pprint(client.getAllExperimentsInProjectWithPagination(args[0],eval(args[1]),eval(args[2]),))
+
 elif cmd == 'getAllUserExperiments':
   if len(args) != 2:
     print 'getAllUserExperiments requires 2 args'
     sys.exit(1)
   pp.pprint(client.getAllUserExperiments(args[0],args[1],))
 
+elif cmd == 'getAllUserExperimentsWithPagination':
+  if len(args) != 4:
+    print 'getAllUserExperimentsWithPagination requires 4 args'
+    sys.exit(1)
+  pp.pprint(client.getAllUserExperimentsWithPagination(args[0],args[1],eval(args[2]),eval(args[3]),))
+
 elif cmd == 'createExperiment':
   if len(args) != 2:
     print 'createExperiment requires 2 args'


[07/19] airavata git commit: Changing Airavata API to support paginated result retrieval of Project and Experiment data

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/0a3d857b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
index 78f2742..8bdcb39 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
@@ -47,15 +47,25 @@ class AiravataIf {
   virtual void getProject( ::apache::airavata::model::workspace::Project& _return, const std::string& projectId) = 0;
   virtual bool deleteProject(const std::string& projectId) = 0;
   virtual void getAllUserProjects(std::vector< ::apache::airavata::model::workspace::Project> & _return, const std::string& gatewayId, const std::string& userName) = 0;
+  virtual void getAllUserProjectsWithPagination(std::vector< ::apache::airavata::model::workspace::Project> & _return, const std::string& gatewayId, const std::string& userName, const int32_t limit, const int32_t offset) = 0;
   virtual void searchProjectsByProjectName(std::vector< ::apache::airavata::model::workspace::Project> & _return, const std::string& gatewayId, const std::string& userName, const std::string& projectName) = 0;
+  virtual void searchProjectsByProjectNameWithPagination(std::vector< ::apache::airavata::model::workspace::Project> & _return, const std::string& gatewayId, const std::string& userName, const std::string& projectName, const int32_t limit, const int32_t offset) = 0;
   virtual void searchProjectsByProjectDesc(std::vector< ::apache::airavata::model::workspace::Project> & _return, const std::string& gatewayId, const std::string& userName, const std::string& description) = 0;
+  virtual void searchProjectsByProjectDescWithPagination(std::vector< ::apache::airavata::model::workspace::Project> & _return, const std::string& gatewayId, const std::string& userName, const std::string& description, const int32_t limit, const int32_t offset) = 0;
   virtual void searchExperimentsByName(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const std::string& expName) = 0;
+  virtual void searchExperimentsByNameWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const std::string& expName, const int32_t limit, const int32_t offset) = 0;
   virtual void searchExperimentsByDesc(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const std::string& description) = 0;
+  virtual void searchExperimentsByDescWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const std::string& description, const int32_t limit, const int32_t offset) = 0;
   virtual void searchExperimentsByApplication(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const std::string& applicationId) = 0;
+  virtual void searchExperimentsByApplicationWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const std::string& applicationId, const int32_t limit, const int32_t offset) = 0;
   virtual void searchExperimentsByStatus(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const  ::apache::airavata::model::workspace::experiment::ExperimentState::type experimentState) = 0;
+  virtual void searchExperimentsByStatusWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const  ::apache::airavata::model::workspace::experiment::ExperimentState::type experimentState, const int32_t limit, const int32_t offset) = 0;
   virtual void searchExperimentsByCreationTime(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const int64_t fromTime, const int64_t toTime) = 0;
+  virtual void searchExperimentsByCreationTimeWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & _return, const std::string& gatewayId, const std::string& userName, const int64_t fromTime, const int64_t toTime, const int32_t limit, const int32_t offset) = 0;
   virtual void getAllExperimentsInProject(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & _return, const std::string& projectId) = 0;
+  virtual void getAllExperimentsInProjectWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & _return, const std::string& projectId, const int32_t limit, const int32_t offset) = 0;
   virtual void getAllUserExperiments(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & _return, const std::string& gatewayId, const std::string& userName) = 0;
+  virtual void getAllUserExperimentsWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & _return, const std::string& gatewayId, const std::string& userName, const int32_t limit, const int32_t offset) = 0;
   virtual void createExperiment(std::string& _return, const std::string& gatewayId, const  ::apache::airavata::model::workspace::experiment::Experiment& experiment) = 0;
   virtual void getExperiment( ::apache::airavata::model::workspace::experiment::Experiment& _return, const std::string& airavataExperimentId) = 0;
   virtual void updateExperiment(const std::string& airavataExperimentId, const  ::apache::airavata::model::workspace::experiment::Experiment& experiment) = 0;
@@ -225,33 +235,63 @@ class AiravataNull : virtual public AiravataIf {
   void getAllUserProjects(std::vector< ::apache::airavata::model::workspace::Project> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */) {
     return;
   }
+  void getAllUserProjectsWithPagination(std::vector< ::apache::airavata::model::workspace::Project> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const int32_t /* limit */, const int32_t /* offset */) {
+    return;
+  }
   void searchProjectsByProjectName(std::vector< ::apache::airavata::model::workspace::Project> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const std::string& /* projectName */) {
     return;
   }
+  void searchProjectsByProjectNameWithPagination(std::vector< ::apache::airavata::model::workspace::Project> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const std::string& /* projectName */, const int32_t /* limit */, const int32_t /* offset */) {
+    return;
+  }
   void searchProjectsByProjectDesc(std::vector< ::apache::airavata::model::workspace::Project> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const std::string& /* description */) {
     return;
   }
+  void searchProjectsByProjectDescWithPagination(std::vector< ::apache::airavata::model::workspace::Project> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const std::string& /* description */, const int32_t /* limit */, const int32_t /* offset */) {
+    return;
+  }
   void searchExperimentsByName(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const std::string& /* expName */) {
     return;
   }
+  void searchExperimentsByNameWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const std::string& /* expName */, const int32_t /* limit */, const int32_t /* offset */) {
+    return;
+  }
   void searchExperimentsByDesc(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const std::string& /* description */) {
     return;
   }
+  void searchExperimentsByDescWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const std::string& /* description */, const int32_t /* limit */, const int32_t /* offset */) {
+    return;
+  }
   void searchExperimentsByApplication(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const std::string& /* applicationId */) {
     return;
   }
+  void searchExperimentsByApplicationWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const std::string& /* applicationId */, const int32_t /* limit */, const int32_t /* offset */) {
+    return;
+  }
   void searchExperimentsByStatus(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const  ::apache::airavata::model::workspace::experiment::ExperimentState::type /* experimentState */) {
     return;
   }
+  void searchExperimentsByStatusWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const  ::apache::airavata::model::workspace::experiment::ExperimentState::type /* experimentState */, const int32_t /* limit */, const int32_t /* offset */) {
+    return;
+  }
   void searchExperimentsByCreationTime(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const int64_t /* fromTime */, const int64_t /* toTime */) {
     return;
   }
+  void searchExperimentsByCreationTimeWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const int64_t /* fromTime */, const int64_t /* toTime */, const int32_t /* limit */, const int32_t /* offset */) {
+    return;
+  }
   void getAllExperimentsInProject(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & /* _return */, const std::string& /* projectId */) {
     return;
   }
+  void getAllExperimentsInProjectWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & /* _return */, const std::string& /* projectId */, const int32_t /* limit */, const int32_t /* offset */) {
+    return;
+  }
   void getAllUserExperiments(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */) {
     return;
   }
+  void getAllUserExperimentsWithPagination(std::vector< ::apache::airavata::model::workspace::experiment::Experiment> & /* _return */, const std::string& /* gatewayId */, const std::string& /* userName */, const int32_t /* limit */, const int32_t /* offset */) {
+    return;
+  }
   void createExperiment(std::string& /* _return */, const std::string& /* gatewayId */, const  ::apache::airavata::model::workspace::experiment::Experiment& /* experiment */) {
     return;
   }
@@ -2577,17 +2617,18 @@ class Airavata_getAllUserProjects_presult {
 };
 
 
-class Airavata_searchProjectsByProjectName_args {
+class Airavata_getAllUserProjectsWithPagination_args {
  public:
 
-  Airavata_searchProjectsByProjectName_args() : gatewayId(), userName(), projectName() {
+  Airavata_getAllUserProjectsWithPagination_args() : gatewayId(), userName(), limit(0), offset(0) {
   }
 
-  virtual ~Airavata_searchProjectsByProjectName_args() throw() {}
+  virtual ~Airavata_getAllUserProjectsWithPagination_args() throw() {}
 
   std::string gatewayId;
   std::string userName;
-  std::string projectName;
+  int32_t limit;
+  int32_t offset;
 
   void __set_gatewayId(const std::string& val) {
     gatewayId = val;
@@ -2597,25 +2638,31 @@ class Airavata_searchProjectsByProjectName_args {
     userName = val;
   }
 
-  void __set_projectName(const std::string& val) {
-    projectName = val;
+  void __set_limit(const int32_t val) {
+    limit = val;
   }
 
-  bool operator == (const Airavata_searchProjectsByProjectName_args & rhs) const
+  void __set_offset(const int32_t val) {
+    offset = val;
+  }
+
+  bool operator == (const Airavata_getAllUserProjectsWithPagination_args & rhs) const
   {
     if (!(gatewayId == rhs.gatewayId))
       return false;
     if (!(userName == rhs.userName))
       return false;
-    if (!(projectName == rhs.projectName))
+    if (!(limit == rhs.limit))
+      return false;
+    if (!(offset == rhs.offset))
       return false;
     return true;
   }
-  bool operator != (const Airavata_searchProjectsByProjectName_args &rhs) const {
+  bool operator != (const Airavata_getAllUserProjectsWithPagination_args &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const Airavata_searchProjectsByProjectName_args & ) const;
+  bool operator < (const Airavata_getAllUserProjectsWithPagination_args & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
@@ -2623,42 +2670,43 @@ class Airavata_searchProjectsByProjectName_args {
 };
 
 
-class Airavata_searchProjectsByProjectName_pargs {
+class Airavata_getAllUserProjectsWithPagination_pargs {
  public:
 
 
-  virtual ~Airavata_searchProjectsByProjectName_pargs() throw() {}
+  virtual ~Airavata_getAllUserProjectsWithPagination_pargs() throw() {}
 
   const std::string* gatewayId;
   const std::string* userName;
-  const std::string* projectName;
+  const int32_t* limit;
+  const int32_t* offset;
 
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _Airavata_searchProjectsByProjectName_result__isset {
-  _Airavata_searchProjectsByProjectName_result__isset() : success(false), ire(false), ace(false), ase(false) {}
+typedef struct _Airavata_getAllUserProjectsWithPagination_result__isset {
+  _Airavata_getAllUserProjectsWithPagination_result__isset() : success(false), ire(false), ace(false), ase(false) {}
   bool success;
   bool ire;
   bool ace;
   bool ase;
-} _Airavata_searchProjectsByProjectName_result__isset;
+} _Airavata_getAllUserProjectsWithPagination_result__isset;
 
-class Airavata_searchProjectsByProjectName_result {
+class Airavata_getAllUserProjectsWithPagination_result {
  public:
 
-  Airavata_searchProjectsByProjectName_result() {
+  Airavata_getAllUserProjectsWithPagination_result() {
   }
 
-  virtual ~Airavata_searchProjectsByProjectName_result() throw() {}
+  virtual ~Airavata_getAllUserProjectsWithPagination_result() throw() {}
 
   std::vector< ::apache::airavata::model::workspace::Project>  success;
    ::apache::airavata::api::error::InvalidRequestException ire;
    ::apache::airavata::api::error::AiravataClientException ace;
    ::apache::airavata::api::error::AiravataSystemException ase;
 
-  _Airavata_searchProjectsByProjectName_result__isset __isset;
+  _Airavata_getAllUserProjectsWithPagination_result__isset __isset;
 
   void __set_success(const std::vector< ::apache::airavata::model::workspace::Project> & val) {
     success = val;
@@ -2676,7 +2724,7 @@ class Airavata_searchProjectsByProjectName_result {
     ase = val;
   }
 
-  bool operator == (const Airavata_searchProjectsByProjectName_result & rhs) const
+  bool operator == (const Airavata_getAllUserProjectsWithPagination_result & rhs) const
   {
     if (!(success == rhs.success))
       return false;
@@ -2688,54 +2736,54 @@ class Airavata_searchProjectsByProjectName_result {
       return false;
     return true;
   }
-  bool operator != (const Airavata_searchProjectsByProjectName_result &rhs) const {
+  bool operator != (const Airavata_getAllUserProjectsWithPagination_result &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const Airavata_searchProjectsByProjectName_result & ) const;
+  bool operator < (const Airavata_getAllUserProjectsWithPagination_result & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _Airavata_searchProjectsByProjectName_presult__isset {
-  _Airavata_searchProjectsByProjectName_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
+typedef struct _Airavata_getAllUserProjectsWithPagination_presult__isset {
+  _Airavata_getAllUserProjectsWithPagination_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
   bool success;
   bool ire;
   bool ace;
   bool ase;
-} _Airavata_searchProjectsByProjectName_presult__isset;
+} _Airavata_getAllUserProjectsWithPagination_presult__isset;
 
-class Airavata_searchProjectsByProjectName_presult {
+class Airavata_getAllUserProjectsWithPagination_presult {
  public:
 
 
-  virtual ~Airavata_searchProjectsByProjectName_presult() throw() {}
+  virtual ~Airavata_getAllUserProjectsWithPagination_presult() throw() {}
 
   std::vector< ::apache::airavata::model::workspace::Project> * success;
    ::apache::airavata::api::error::InvalidRequestException ire;
    ::apache::airavata::api::error::AiravataClientException ace;
    ::apache::airavata::api::error::AiravataSystemException ase;
 
-  _Airavata_searchProjectsByProjectName_presult__isset __isset;
+  _Airavata_getAllUserProjectsWithPagination_presult__isset __isset;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
 
 };
 
 
-class Airavata_searchProjectsByProjectDesc_args {
+class Airavata_searchProjectsByProjectName_args {
  public:
 
-  Airavata_searchProjectsByProjectDesc_args() : gatewayId(), userName(), description() {
+  Airavata_searchProjectsByProjectName_args() : gatewayId(), userName(), projectName() {
   }
 
-  virtual ~Airavata_searchProjectsByProjectDesc_args() throw() {}
+  virtual ~Airavata_searchProjectsByProjectName_args() throw() {}
 
   std::string gatewayId;
   std::string userName;
-  std::string description;
+  std::string projectName;
 
   void __set_gatewayId(const std::string& val) {
     gatewayId = val;
@@ -2745,25 +2793,25 @@ class Airavata_searchProjectsByProjectDesc_args {
     userName = val;
   }
 
-  void __set_description(const std::string& val) {
-    description = val;
+  void __set_projectName(const std::string& val) {
+    projectName = val;
   }
 
-  bool operator == (const Airavata_searchProjectsByProjectDesc_args & rhs) const
+  bool operator == (const Airavata_searchProjectsByProjectName_args & rhs) const
   {
     if (!(gatewayId == rhs.gatewayId))
       return false;
     if (!(userName == rhs.userName))
       return false;
-    if (!(description == rhs.description))
+    if (!(projectName == rhs.projectName))
       return false;
     return true;
   }
-  bool operator != (const Airavata_searchProjectsByProjectDesc_args &rhs) const {
+  bool operator != (const Airavata_searchProjectsByProjectName_args &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const Airavata_searchProjectsByProjectDesc_args & ) const;
+  bool operator < (const Airavata_searchProjectsByProjectName_args & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
@@ -2771,42 +2819,42 @@ class Airavata_searchProjectsByProjectDesc_args {
 };
 
 
-class Airavata_searchProjectsByProjectDesc_pargs {
+class Airavata_searchProjectsByProjectName_pargs {
  public:
 
 
-  virtual ~Airavata_searchProjectsByProjectDesc_pargs() throw() {}
+  virtual ~Airavata_searchProjectsByProjectName_pargs() throw() {}
 
   const std::string* gatewayId;
   const std::string* userName;
-  const std::string* description;
+  const std::string* projectName;
 
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _Airavata_searchProjectsByProjectDesc_result__isset {
-  _Airavata_searchProjectsByProjectDesc_result__isset() : success(false), ire(false), ace(false), ase(false) {}
+typedef struct _Airavata_searchProjectsByProjectName_result__isset {
+  _Airavata_searchProjectsByProjectName_result__isset() : success(false), ire(false), ace(false), ase(false) {}
   bool success;
   bool ire;
   bool ace;
   bool ase;
-} _Airavata_searchProjectsByProjectDesc_result__isset;
+} _Airavata_searchProjectsByProjectName_result__isset;
 
-class Airavata_searchProjectsByProjectDesc_result {
+class Airavata_searchProjectsByProjectName_result {
  public:
 
-  Airavata_searchProjectsByProjectDesc_result() {
+  Airavata_searchProjectsByProjectName_result() {
   }
 
-  virtual ~Airavata_searchProjectsByProjectDesc_result() throw() {}
+  virtual ~Airavata_searchProjectsByProjectName_result() throw() {}
 
   std::vector< ::apache::airavata::model::workspace::Project>  success;
    ::apache::airavata::api::error::InvalidRequestException ire;
    ::apache::airavata::api::error::AiravataClientException ace;
    ::apache::airavata::api::error::AiravataSystemException ase;
 
-  _Airavata_searchProjectsByProjectDesc_result__isset __isset;
+  _Airavata_searchProjectsByProjectName_result__isset __isset;
 
   void __set_success(const std::vector< ::apache::airavata::model::workspace::Project> & val) {
     success = val;
@@ -2824,7 +2872,7 @@ class Airavata_searchProjectsByProjectDesc_result {
     ase = val;
   }
 
-  bool operator == (const Airavata_searchProjectsByProjectDesc_result & rhs) const
+  bool operator == (const Airavata_searchProjectsByProjectName_result & rhs) const
   {
     if (!(success == rhs.success))
       return false;
@@ -2836,54 +2884,56 @@ class Airavata_searchProjectsByProjectDesc_result {
       return false;
     return true;
   }
-  bool operator != (const Airavata_searchProjectsByProjectDesc_result &rhs) const {
+  bool operator != (const Airavata_searchProjectsByProjectName_result &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const Airavata_searchProjectsByProjectDesc_result & ) const;
+  bool operator < (const Airavata_searchProjectsByProjectName_result & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _Airavata_searchProjectsByProjectDesc_presult__isset {
-  _Airavata_searchProjectsByProjectDesc_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
+typedef struct _Airavata_searchProjectsByProjectName_presult__isset {
+  _Airavata_searchProjectsByProjectName_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
   bool success;
   bool ire;
   bool ace;
   bool ase;
-} _Airavata_searchProjectsByProjectDesc_presult__isset;
+} _Airavata_searchProjectsByProjectName_presult__isset;
 
-class Airavata_searchProjectsByProjectDesc_presult {
+class Airavata_searchProjectsByProjectName_presult {
  public:
 
 
-  virtual ~Airavata_searchProjectsByProjectDesc_presult() throw() {}
+  virtual ~Airavata_searchProjectsByProjectName_presult() throw() {}
 
   std::vector< ::apache::airavata::model::workspace::Project> * success;
    ::apache::airavata::api::error::InvalidRequestException ire;
    ::apache::airavata::api::error::AiravataClientException ace;
    ::apache::airavata::api::error::AiravataSystemException ase;
 
-  _Airavata_searchProjectsByProjectDesc_presult__isset __isset;
+  _Airavata_searchProjectsByProjectName_presult__isset __isset;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
 
 };
 
 
-class Airavata_searchExperimentsByName_args {
+class Airavata_searchProjectsByProjectNameWithPagination_args {
  public:
 
-  Airavata_searchExperimentsByName_args() : gatewayId(), userName(), expName() {
+  Airavata_searchProjectsByProjectNameWithPagination_args() : gatewayId(), userName(), projectName(), limit(0), offset(0) {
   }
 
-  virtual ~Airavata_searchExperimentsByName_args() throw() {}
+  virtual ~Airavata_searchProjectsByProjectNameWithPagination_args() throw() {}
 
   std::string gatewayId;
   std::string userName;
-  std::string expName;
+  std::string projectName;
+  int32_t limit;
+  int32_t offset;
 
   void __set_gatewayId(const std::string& val) {
     gatewayId = val;
@@ -2893,25 +2943,37 @@ class Airavata_searchExperimentsByName_args {
     userName = val;
   }
 
-  void __set_expName(const std::string& val) {
-    expName = val;
+  void __set_projectName(const std::string& val) {
+    projectName = val;
   }
 
-  bool operator == (const Airavata_searchExperimentsByName_args & rhs) const
+  void __set_limit(const int32_t val) {
+    limit = val;
+  }
+
+  void __set_offset(const int32_t val) {
+    offset = val;
+  }
+
+  bool operator == (const Airavata_searchProjectsByProjectNameWithPagination_args & rhs) const
   {
     if (!(gatewayId == rhs.gatewayId))
       return false;
     if (!(userName == rhs.userName))
       return false;
-    if (!(expName == rhs.expName))
+    if (!(projectName == rhs.projectName))
+      return false;
+    if (!(limit == rhs.limit))
+      return false;
+    if (!(offset == rhs.offset))
       return false;
     return true;
   }
-  bool operator != (const Airavata_searchExperimentsByName_args &rhs) const {
+  bool operator != (const Airavata_searchProjectsByProjectNameWithPagination_args &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const Airavata_searchExperimentsByName_args & ) const;
+  bool operator < (const Airavata_searchProjectsByProjectNameWithPagination_args & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
@@ -2919,44 +2981,46 @@ class Airavata_searchExperimentsByName_args {
 };
 
 
-class Airavata_searchExperimentsByName_pargs {
+class Airavata_searchProjectsByProjectNameWithPagination_pargs {
  public:
 
 
-  virtual ~Airavata_searchExperimentsByName_pargs() throw() {}
+  virtual ~Airavata_searchProjectsByProjectNameWithPagination_pargs() throw() {}
 
   const std::string* gatewayId;
   const std::string* userName;
-  const std::string* expName;
+  const std::string* projectName;
+  const int32_t* limit;
+  const int32_t* offset;
 
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _Airavata_searchExperimentsByName_result__isset {
-  _Airavata_searchExperimentsByName_result__isset() : success(false), ire(false), ace(false), ase(false) {}
+typedef struct _Airavata_searchProjectsByProjectNameWithPagination_result__isset {
+  _Airavata_searchProjectsByProjectNameWithPagination_result__isset() : success(false), ire(false), ace(false), ase(false) {}
   bool success;
   bool ire;
   bool ace;
   bool ase;
-} _Airavata_searchExperimentsByName_result__isset;
+} _Airavata_searchProjectsByProjectNameWithPagination_result__isset;
 
-class Airavata_searchExperimentsByName_result {
+class Airavata_searchProjectsByProjectNameWithPagination_result {
  public:
 
-  Airavata_searchExperimentsByName_result() {
+  Airavata_searchProjectsByProjectNameWithPagination_result() {
   }
 
-  virtual ~Airavata_searchExperimentsByName_result() throw() {}
+  virtual ~Airavata_searchProjectsByProjectNameWithPagination_result() throw() {}
 
-  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary>  success;
+  std::vector< ::apache::airavata::model::workspace::Project>  success;
    ::apache::airavata::api::error::InvalidRequestException ire;
    ::apache::airavata::api::error::AiravataClientException ace;
    ::apache::airavata::api::error::AiravataSystemException ase;
 
-  _Airavata_searchExperimentsByName_result__isset __isset;
+  _Airavata_searchProjectsByProjectNameWithPagination_result__isset __isset;
 
-  void __set_success(const std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & val) {
+  void __set_success(const std::vector< ::apache::airavata::model::workspace::Project> & val) {
     success = val;
   }
 
@@ -2972,7 +3036,7 @@ class Airavata_searchExperimentsByName_result {
     ase = val;
   }
 
-  bool operator == (const Airavata_searchExperimentsByName_result & rhs) const
+  bool operator == (const Airavata_searchProjectsByProjectNameWithPagination_result & rhs) const
   {
     if (!(success == rhs.success))
       return false;
@@ -2984,50 +3048,50 @@ class Airavata_searchExperimentsByName_result {
       return false;
     return true;
   }
-  bool operator != (const Airavata_searchExperimentsByName_result &rhs) const {
+  bool operator != (const Airavata_searchProjectsByProjectNameWithPagination_result &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const Airavata_searchExperimentsByName_result & ) const;
+  bool operator < (const Airavata_searchProjectsByProjectNameWithPagination_result & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _Airavata_searchExperimentsByName_presult__isset {
-  _Airavata_searchExperimentsByName_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
+typedef struct _Airavata_searchProjectsByProjectNameWithPagination_presult__isset {
+  _Airavata_searchProjectsByProjectNameWithPagination_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
   bool success;
   bool ire;
   bool ace;
   bool ase;
-} _Airavata_searchExperimentsByName_presult__isset;
+} _Airavata_searchProjectsByProjectNameWithPagination_presult__isset;
 
-class Airavata_searchExperimentsByName_presult {
+class Airavata_searchProjectsByProjectNameWithPagination_presult {
  public:
 
 
-  virtual ~Airavata_searchExperimentsByName_presult() throw() {}
+  virtual ~Airavata_searchProjectsByProjectNameWithPagination_presult() throw() {}
 
-  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> * success;
+  std::vector< ::apache::airavata::model::workspace::Project> * success;
    ::apache::airavata::api::error::InvalidRequestException ire;
    ::apache::airavata::api::error::AiravataClientException ace;
    ::apache::airavata::api::error::AiravataSystemException ase;
 
-  _Airavata_searchExperimentsByName_presult__isset __isset;
+  _Airavata_searchProjectsByProjectNameWithPagination_presult__isset __isset;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
 
 };
 
 
-class Airavata_searchExperimentsByDesc_args {
+class Airavata_searchProjectsByProjectDesc_args {
  public:
 
-  Airavata_searchExperimentsByDesc_args() : gatewayId(), userName(), description() {
+  Airavata_searchProjectsByProjectDesc_args() : gatewayId(), userName(), description() {
   }
 
-  virtual ~Airavata_searchExperimentsByDesc_args() throw() {}
+  virtual ~Airavata_searchProjectsByProjectDesc_args() throw() {}
 
   std::string gatewayId;
   std::string userName;
@@ -3045,7 +3109,7 @@ class Airavata_searchExperimentsByDesc_args {
     description = val;
   }
 
-  bool operator == (const Airavata_searchExperimentsByDesc_args & rhs) const
+  bool operator == (const Airavata_searchProjectsByProjectDesc_args & rhs) const
   {
     if (!(gatewayId == rhs.gatewayId))
       return false;
@@ -3055,11 +3119,11 @@ class Airavata_searchExperimentsByDesc_args {
       return false;
     return true;
   }
-  bool operator != (const Airavata_searchExperimentsByDesc_args &rhs) const {
+  bool operator != (const Airavata_searchProjectsByProjectDesc_args &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const Airavata_searchExperimentsByDesc_args & ) const;
+  bool operator < (const Airavata_searchProjectsByProjectDesc_args & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
@@ -3067,11 +3131,11 @@ class Airavata_searchExperimentsByDesc_args {
 };
 
 
-class Airavata_searchExperimentsByDesc_pargs {
+class Airavata_searchProjectsByProjectDesc_pargs {
  public:
 
 
-  virtual ~Airavata_searchExperimentsByDesc_pargs() throw() {}
+  virtual ~Airavata_searchProjectsByProjectDesc_pargs() throw() {}
 
   const std::string* gatewayId;
   const std::string* userName;
@@ -3081,30 +3145,30 @@ class Airavata_searchExperimentsByDesc_pargs {
 
 };
 
-typedef struct _Airavata_searchExperimentsByDesc_result__isset {
-  _Airavata_searchExperimentsByDesc_result__isset() : success(false), ire(false), ace(false), ase(false) {}
+typedef struct _Airavata_searchProjectsByProjectDesc_result__isset {
+  _Airavata_searchProjectsByProjectDesc_result__isset() : success(false), ire(false), ace(false), ase(false) {}
   bool success;
   bool ire;
   bool ace;
   bool ase;
-} _Airavata_searchExperimentsByDesc_result__isset;
+} _Airavata_searchProjectsByProjectDesc_result__isset;
 
-class Airavata_searchExperimentsByDesc_result {
+class Airavata_searchProjectsByProjectDesc_result {
  public:
 
-  Airavata_searchExperimentsByDesc_result() {
+  Airavata_searchProjectsByProjectDesc_result() {
   }
 
-  virtual ~Airavata_searchExperimentsByDesc_result() throw() {}
+  virtual ~Airavata_searchProjectsByProjectDesc_result() throw() {}
 
-  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary>  success;
+  std::vector< ::apache::airavata::model::workspace::Project>  success;
    ::apache::airavata::api::error::InvalidRequestException ire;
    ::apache::airavata::api::error::AiravataClientException ace;
    ::apache::airavata::api::error::AiravataSystemException ase;
 
-  _Airavata_searchExperimentsByDesc_result__isset __isset;
+  _Airavata_searchProjectsByProjectDesc_result__isset __isset;
 
-  void __set_success(const std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & val) {
+  void __set_success(const std::vector< ::apache::airavata::model::workspace::Project> & val) {
     success = val;
   }
 
@@ -3120,7 +3184,7 @@ class Airavata_searchExperimentsByDesc_result {
     ase = val;
   }
 
-  bool operator == (const Airavata_searchExperimentsByDesc_result & rhs) const
+  bool operator == (const Airavata_searchProjectsByProjectDesc_result & rhs) const
   {
     if (!(success == rhs.success))
       return false;
@@ -3132,54 +3196,56 @@ class Airavata_searchExperimentsByDesc_result {
       return false;
     return true;
   }
-  bool operator != (const Airavata_searchExperimentsByDesc_result &rhs) const {
+  bool operator != (const Airavata_searchProjectsByProjectDesc_result &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const Airavata_searchExperimentsByDesc_result & ) const;
+  bool operator < (const Airavata_searchProjectsByProjectDesc_result & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _Airavata_searchExperimentsByDesc_presult__isset {
-  _Airavata_searchExperimentsByDesc_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
+typedef struct _Airavata_searchProjectsByProjectDesc_presult__isset {
+  _Airavata_searchProjectsByProjectDesc_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
   bool success;
   bool ire;
   bool ace;
   bool ase;
-} _Airavata_searchExperimentsByDesc_presult__isset;
+} _Airavata_searchProjectsByProjectDesc_presult__isset;
 
-class Airavata_searchExperimentsByDesc_presult {
+class Airavata_searchProjectsByProjectDesc_presult {
  public:
 
 
-  virtual ~Airavata_searchExperimentsByDesc_presult() throw() {}
+  virtual ~Airavata_searchProjectsByProjectDesc_presult() throw() {}
 
-  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> * success;
+  std::vector< ::apache::airavata::model::workspace::Project> * success;
    ::apache::airavata::api::error::InvalidRequestException ire;
    ::apache::airavata::api::error::AiravataClientException ace;
    ::apache::airavata::api::error::AiravataSystemException ase;
 
-  _Airavata_searchExperimentsByDesc_presult__isset __isset;
+  _Airavata_searchProjectsByProjectDesc_presult__isset __isset;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
 
 };
 
 
-class Airavata_searchExperimentsByApplication_args {
+class Airavata_searchProjectsByProjectDescWithPagination_args {
  public:
 
-  Airavata_searchExperimentsByApplication_args() : gatewayId(), userName(), applicationId() {
+  Airavata_searchProjectsByProjectDescWithPagination_args() : gatewayId(), userName(), description(), limit(0), offset(0) {
   }
 
-  virtual ~Airavata_searchExperimentsByApplication_args() throw() {}
+  virtual ~Airavata_searchProjectsByProjectDescWithPagination_args() throw() {}
 
   std::string gatewayId;
   std::string userName;
-  std::string applicationId;
+  std::string description;
+  int32_t limit;
+  int32_t offset;
 
   void __set_gatewayId(const std::string& val) {
     gatewayId = val;
@@ -3189,25 +3255,37 @@ class Airavata_searchExperimentsByApplication_args {
     userName = val;
   }
 
-  void __set_applicationId(const std::string& val) {
-    applicationId = val;
+  void __set_description(const std::string& val) {
+    description = val;
   }
 
-  bool operator == (const Airavata_searchExperimentsByApplication_args & rhs) const
+  void __set_limit(const int32_t val) {
+    limit = val;
+  }
+
+  void __set_offset(const int32_t val) {
+    offset = val;
+  }
+
+  bool operator == (const Airavata_searchProjectsByProjectDescWithPagination_args & rhs) const
   {
     if (!(gatewayId == rhs.gatewayId))
       return false;
     if (!(userName == rhs.userName))
       return false;
-    if (!(applicationId == rhs.applicationId))
+    if (!(description == rhs.description))
+      return false;
+    if (!(limit == rhs.limit))
+      return false;
+    if (!(offset == rhs.offset))
       return false;
     return true;
   }
-  bool operator != (const Airavata_searchExperimentsByApplication_args &rhs) const {
+  bool operator != (const Airavata_searchProjectsByProjectDescWithPagination_args &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const Airavata_searchExperimentsByApplication_args & ) const;
+  bool operator < (const Airavata_searchProjectsByProjectDescWithPagination_args & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
@@ -3215,44 +3293,46 @@ class Airavata_searchExperimentsByApplication_args {
 };
 
 
-class Airavata_searchExperimentsByApplication_pargs {
+class Airavata_searchProjectsByProjectDescWithPagination_pargs {
  public:
 
 
-  virtual ~Airavata_searchExperimentsByApplication_pargs() throw() {}
+  virtual ~Airavata_searchProjectsByProjectDescWithPagination_pargs() throw() {}
 
   const std::string* gatewayId;
   const std::string* userName;
-  const std::string* applicationId;
+  const std::string* description;
+  const int32_t* limit;
+  const int32_t* offset;
 
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _Airavata_searchExperimentsByApplication_result__isset {
-  _Airavata_searchExperimentsByApplication_result__isset() : success(false), ire(false), ace(false), ase(false) {}
+typedef struct _Airavata_searchProjectsByProjectDescWithPagination_result__isset {
+  _Airavata_searchProjectsByProjectDescWithPagination_result__isset() : success(false), ire(false), ace(false), ase(false) {}
   bool success;
   bool ire;
   bool ace;
   bool ase;
-} _Airavata_searchExperimentsByApplication_result__isset;
+} _Airavata_searchProjectsByProjectDescWithPagination_result__isset;
 
-class Airavata_searchExperimentsByApplication_result {
+class Airavata_searchProjectsByProjectDescWithPagination_result {
  public:
 
-  Airavata_searchExperimentsByApplication_result() {
+  Airavata_searchProjectsByProjectDescWithPagination_result() {
   }
 
-  virtual ~Airavata_searchExperimentsByApplication_result() throw() {}
+  virtual ~Airavata_searchProjectsByProjectDescWithPagination_result() throw() {}
 
-  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary>  success;
+  std::vector< ::apache::airavata::model::workspace::Project>  success;
    ::apache::airavata::api::error::InvalidRequestException ire;
    ::apache::airavata::api::error::AiravataClientException ace;
    ::apache::airavata::api::error::AiravataSystemException ase;
 
-  _Airavata_searchExperimentsByApplication_result__isset __isset;
+  _Airavata_searchProjectsByProjectDescWithPagination_result__isset __isset;
 
-  void __set_success(const std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & val) {
+  void __set_success(const std::vector< ::apache::airavata::model::workspace::Project> & val) {
     success = val;
   }
 
@@ -3268,7 +3348,7 @@ class Airavata_searchExperimentsByApplication_result {
     ase = val;
   }
 
-  bool operator == (const Airavata_searchExperimentsByApplication_result & rhs) const
+  bool operator == (const Airavata_searchProjectsByProjectDescWithPagination_result & rhs) const
   {
     if (!(success == rhs.success))
       return false;
@@ -3280,37 +3360,973 @@ class Airavata_searchExperimentsByApplication_result {
       return false;
     return true;
   }
-  bool operator != (const Airavata_searchExperimentsByApplication_result &rhs) const {
+  bool operator != (const Airavata_searchProjectsByProjectDescWithPagination_result &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const Airavata_searchExperimentsByApplication_result & ) const;
+  bool operator < (const Airavata_searchProjectsByProjectDescWithPagination_result & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
 };
 
-typedef struct _Airavata_searchExperimentsByApplication_presult__isset {
-  _Airavata_searchExperimentsByApplication_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
+typedef struct _Airavata_searchProjectsByProjectDescWithPagination_presult__isset {
+  _Airavata_searchProjectsByProjectDescWithPagination_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
   bool success;
   bool ire;
   bool ace;
   bool ase;
-} _Airavata_searchExperimentsByApplication_presult__isset;
+} _Airavata_searchProjectsByProjectDescWithPagination_presult__isset;
 
-class Airavata_searchExperimentsByApplication_presult {
+class Airavata_searchProjectsByProjectDescWithPagination_presult {
  public:
 
 
-  virtual ~Airavata_searchExperimentsByApplication_presult() throw() {}
+  virtual ~Airavata_searchProjectsByProjectDescWithPagination_presult() throw() {}
 
-  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> * success;
+  std::vector< ::apache::airavata::model::workspace::Project> * success;
    ::apache::airavata::api::error::InvalidRequestException ire;
    ::apache::airavata::api::error::AiravataClientException ace;
    ::apache::airavata::api::error::AiravataSystemException ase;
 
-  _Airavata_searchExperimentsByApplication_presult__isset __isset;
+  _Airavata_searchProjectsByProjectDescWithPagination_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+
+class Airavata_searchExperimentsByName_args {
+ public:
+
+  Airavata_searchExperimentsByName_args() : gatewayId(), userName(), expName() {
+  }
+
+  virtual ~Airavata_searchExperimentsByName_args() throw() {}
+
+  std::string gatewayId;
+  std::string userName;
+  std::string expName;
+
+  void __set_gatewayId(const std::string& val) {
+    gatewayId = val;
+  }
+
+  void __set_userName(const std::string& val) {
+    userName = val;
+  }
+
+  void __set_expName(const std::string& val) {
+    expName = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByName_args & rhs) const
+  {
+    if (!(gatewayId == rhs.gatewayId))
+      return false;
+    if (!(userName == rhs.userName))
+      return false;
+    if (!(expName == rhs.expName))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByName_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByName_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class Airavata_searchExperimentsByName_pargs {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByName_pargs() throw() {}
+
+  const std::string* gatewayId;
+  const std::string* userName;
+  const std::string* expName;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByName_result__isset {
+  _Airavata_searchExperimentsByName_result__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByName_result__isset;
+
+class Airavata_searchExperimentsByName_result {
+ public:
+
+  Airavata_searchExperimentsByName_result() {
+  }
+
+  virtual ~Airavata_searchExperimentsByName_result() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary>  success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByName_result__isset __isset;
+
+  void __set_success(const std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & val) {
+    success = val;
+  }
+
+  void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val) {
+    ire = val;
+  }
+
+  void __set_ace(const  ::apache::airavata::api::error::AiravataClientException& val) {
+    ace = val;
+  }
+
+  void __set_ase(const  ::apache::airavata::api::error::AiravataSystemException& val) {
+    ase = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByName_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ire == rhs.ire))
+      return false;
+    if (!(ace == rhs.ace))
+      return false;
+    if (!(ase == rhs.ase))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByName_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByName_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByName_presult__isset {
+  _Airavata_searchExperimentsByName_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByName_presult__isset;
+
+class Airavata_searchExperimentsByName_presult {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByName_presult() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> * success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByName_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+
+class Airavata_searchExperimentsByNameWithPagination_args {
+ public:
+
+  Airavata_searchExperimentsByNameWithPagination_args() : gatewayId(), userName(), expName(), limit(0), offset(0) {
+  }
+
+  virtual ~Airavata_searchExperimentsByNameWithPagination_args() throw() {}
+
+  std::string gatewayId;
+  std::string userName;
+  std::string expName;
+  int32_t limit;
+  int32_t offset;
+
+  void __set_gatewayId(const std::string& val) {
+    gatewayId = val;
+  }
+
+  void __set_userName(const std::string& val) {
+    userName = val;
+  }
+
+  void __set_expName(const std::string& val) {
+    expName = val;
+  }
+
+  void __set_limit(const int32_t val) {
+    limit = val;
+  }
+
+  void __set_offset(const int32_t val) {
+    offset = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByNameWithPagination_args & rhs) const
+  {
+    if (!(gatewayId == rhs.gatewayId))
+      return false;
+    if (!(userName == rhs.userName))
+      return false;
+    if (!(expName == rhs.expName))
+      return false;
+    if (!(limit == rhs.limit))
+      return false;
+    if (!(offset == rhs.offset))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByNameWithPagination_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByNameWithPagination_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class Airavata_searchExperimentsByNameWithPagination_pargs {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByNameWithPagination_pargs() throw() {}
+
+  const std::string* gatewayId;
+  const std::string* userName;
+  const std::string* expName;
+  const int32_t* limit;
+  const int32_t* offset;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByNameWithPagination_result__isset {
+  _Airavata_searchExperimentsByNameWithPagination_result__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByNameWithPagination_result__isset;
+
+class Airavata_searchExperimentsByNameWithPagination_result {
+ public:
+
+  Airavata_searchExperimentsByNameWithPagination_result() {
+  }
+
+  virtual ~Airavata_searchExperimentsByNameWithPagination_result() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary>  success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByNameWithPagination_result__isset __isset;
+
+  void __set_success(const std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & val) {
+    success = val;
+  }
+
+  void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val) {
+    ire = val;
+  }
+
+  void __set_ace(const  ::apache::airavata::api::error::AiravataClientException& val) {
+    ace = val;
+  }
+
+  void __set_ase(const  ::apache::airavata::api::error::AiravataSystemException& val) {
+    ase = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByNameWithPagination_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ire == rhs.ire))
+      return false;
+    if (!(ace == rhs.ace))
+      return false;
+    if (!(ase == rhs.ase))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByNameWithPagination_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByNameWithPagination_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByNameWithPagination_presult__isset {
+  _Airavata_searchExperimentsByNameWithPagination_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByNameWithPagination_presult__isset;
+
+class Airavata_searchExperimentsByNameWithPagination_presult {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByNameWithPagination_presult() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> * success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByNameWithPagination_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+
+class Airavata_searchExperimentsByDesc_args {
+ public:
+
+  Airavata_searchExperimentsByDesc_args() : gatewayId(), userName(), description() {
+  }
+
+  virtual ~Airavata_searchExperimentsByDesc_args() throw() {}
+
+  std::string gatewayId;
+  std::string userName;
+  std::string description;
+
+  void __set_gatewayId(const std::string& val) {
+    gatewayId = val;
+  }
+
+  void __set_userName(const std::string& val) {
+    userName = val;
+  }
+
+  void __set_description(const std::string& val) {
+    description = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByDesc_args & rhs) const
+  {
+    if (!(gatewayId == rhs.gatewayId))
+      return false;
+    if (!(userName == rhs.userName))
+      return false;
+    if (!(description == rhs.description))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByDesc_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByDesc_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class Airavata_searchExperimentsByDesc_pargs {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByDesc_pargs() throw() {}
+
+  const std::string* gatewayId;
+  const std::string* userName;
+  const std::string* description;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByDesc_result__isset {
+  _Airavata_searchExperimentsByDesc_result__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByDesc_result__isset;
+
+class Airavata_searchExperimentsByDesc_result {
+ public:
+
+  Airavata_searchExperimentsByDesc_result() {
+  }
+
+  virtual ~Airavata_searchExperimentsByDesc_result() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary>  success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByDesc_result__isset __isset;
+
+  void __set_success(const std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & val) {
+    success = val;
+  }
+
+  void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val) {
+    ire = val;
+  }
+
+  void __set_ace(const  ::apache::airavata::api::error::AiravataClientException& val) {
+    ace = val;
+  }
+
+  void __set_ase(const  ::apache::airavata::api::error::AiravataSystemException& val) {
+    ase = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByDesc_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ire == rhs.ire))
+      return false;
+    if (!(ace == rhs.ace))
+      return false;
+    if (!(ase == rhs.ase))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByDesc_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByDesc_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByDesc_presult__isset {
+  _Airavata_searchExperimentsByDesc_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByDesc_presult__isset;
+
+class Airavata_searchExperimentsByDesc_presult {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByDesc_presult() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> * success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByDesc_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+
+class Airavata_searchExperimentsByDescWithPagination_args {
+ public:
+
+  Airavata_searchExperimentsByDescWithPagination_args() : gatewayId(), userName(), description(), limit(0), offset(0) {
+  }
+
+  virtual ~Airavata_searchExperimentsByDescWithPagination_args() throw() {}
+
+  std::string gatewayId;
+  std::string userName;
+  std::string description;
+  int32_t limit;
+  int32_t offset;
+
+  void __set_gatewayId(const std::string& val) {
+    gatewayId = val;
+  }
+
+  void __set_userName(const std::string& val) {
+    userName = val;
+  }
+
+  void __set_description(const std::string& val) {
+    description = val;
+  }
+
+  void __set_limit(const int32_t val) {
+    limit = val;
+  }
+
+  void __set_offset(const int32_t val) {
+    offset = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByDescWithPagination_args & rhs) const
+  {
+    if (!(gatewayId == rhs.gatewayId))
+      return false;
+    if (!(userName == rhs.userName))
+      return false;
+    if (!(description == rhs.description))
+      return false;
+    if (!(limit == rhs.limit))
+      return false;
+    if (!(offset == rhs.offset))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByDescWithPagination_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByDescWithPagination_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class Airavata_searchExperimentsByDescWithPagination_pargs {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByDescWithPagination_pargs() throw() {}
+
+  const std::string* gatewayId;
+  const std::string* userName;
+  const std::string* description;
+  const int32_t* limit;
+  const int32_t* offset;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByDescWithPagination_result__isset {
+  _Airavata_searchExperimentsByDescWithPagination_result__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByDescWithPagination_result__isset;
+
+class Airavata_searchExperimentsByDescWithPagination_result {
+ public:
+
+  Airavata_searchExperimentsByDescWithPagination_result() {
+  }
+
+  virtual ~Airavata_searchExperimentsByDescWithPagination_result() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary>  success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByDescWithPagination_result__isset __isset;
+
+  void __set_success(const std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & val) {
+    success = val;
+  }
+
+  void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val) {
+    ire = val;
+  }
+
+  void __set_ace(const  ::apache::airavata::api::error::AiravataClientException& val) {
+    ace = val;
+  }
+
+  void __set_ase(const  ::apache::airavata::api::error::AiravataSystemException& val) {
+    ase = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByDescWithPagination_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ire == rhs.ire))
+      return false;
+    if (!(ace == rhs.ace))
+      return false;
+    if (!(ase == rhs.ase))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByDescWithPagination_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByDescWithPagination_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByDescWithPagination_presult__isset {
+  _Airavata_searchExperimentsByDescWithPagination_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByDescWithPagination_presult__isset;
+
+class Airavata_searchExperimentsByDescWithPagination_presult {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByDescWithPagination_presult() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> * success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByDescWithPagination_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+
+class Airavata_searchExperimentsByApplication_args {
+ public:
+
+  Airavata_searchExperimentsByApplication_args() : gatewayId(), userName(), applicationId() {
+  }
+
+  virtual ~Airavata_searchExperimentsByApplication_args() throw() {}
+
+  std::string gatewayId;
+  std::string userName;
+  std::string applicationId;
+
+  void __set_gatewayId(const std::string& val) {
+    gatewayId = val;
+  }
+
+  void __set_userName(const std::string& val) {
+    userName = val;
+  }
+
+  void __set_applicationId(const std::string& val) {
+    applicationId = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByApplication_args & rhs) const
+  {
+    if (!(gatewayId == rhs.gatewayId))
+      return false;
+    if (!(userName == rhs.userName))
+      return false;
+    if (!(applicationId == rhs.applicationId))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByApplication_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByApplication_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class Airavata_searchExperimentsByApplication_pargs {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByApplication_pargs() throw() {}
+
+  const std::string* gatewayId;
+  const std::string* userName;
+  const std::string* applicationId;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByApplication_result__isset {
+  _Airavata_searchExperimentsByApplication_result__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByApplication_result__isset;
+
+class Airavata_searchExperimentsByApplication_result {
+ public:
+
+  Airavata_searchExperimentsByApplication_result() {
+  }
+
+  virtual ~Airavata_searchExperimentsByApplication_result() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary>  success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByApplication_result__isset __isset;
+
+  void __set_success(const std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & val) {
+    success = val;
+  }
+
+  void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val) {
+    ire = val;
+  }
+
+  void __set_ace(const  ::apache::airavata::api::error::AiravataClientException& val) {
+    ace = val;
+  }
+
+  void __set_ase(const  ::apache::airavata::api::error::AiravataSystemException& val) {
+    ase = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByApplication_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ire == rhs.ire))
+      return false;
+    if (!(ace == rhs.ace))
+      return false;
+    if (!(ase == rhs.ase))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByApplication_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByApplication_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByApplication_presult__isset {
+  _Airavata_searchExperimentsByApplication_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByApplication_presult__isset;
+
+class Airavata_searchExperimentsByApplication_presult {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByApplication_presult() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> * success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByApplication_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+
+class Airavata_searchExperimentsByApplicationWithPagination_args {
+ public:
+
+  Airavata_searchExperimentsByApplicationWithPagination_args() : gatewayId(), userName(), applicationId(), limit(0), offset(0) {
+  }
+
+  virtual ~Airavata_searchExperimentsByApplicationWithPagination_args() throw() {}
+
+  std::string gatewayId;
+  std::string userName;
+  std::string applicationId;
+  int32_t limit;
+  int32_t offset;
+
+  void __set_gatewayId(const std::string& val) {
+    gatewayId = val;
+  }
+
+  void __set_userName(const std::string& val) {
+    userName = val;
+  }
+
+  void __set_applicationId(const std::string& val) {
+    applicationId = val;
+  }
+
+  void __set_limit(const int32_t val) {
+    limit = val;
+  }
+
+  void __set_offset(const int32_t val) {
+    offset = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByApplicationWithPagination_args & rhs) const
+  {
+    if (!(gatewayId == rhs.gatewayId))
+      return false;
+    if (!(userName == rhs.userName))
+      return false;
+    if (!(applicationId == rhs.applicationId))
+      return false;
+    if (!(limit == rhs.limit))
+      return false;
+    if (!(offset == rhs.offset))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByApplicationWithPagination_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByApplicationWithPagination_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class Airavata_searchExperimentsByApplicationWithPagination_pargs {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByApplicationWithPagination_pargs() throw() {}
+
+  const std::string* gatewayId;
+  const std::string* userName;
+  const std::string* applicationId;
+  const int32_t* limit;
+  const int32_t* offset;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByApplicationWithPagination_result__isset {
+  _Airavata_searchExperimentsByApplicationWithPagination_result__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByApplicationWithPagination_result__isset;
+
+class Airavata_searchExperimentsByApplicationWithPagination_result {
+ public:
+
+  Airavata_searchExperimentsByApplicationWithPagination_result() {
+  }
+
+  virtual ~Airavata_searchExperimentsByApplicationWithPagination_result() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary>  success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByApplicationWithPagination_result__isset __isset;
+
+  void __set_success(const std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & val) {
+    success = val;
+  }
+
+  void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val) {
+    ire = val;
+  }
+
+  void __set_ace(const  ::apache::airavata::api::error::AiravataClientException& val) {
+    ace = val;
+  }
+
+  void __set_ase(const  ::apache::airavata::api::error::AiravataSystemException& val) {
+    ase = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByApplicationWithPagination_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ire == rhs.ire))
+      return false;
+    if (!(ace == rhs.ace))
+      return false;
+    if (!(ase == rhs.ase))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByApplicationWithPagination_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByApplicationWithPagination_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByApplicationWithPagination_presult__isset {
+  _Airavata_searchExperimentsByApplicationWithPagination_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByApplicationWithPagination_presult__isset;
+
+class Airavata_searchExperimentsByApplicationWithPagination_presult {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByApplicationWithPagination_presult() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> * success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByApplicationWithPagination_presult__isset __isset;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
 
@@ -3320,14 +4336,485 @@ class Airavata_searchExperimentsByApplication_presult {
 class Airavata_searchExperimentsByStatus_args {
  public:
 
-  Airavata_searchExperimentsByStatus_args() : gatewayId(), userName(), experimentState(( ::apache::airavata::model::workspace::experiment::ExperimentState::type)0) {
+  Airavata_searchExperimentsByStatus_args() : gatewayId(), userName(), experimentState(( ::apache::airavata::model::workspace::experiment::ExperimentState::type)0) {
+  }
+
+  virtual ~Airavata_searchExperimentsByStatus_args() throw() {}
+
+  std::string gatewayId;
+  std::string userName;
+   ::apache::airavata::model::workspace::experiment::ExperimentState::type experimentState;
+
+  void __set_gatewayId(const std::string& val) {
+    gatewayId = val;
+  }
+
+  void __set_userName(const std::string& val) {
+    userName = val;
+  }
+
+  void __set_experimentState(const  ::apache::airavata::model::workspace::experiment::ExperimentState::type val) {
+    experimentState = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByStatus_args & rhs) const
+  {
+    if (!(gatewayId == rhs.gatewayId))
+      return false;
+    if (!(userName == rhs.userName))
+      return false;
+    if (!(experimentState == rhs.experimentState))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByStatus_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByStatus_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class Airavata_searchExperimentsByStatus_pargs {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByStatus_pargs() throw() {}
+
+  const std::string* gatewayId;
+  const std::string* userName;
+  const  ::apache::airavata::model::workspace::experiment::ExperimentState::type* experimentState;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByStatus_result__isset {
+  _Airavata_searchExperimentsByStatus_result__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByStatus_result__isset;
+
+class Airavata_searchExperimentsByStatus_result {
+ public:
+
+  Airavata_searchExperimentsByStatus_result() {
+  }
+
+  virtual ~Airavata_searchExperimentsByStatus_result() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary>  success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByStatus_result__isset __isset;
+
+  void __set_success(const std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & val) {
+    success = val;
+  }
+
+  void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val) {
+    ire = val;
+  }
+
+  void __set_ace(const  ::apache::airavata::api::error::AiravataClientException& val) {
+    ace = val;
+  }
+
+  void __set_ase(const  ::apache::airavata::api::error::AiravataSystemException& val) {
+    ase = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByStatus_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ire == rhs.ire))
+      return false;
+    if (!(ace == rhs.ace))
+      return false;
+    if (!(ase == rhs.ase))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByStatus_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByStatus_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByStatus_presult__isset {
+  _Airavata_searchExperimentsByStatus_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByStatus_presult__isset;
+
+class Airavata_searchExperimentsByStatus_presult {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByStatus_presult() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> * success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByStatus_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+
+class Airavata_searchExperimentsByStatusWithPagination_args {
+ public:
+
+  Airavata_searchExperimentsByStatusWithPagination_args() : gatewayId(), userName(), experimentState(( ::apache::airavata::model::workspace::experiment::ExperimentState::type)0), limit(0), offset(0) {
+  }
+
+  virtual ~Airavata_searchExperimentsByStatusWithPagination_args() throw() {}
+
+  std::string gatewayId;
+  std::string userName;
+   ::apache::airavata::model::workspace::experiment::ExperimentState::type experimentState;
+  int32_t limit;
+  int32_t offset;
+
+  void __set_gatewayId(const std::string& val) {
+    gatewayId = val;
+  }
+
+  void __set_userName(const std::string& val) {
+    userName = val;
+  }
+
+  void __set_experimentState(const  ::apache::airavata::model::workspace::experiment::ExperimentState::type val) {
+    experimentState = val;
+  }
+
+  void __set_limit(const int32_t val) {
+    limit = val;
+  }
+
+  void __set_offset(const int32_t val) {
+    offset = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByStatusWithPagination_args & rhs) const
+  {
+    if (!(gatewayId == rhs.gatewayId))
+      return false;
+    if (!(userName == rhs.userName))
+      return false;
+    if (!(experimentState == rhs.experimentState))
+      return false;
+    if (!(limit == rhs.limit))
+      return false;
+    if (!(offset == rhs.offset))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByStatusWithPagination_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByStatusWithPagination_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class Airavata_searchExperimentsByStatusWithPagination_pargs {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByStatusWithPagination_pargs() throw() {}
+
+  const std::string* gatewayId;
+  const std::string* userName;
+  const  ::apache::airavata::model::workspace::experiment::ExperimentState::type* experimentState;
+  const int32_t* limit;
+  const int32_t* offset;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByStatusWithPagination_result__isset {
+  _Airavata_searchExperimentsByStatusWithPagination_result__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByStatusWithPagination_result__isset;
+
+class Airavata_searchExperimentsByStatusWithPagination_result {
+ public:
+
+  Airavata_searchExperimentsByStatusWithPagination_result() {
+  }
+
+  virtual ~Airavata_searchExperimentsByStatusWithPagination_result() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary>  success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByStatusWithPagination_result__isset __isset;
+
+  void __set_success(const std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & val) {
+    success = val;
+  }
+
+  void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val) {
+    ire = val;
+  }
+
+  void __set_ace(const  ::apache::airavata::api::error::AiravataClientException& val) {
+    ace = val;
+  }
+
+  void __set_ase(const  ::apache::airavata::api::error::AiravataSystemException& val) {
+    ase = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByStatusWithPagination_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ire == rhs.ire))
+      return false;
+    if (!(ace == rhs.ace))
+      return false;
+    if (!(ase == rhs.ase))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByStatusWithPagination_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByStatusWithPagination_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByStatusWithPagination_presult__isset {
+  _Airavata_searchExperimentsByStatusWithPagination_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByStatusWithPagination_presult__isset;
+
+class Airavata_searchExperimentsByStatusWithPagination_presult {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByStatusWithPagination_presult() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> * success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByStatusWithPagination_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+
+class Airavata_searchExperimentsByCreationTime_args {
+ public:
+
+  Airavata_searchExperimentsByCreationTime_args() : gatewayId(), userName(), fromTime(0), toTime(0) {
+  }
+
+  virtual ~Airavata_searchExperimentsByCreationTime_args() throw() {}
+
+  std::string gatewayId;
+  std::string userName;
+  int64_t fromTime;
+  int64_t toTime;
+
+  void __set_gatewayId(const std::string& val) {
+    gatewayId = val;
+  }
+
+  void __set_userName(const std::string& val) {
+    userName = val;
+  }
+
+  void __set_fromTime(const int64_t val) {
+    fromTime = val;
+  }
+
+  void __set_toTime(const int64_t val) {
+    toTime = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByCreationTime_args & rhs) const
+  {
+    if (!(gatewayId == rhs.gatewayId))
+      return false;
+    if (!(userName == rhs.userName))
+      return false;
+    if (!(fromTime == rhs.fromTime))
+      return false;
+    if (!(toTime == rhs.toTime))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByCreationTime_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByCreationTime_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class Airavata_searchExperimentsByCreationTime_pargs {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByCreationTime_pargs() throw() {}
+
+  const std::string* gatewayId;
+  const std::string* userName;
+  const int64_t* fromTime;
+  const int64_t* toTime;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByCreationTime_result__isset {
+  _Airavata_searchExperimentsByCreationTime_result__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByCreationTime_result__isset;
+
+class Airavata_searchExperimentsByCreationTime_result {
+ public:
+
+  Airavata_searchExperimentsByCreationTime_result() {
+  }
+
+  virtual ~Airavata_searchExperimentsByCreationTime_result() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary>  success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByCreationTime_result__isset __isset;
+
+  void __set_success(const std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> & val) {
+    success = val;
+  }
+
+  void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val) {
+    ire = val;
+  }
+
+  void __set_ace(const  ::apache::airavata::api::error::AiravataClientException& val) {
+    ace = val;
+  }
+
+  void __set_ase(const  ::apache::airavata::api::error::AiravataSystemException& val) {
+    ase = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByCreationTime_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ire == rhs.ire))
+      return false;
+    if (!(ace == rhs.ace))
+      return false;
+    if (!(ase == rhs.ase))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_searchExperimentsByCreationTime_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_searchExperimentsByCreationTime_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_searchExperimentsByCreationTime_presult__isset {
+  _Airavata_searchExperimentsByCreationTime_presult__isset() : success(false), ire(false), ace(false), ase(false) {}
+  bool success;
+  bool ire;
+  bool ace;
+  bool ase;
+} _Airavata_searchExperimentsByCreationTime_presult__isset;
+
+class Airavata_searchExperimentsByCreationTime_presult {
+ public:
+
+
+  virtual ~Airavata_searchExperimentsByCreationTime_presult() throw() {}
+
+  std::vector< ::apache::airavata::model::workspace::experiment::ExperimentSummary> * success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+
+  _Airavata_searchExperimentsByCreationTime_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+
+class Airavata_searchExperimentsByCreationTimeWithPagination_args {
+ public:
+
+  Airavata_searchExperimentsByCreationTimeWithPagination_args() : gatewayId(), userName(), fromTime(0), toTime(0), limit(0), offset(0) {
   }
 
-  virtual ~Airavata_searchExperimentsByStatus_args() throw() {}
+  virtual ~Airavata_searchExperimentsByCreationTimeWithPagination_args() throw() {}
 
   std::string gatewayId;
   std::string userName;
-   ::apache::airavata::model::workspace::experiment::ExperimentState::type experimentState;
+  int64_t fromTime;
+  int64_t toTime;
+  int32_t limit;
+  int32_t offset;
 
   void __set_gatewayId(const std::string& val) {
     gatewayId = val;
@@ -3337,25 +4824,43 @@ class Airavata_searchExperimentsByStatus_args {
     userName = val;
   }
 
-  void __set_experimentState(const  ::apache::airavata::model::workspace::experiment::ExperimentState::type val) {
-    experimentState = val;
+  void __set_fromTime(const int64_t val) {
+    fromTime = val;
   }
 
-  bool operator == (const Airavata_searchExperimentsByStatus_args & rhs) const
+  void __set_toTime(const int64_t val) {
+    toTime = val;
+  }
+
+  void __set_limit(const int32_t val) {
+    limit = val;
+  }
+
+  void __set_offset(const int32_t val) {
+    offset = val;
+  }
+
+  bool operator == (const Airavata_searchExperimentsByCreationTimeWithPagination_args & rhs) const
   {
     if (!(gatewayId == rhs.gatewayId))
       return false;
     if (!(userName == rhs.userName))
       return false;
-    if (!(experimentState == rhs.experimentState))
+    if (!(fromTime == rhs.fromTime))
+      return false;
+    if (!(toTime == rhs.toTime))
+      return false;
+    if (!(limit == rhs.limit))
+      return false;
+    if (!(offset == rhs.offset))
       return false;
     return true;
   }
-  bool operator != (const Airavata_searchExperimentsByStatus_args &rhs) const {
+  bool operator != (const Airavata_searchExperimentsByCreationTimeWithPagination_args &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const Airavata_searchExperimentsByStatus_args & ) const;
+  bool operator < (const Airavata_searchExperimentsByCreationTimeWithPagination_args & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
@@ -3363,42 +4868,45 @@ class Airavat

<TRUNCATED>

[12/19] airavata git commit: Merge branch 'master' of https://github.com/apache/airavata

Posted by sm...@apache.org.
Merge branch 'master' of https://github.com/apache/airavata


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

Branch: refs/heads/master
Commit: 7bf5fc19bc7e406eac3604e83495b464c1862cde
Parents: c6ee5ce 4117cbc
Author: Supun Nakandala <su...@gmail.com>
Authored: Mon Apr 27 20:57:53 2015 +0530
Committer: Supun Nakandala <su...@gmail.com>
Committed: Mon Apr 27 20:57:53 2015 +0530

----------------------------------------------------------------------
 .../server/src/main/resources/airavata-server.properties    | 1 +
 .../gfac/monitor/email/parser/SLURMEmailParser.java         | 2 +-
 .../airavata/persistance/registry/jpa/JPAConstants.java     | 1 +
 .../airavata/persistance/registry/jpa/ResourceUtils.java    | 4 ++--
 .../airavata/persistance/registry/jpa/resources/Utils.java  | 9 +++++++++
 5 files changed, 14 insertions(+), 3 deletions(-)
----------------------------------------------------------------------



[05/19] airavata git commit: Changing Airavata API to support paginated result retrieval of Project and Experiment data

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/0a3d857b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
index 5d20b4f..3938ddd 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
@@ -32,15 +32,25 @@ interface AiravataIf {
   public function getProject($projectId);
   public function deleteProject($projectId);
   public function getAllUserProjects($gatewayId, $userName);
+  public function getAllUserProjectsWithPagination($gatewayId, $userName, $limit, $offset);
   public function searchProjectsByProjectName($gatewayId, $userName, $projectName);
+  public function searchProjectsByProjectNameWithPagination($gatewayId, $userName, $projectName, $limit, $offset);
   public function searchProjectsByProjectDesc($gatewayId, $userName, $description);
+  public function searchProjectsByProjectDescWithPagination($gatewayId, $userName, $description, $limit, $offset);
   public function searchExperimentsByName($gatewayId, $userName, $expName);
+  public function searchExperimentsByNameWithPagination($gatewayId, $userName, $expName, $limit, $offset);
   public function searchExperimentsByDesc($gatewayId, $userName, $description);
+  public function searchExperimentsByDescWithPagination($gatewayId, $userName, $description, $limit, $offset);
   public function searchExperimentsByApplication($gatewayId, $userName, $applicationId);
+  public function searchExperimentsByApplicationWithPagination($gatewayId, $userName, $applicationId, $limit, $offset);
   public function searchExperimentsByStatus($gatewayId, $userName, $experimentState);
+  public function searchExperimentsByStatusWithPagination($gatewayId, $userName, $experimentState, $limit, $offset);
   public function searchExperimentsByCreationTime($gatewayId, $userName, $fromTime, $toTime);
+  public function searchExperimentsByCreationTimeWithPagination($gatewayId, $userName, $fromTime, $toTime, $limit, $offset);
   public function getAllExperimentsInProject($projectId);
+  public function getAllExperimentsInProjectWithPagination($projectId, $limit, $offset);
   public function getAllUserExperiments($gatewayId, $userName);
+  public function getAllUserExperimentsWithPagination($gatewayId, $userName, $limit, $offset);
   public function createExperiment($gatewayId, \Airavata\Model\Workspace\Experiment\Experiment $experiment);
   public function getExperiment($airavataExperimentId);
   public function updateExperiment($airavataExperimentId, \Airavata\Model\Workspace\Experiment\Experiment $experiment);
@@ -1052,6 +1062,69 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("getAllUserProjects failed: unknown result");
   }
 
+  public function getAllUserProjectsWithPagination($gatewayId, $userName, $limit, $offset)
+  {
+    $this->send_getAllUserProjectsWithPagination($gatewayId, $userName, $limit, $offset);
+    return $this->recv_getAllUserProjectsWithPagination();
+  }
+
+  public function send_getAllUserProjectsWithPagination($gatewayId, $userName, $limit, $offset)
+  {
+    $args = new \Airavata\API\Airavata_getAllUserProjectsWithPagination_args();
+    $args->gatewayId = $gatewayId;
+    $args->userName = $userName;
+    $args->limit = $limit;
+    $args->offset = $offset;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getAllUserProjectsWithPagination', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getAllUserProjectsWithPagination', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getAllUserProjectsWithPagination()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_getAllUserProjectsWithPagination_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_getAllUserProjectsWithPagination_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->ire !== null) {
+      throw $result->ire;
+    }
+    if ($result->ace !== null) {
+      throw $result->ace;
+    }
+    if ($result->ase !== null) {
+      throw $result->ase;
+    }
+    throw new \Exception("getAllUserProjectsWithPagination failed: unknown result");
+  }
+
   public function searchProjectsByProjectName($gatewayId, $userName, $projectName)
   {
     $this->send_searchProjectsByProjectName($gatewayId, $userName, $projectName);
@@ -1114,6 +1187,70 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("searchProjectsByProjectName failed: unknown result");
   }
 
+  public function searchProjectsByProjectNameWithPagination($gatewayId, $userName, $projectName, $limit, $offset)
+  {
+    $this->send_searchProjectsByProjectNameWithPagination($gatewayId, $userName, $projectName, $limit, $offset);
+    return $this->recv_searchProjectsByProjectNameWithPagination();
+  }
+
+  public function send_searchProjectsByProjectNameWithPagination($gatewayId, $userName, $projectName, $limit, $offset)
+  {
+    $args = new \Airavata\API\Airavata_searchProjectsByProjectNameWithPagination_args();
+    $args->gatewayId = $gatewayId;
+    $args->userName = $userName;
+    $args->projectName = $projectName;
+    $args->limit = $limit;
+    $args->offset = $offset;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'searchProjectsByProjectNameWithPagination', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('searchProjectsByProjectNameWithPagination', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_searchProjectsByProjectNameWithPagination()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_searchProjectsByProjectNameWithPagination_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_searchProjectsByProjectNameWithPagination_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->ire !== null) {
+      throw $result->ire;
+    }
+    if ($result->ace !== null) {
+      throw $result->ace;
+    }
+    if ($result->ase !== null) {
+      throw $result->ase;
+    }
+    throw new \Exception("searchProjectsByProjectNameWithPagination failed: unknown result");
+  }
+
   public function searchProjectsByProjectDesc($gatewayId, $userName, $description)
   {
     $this->send_searchProjectsByProjectDesc($gatewayId, $userName, $description);
@@ -1176,6 +1313,70 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("searchProjectsByProjectDesc failed: unknown result");
   }
 
+  public function searchProjectsByProjectDescWithPagination($gatewayId, $userName, $description, $limit, $offset)
+  {
+    $this->send_searchProjectsByProjectDescWithPagination($gatewayId, $userName, $description, $limit, $offset);
+    return $this->recv_searchProjectsByProjectDescWithPagination();
+  }
+
+  public function send_searchProjectsByProjectDescWithPagination($gatewayId, $userName, $description, $limit, $offset)
+  {
+    $args = new \Airavata\API\Airavata_searchProjectsByProjectDescWithPagination_args();
+    $args->gatewayId = $gatewayId;
+    $args->userName = $userName;
+    $args->description = $description;
+    $args->limit = $limit;
+    $args->offset = $offset;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'searchProjectsByProjectDescWithPagination', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('searchProjectsByProjectDescWithPagination', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_searchProjectsByProjectDescWithPagination()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_searchProjectsByProjectDescWithPagination_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_searchProjectsByProjectDescWithPagination_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->ire !== null) {
+      throw $result->ire;
+    }
+    if ($result->ace !== null) {
+      throw $result->ace;
+    }
+    if ($result->ase !== null) {
+      throw $result->ase;
+    }
+    throw new \Exception("searchProjectsByProjectDescWithPagination failed: unknown result");
+  }
+
   public function searchExperimentsByName($gatewayId, $userName, $expName)
   {
     $this->send_searchExperimentsByName($gatewayId, $userName, $expName);
@@ -1238,6 +1439,70 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("searchExperimentsByName failed: unknown result");
   }
 
+  public function searchExperimentsByNameWithPagination($gatewayId, $userName, $expName, $limit, $offset)
+  {
+    $this->send_searchExperimentsByNameWithPagination($gatewayId, $userName, $expName, $limit, $offset);
+    return $this->recv_searchExperimentsByNameWithPagination();
+  }
+
+  public function send_searchExperimentsByNameWithPagination($gatewayId, $userName, $expName, $limit, $offset)
+  {
+    $args = new \Airavata\API\Airavata_searchExperimentsByNameWithPagination_args();
+    $args->gatewayId = $gatewayId;
+    $args->userName = $userName;
+    $args->expName = $expName;
+    $args->limit = $limit;
+    $args->offset = $offset;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'searchExperimentsByNameWithPagination', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('searchExperimentsByNameWithPagination', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_searchExperimentsByNameWithPagination()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_searchExperimentsByNameWithPagination_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_searchExperimentsByNameWithPagination_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->ire !== null) {
+      throw $result->ire;
+    }
+    if ($result->ace !== null) {
+      throw $result->ace;
+    }
+    if ($result->ase !== null) {
+      throw $result->ase;
+    }
+    throw new \Exception("searchExperimentsByNameWithPagination failed: unknown result");
+  }
+
   public function searchExperimentsByDesc($gatewayId, $userName, $description)
   {
     $this->send_searchExperimentsByDesc($gatewayId, $userName, $description);
@@ -1300,6 +1565,70 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("searchExperimentsByDesc failed: unknown result");
   }
 
+  public function searchExperimentsByDescWithPagination($gatewayId, $userName, $description, $limit, $offset)
+  {
+    $this->send_searchExperimentsByDescWithPagination($gatewayId, $userName, $description, $limit, $offset);
+    return $this->recv_searchExperimentsByDescWithPagination();
+  }
+
+  public function send_searchExperimentsByDescWithPagination($gatewayId, $userName, $description, $limit, $offset)
+  {
+    $args = new \Airavata\API\Airavata_searchExperimentsByDescWithPagination_args();
+    $args->gatewayId = $gatewayId;
+    $args->userName = $userName;
+    $args->description = $description;
+    $args->limit = $limit;
+    $args->offset = $offset;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'searchExperimentsByDescWithPagination', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('searchExperimentsByDescWithPagination', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_searchExperimentsByDescWithPagination()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_searchExperimentsByDescWithPagination_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_searchExperimentsByDescWithPagination_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->ire !== null) {
+      throw $result->ire;
+    }
+    if ($result->ace !== null) {
+      throw $result->ace;
+    }
+    if ($result->ase !== null) {
+      throw $result->ase;
+    }
+    throw new \Exception("searchExperimentsByDescWithPagination failed: unknown result");
+  }
+
   public function searchExperimentsByApplication($gatewayId, $userName, $applicationId)
   {
     $this->send_searchExperimentsByApplication($gatewayId, $userName, $applicationId);
@@ -1362,6 +1691,70 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("searchExperimentsByApplication failed: unknown result");
   }
 
+  public function searchExperimentsByApplicationWithPagination($gatewayId, $userName, $applicationId, $limit, $offset)
+  {
+    $this->send_searchExperimentsByApplicationWithPagination($gatewayId, $userName, $applicationId, $limit, $offset);
+    return $this->recv_searchExperimentsByApplicationWithPagination();
+  }
+
+  public function send_searchExperimentsByApplicationWithPagination($gatewayId, $userName, $applicationId, $limit, $offset)
+  {
+    $args = new \Airavata\API\Airavata_searchExperimentsByApplicationWithPagination_args();
+    $args->gatewayId = $gatewayId;
+    $args->userName = $userName;
+    $args->applicationId = $applicationId;
+    $args->limit = $limit;
+    $args->offset = $offset;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'searchExperimentsByApplicationWithPagination', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('searchExperimentsByApplicationWithPagination', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_searchExperimentsByApplicationWithPagination()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_searchExperimentsByApplicationWithPagination_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_searchExperimentsByApplicationWithPagination_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->ire !== null) {
+      throw $result->ire;
+    }
+    if ($result->ace !== null) {
+      throw $result->ace;
+    }
+    if ($result->ase !== null) {
+      throw $result->ase;
+    }
+    throw new \Exception("searchExperimentsByApplicationWithPagination failed: unknown result");
+  }
+
   public function searchExperimentsByStatus($gatewayId, $userName, $experimentState)
   {
     $this->send_searchExperimentsByStatus($gatewayId, $userName, $experimentState);
@@ -1424,6 +1817,70 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("searchExperimentsByStatus failed: unknown result");
   }
 
+  public function searchExperimentsByStatusWithPagination($gatewayId, $userName, $experimentState, $limit, $offset)
+  {
+    $this->send_searchExperimentsByStatusWithPagination($gatewayId, $userName, $experimentState, $limit, $offset);
+    return $this->recv_searchExperimentsByStatusWithPagination();
+  }
+
+  public function send_searchExperimentsByStatusWithPagination($gatewayId, $userName, $experimentState, $limit, $offset)
+  {
+    $args = new \Airavata\API\Airavata_searchExperimentsByStatusWithPagination_args();
+    $args->gatewayId = $gatewayId;
+    $args->userName = $userName;
+    $args->experimentState = $experimentState;
+    $args->limit = $limit;
+    $args->offset = $offset;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'searchExperimentsByStatusWithPagination', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('searchExperimentsByStatusWithPagination', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_searchExperimentsByStatusWithPagination()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_searchExperimentsByStatusWithPagination_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_searchExperimentsByStatusWithPagination_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->ire !== null) {
+      throw $result->ire;
+    }
+    if ($result->ace !== null) {
+      throw $result->ace;
+    }
+    if ($result->ase !== null) {
+      throw $result->ase;
+    }
+    throw new \Exception("searchExperimentsByStatusWithPagination failed: unknown result");
+  }
+
   public function searchExperimentsByCreationTime($gatewayId, $userName, $fromTime, $toTime)
   {
     $this->send_searchExperimentsByCreationTime($gatewayId, $userName, $fromTime, $toTime);
@@ -1487,6 +1944,71 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("searchExperimentsByCreationTime failed: unknown result");
   }
 
+  public function searchExperimentsByCreationTimeWithPagination($gatewayId, $userName, $fromTime, $toTime, $limit, $offset)
+  {
+    $this->send_searchExperimentsByCreationTimeWithPagination($gatewayId, $userName, $fromTime, $toTime, $limit, $offset);
+    return $this->recv_searchExperimentsByCreationTimeWithPagination();
+  }
+
+  public function send_searchExperimentsByCreationTimeWithPagination($gatewayId, $userName, $fromTime, $toTime, $limit, $offset)
+  {
+    $args = new \Airavata\API\Airavata_searchExperimentsByCreationTimeWithPagination_args();
+    $args->gatewayId = $gatewayId;
+    $args->userName = $userName;
+    $args->fromTime = $fromTime;
+    $args->toTime = $toTime;
+    $args->limit = $limit;
+    $args->offset = $offset;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'searchExperimentsByCreationTimeWithPagination', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('searchExperimentsByCreationTimeWithPagination', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_searchExperimentsByCreationTimeWithPagination()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_searchExperimentsByCreationTimeWithPagination_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_searchExperimentsByCreationTimeWithPagination_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->ire !== null) {
+      throw $result->ire;
+    }
+    if ($result->ace !== null) {
+      throw $result->ace;
+    }
+    if ($result->ase !== null) {
+      throw $result->ase;
+    }
+    throw new \Exception("searchExperimentsByCreationTimeWithPagination failed: unknown result");
+  }
+
   public function getAllExperimentsInProject($projectId)
   {
     $this->send_getAllExperimentsInProject($projectId);
@@ -1550,6 +2072,71 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("getAllExperimentsInProject failed: unknown result");
   }
 
+  public function getAllExperimentsInProjectWithPagination($projectId, $limit, $offset)
+  {
+    $this->send_getAllExperimentsInProjectWithPagination($projectId, $limit, $offset);
+    return $this->recv_getAllExperimentsInProjectWithPagination();
+  }
+
+  public function send_getAllExperimentsInProjectWithPagination($projectId, $limit, $offset)
+  {
+    $args = new \Airavata\API\Airavata_getAllExperimentsInProjectWithPagination_args();
+    $args->projectId = $projectId;
+    $args->limit = $limit;
+    $args->offset = $offset;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getAllExperimentsInProjectWithPagination', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getAllExperimentsInProjectWithPagination', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getAllExperimentsInProjectWithPagination()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_getAllExperimentsInProjectWithPagination_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_getAllExperimentsInProjectWithPagination_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->ire !== null) {
+      throw $result->ire;
+    }
+    if ($result->ace !== null) {
+      throw $result->ace;
+    }
+    if ($result->ase !== null) {
+      throw $result->ase;
+    }
+    if ($result->pnfe !== null) {
+      throw $result->pnfe;
+    }
+    throw new \Exception("getAllExperimentsInProjectWithPagination failed: unknown result");
+  }
+
   public function getAllUserExperiments($gatewayId, $userName)
   {
     $this->send_getAllUserExperiments($gatewayId, $userName);
@@ -1611,6 +2198,69 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("getAllUserExperiments failed: unknown result");
   }
 
+  public function getAllUserExperimentsWithPagination($gatewayId, $userName, $limit, $offset)
+  {
+    $this->send_getAllUserExperimentsWithPagination($gatewayId, $userName, $limit, $offset);
+    return $this->recv_getAllUserExperimentsWithPagination();
+  }
+
+  public function send_getAllUserExperimentsWithPagination($gatewayId, $userName, $limit, $offset)
+  {
+    $args = new \Airavata\API\Airavata_getAllUserExperimentsWithPagination_args();
+    $args->gatewayId = $gatewayId;
+    $args->userName = $userName;
+    $args->limit = $limit;
+    $args->offset = $offset;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getAllUserExperimentsWithPagination', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getAllUserExperimentsWithPagination', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getAllUserExperimentsWithPagination()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_getAllUserExperimentsWithPagination_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_getAllUserExperimentsWithPagination_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->ire !== null) {
+      throw $result->ire;
+    }
+    if ($result->ace !== null) {
+      throw $result->ace;
+    }
+    if ($result->ase !== null) {
+      throw $result->ase;
+    }
+    throw new \Exception("getAllUserExperimentsWithPagination failed: unknown result");
+  }
+
   public function createExperiment($gatewayId, \Airavata\Model\Workspace\Experiment\Experiment $experiment)
   {
     $this->send_createExperiment($gatewayId, $experiment);
@@ -10426,7 +11076,2689 @@ class Airavata_getAllUserProjects_result {
   }
 
   public function getName() {
-    return 'Airavata_getAllUserProjects_result';
+    return 'Airavata_getAllUserProjects_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::LST) {
+            $this->success = array();
+            $_size16 = 0;
+            $_etype19 = 0;
+            $xfer += $input->readListBegin($_etype19, $_size16);
+            for ($_i20 = 0; $_i20 < $_size16; ++$_i20)
+            {
+              $elem21 = null;
+              $elem21 = new \Airavata\Model\Workspace\Project();
+              $xfer += $elem21->read($input);
+              $this->success []= $elem21;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->ire = new \Airavata\API\Error\InvalidRequestException();
+            $xfer += $this->ire->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ace = new \Airavata\API\Error\AiravataClientException();
+            $xfer += $this->ace->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->ase = new \Airavata\API\Error\AiravataSystemException();
+            $xfer += $this->ase->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_getAllUserProjects_result');
+    if ($this->success !== null) {
+      if (!is_array($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->success));
+        {
+          foreach ($this->success as $iter22)
+          {
+            $xfer += $iter22->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ire !== null) {
+      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
+      $xfer += $this->ire->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ace !== null) {
+      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 2);
+      $xfer += $this->ace->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ase !== null) {
+      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 3);
+      $xfer += $this->ase->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_getAllUserProjectsWithPagination_args {
+  static $_TSPEC;
+
+  public $gatewayId = null;
+  public $userName = null;
+  public $limit = null;
+  public $offset = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'userName',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'limit',
+          'type' => TType::I32,
+          ),
+        4 => array(
+          'var' => 'offset',
+          'type' => TType::I32,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
+      }
+      if (isset($vals['limit'])) {
+        $this->limit = $vals['limit'];
+      }
+      if (isset($vals['offset'])) {
+        $this->offset = $vals['offset'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_getAllUserProjectsWithPagination_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->limit);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->offset);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_getAllUserProjectsWithPagination_args');
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
+      $xfer += $output->writeString($this->userName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->limit !== null) {
+      $xfer += $output->writeFieldBegin('limit', TType::I32, 3);
+      $xfer += $output->writeI32($this->limit);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->offset !== null) {
+      $xfer += $output->writeFieldBegin('offset', TType::I32, 4);
+      $xfer += $output->writeI32($this->offset);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_getAllUserProjectsWithPagination_result {
+  static $_TSPEC;
+
+  public $success = null;
+  public $ire = null;
+  public $ace = null;
+  public $ase = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Project',
+            ),
+          ),
+        1 => array(
+          'var' => 'ire',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\InvalidRequestException',
+          ),
+        2 => array(
+          'var' => 'ace',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataClientException',
+          ),
+        3 => array(
+          'var' => 'ase',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataSystemException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['ire'])) {
+        $this->ire = $vals['ire'];
+      }
+      if (isset($vals['ace'])) {
+        $this->ace = $vals['ace'];
+      }
+      if (isset($vals['ase'])) {
+        $this->ase = $vals['ase'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_getAllUserProjectsWithPagination_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::LST) {
+            $this->success = array();
+            $_size23 = 0;
+            $_etype26 = 0;
+            $xfer += $input->readListBegin($_etype26, $_size23);
+            for ($_i27 = 0; $_i27 < $_size23; ++$_i27)
+            {
+              $elem28 = null;
+              $elem28 = new \Airavata\Model\Workspace\Project();
+              $xfer += $elem28->read($input);
+              $this->success []= $elem28;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->ire = new \Airavata\API\Error\InvalidRequestException();
+            $xfer += $this->ire->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ace = new \Airavata\API\Error\AiravataClientException();
+            $xfer += $this->ace->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->ase = new \Airavata\API\Error\AiravataSystemException();
+            $xfer += $this->ase->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_getAllUserProjectsWithPagination_result');
+    if ($this->success !== null) {
+      if (!is_array($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->success));
+        {
+          foreach ($this->success as $iter29)
+          {
+            $xfer += $iter29->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ire !== null) {
+      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
+      $xfer += $this->ire->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ace !== null) {
+      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 2);
+      $xfer += $this->ace->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ase !== null) {
+      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 3);
+      $xfer += $this->ase->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_searchProjectsByProjectName_args {
+  static $_TSPEC;
+
+  public $gatewayId = null;
+  public $userName = null;
+  public $projectName = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'userName',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'projectName',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
+      }
+      if (isset($vals['projectName'])) {
+        $this->projectName = $vals['projectName'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_searchProjectsByProjectName_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->projectName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_searchProjectsByProjectName_args');
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
+      $xfer += $output->writeString($this->userName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->projectName !== null) {
+      $xfer += $output->writeFieldBegin('projectName', TType::STRING, 3);
+      $xfer += $output->writeString($this->projectName);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_searchProjectsByProjectName_result {
+  static $_TSPEC;
+
+  public $success = null;
+  public $ire = null;
+  public $ace = null;
+  public $ase = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Project',
+            ),
+          ),
+        1 => array(
+          'var' => 'ire',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\InvalidRequestException',
+          ),
+        2 => array(
+          'var' => 'ace',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataClientException',
+          ),
+        3 => array(
+          'var' => 'ase',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataSystemException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['ire'])) {
+        $this->ire = $vals['ire'];
+      }
+      if (isset($vals['ace'])) {
+        $this->ace = $vals['ace'];
+      }
+      if (isset($vals['ase'])) {
+        $this->ase = $vals['ase'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_searchProjectsByProjectName_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::LST) {
+            $this->success = array();
+            $_size30 = 0;
+            $_etype33 = 0;
+            $xfer += $input->readListBegin($_etype33, $_size30);
+            for ($_i34 = 0; $_i34 < $_size30; ++$_i34)
+            {
+              $elem35 = null;
+              $elem35 = new \Airavata\Model\Workspace\Project();
+              $xfer += $elem35->read($input);
+              $this->success []= $elem35;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->ire = new \Airavata\API\Error\InvalidRequestException();
+            $xfer += $this->ire->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ace = new \Airavata\API\Error\AiravataClientException();
+            $xfer += $this->ace->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->ase = new \Airavata\API\Error\AiravataSystemException();
+            $xfer += $this->ase->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_searchProjectsByProjectName_result');
+    if ($this->success !== null) {
+      if (!is_array($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->success));
+        {
+          foreach ($this->success as $iter36)
+          {
+            $xfer += $iter36->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ire !== null) {
+      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
+      $xfer += $this->ire->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ace !== null) {
+      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 2);
+      $xfer += $this->ace->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ase !== null) {
+      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 3);
+      $xfer += $this->ase->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_searchProjectsByProjectNameWithPagination_args {
+  static $_TSPEC;
+
+  public $gatewayId = null;
+  public $userName = null;
+  public $projectName = null;
+  public $limit = null;
+  public $offset = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'userName',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'projectName',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'limit',
+          'type' => TType::I32,
+          ),
+        5 => array(
+          'var' => 'offset',
+          'type' => TType::I32,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
+      }
+      if (isset($vals['projectName'])) {
+        $this->projectName = $vals['projectName'];
+      }
+      if (isset($vals['limit'])) {
+        $this->limit = $vals['limit'];
+      }
+      if (isset($vals['offset'])) {
+        $this->offset = $vals['offset'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_searchProjectsByProjectNameWithPagination_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->projectName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->limit);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->offset);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_searchProjectsByProjectNameWithPagination_args');
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
+      $xfer += $output->writeString($this->userName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->projectName !== null) {
+      $xfer += $output->writeFieldBegin('projectName', TType::STRING, 3);
+      $xfer += $output->writeString($this->projectName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->limit !== null) {
+      $xfer += $output->writeFieldBegin('limit', TType::I32, 4);
+      $xfer += $output->writeI32($this->limit);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->offset !== null) {
+      $xfer += $output->writeFieldBegin('offset', TType::I32, 5);
+      $xfer += $output->writeI32($this->offset);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_searchProjectsByProjectNameWithPagination_result {
+  static $_TSPEC;
+
+  public $success = null;
+  public $ire = null;
+  public $ace = null;
+  public $ase = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Project',
+            ),
+          ),
+        1 => array(
+          'var' => 'ire',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\InvalidRequestException',
+          ),
+        2 => array(
+          'var' => 'ace',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataClientException',
+          ),
+        3 => array(
+          'var' => 'ase',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataSystemException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['ire'])) {
+        $this->ire = $vals['ire'];
+      }
+      if (isset($vals['ace'])) {
+        $this->ace = $vals['ace'];
+      }
+      if (isset($vals['ase'])) {
+        $this->ase = $vals['ase'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_searchProjectsByProjectNameWithPagination_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::LST) {
+            $this->success = array();
+            $_size37 = 0;
+            $_etype40 = 0;
+            $xfer += $input->readListBegin($_etype40, $_size37);
+            for ($_i41 = 0; $_i41 < $_size37; ++$_i41)
+            {
+              $elem42 = null;
+              $elem42 = new \Airavata\Model\Workspace\Project();
+              $xfer += $elem42->read($input);
+              $this->success []= $elem42;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->ire = new \Airavata\API\Error\InvalidRequestException();
+            $xfer += $this->ire->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ace = new \Airavata\API\Error\AiravataClientException();
+            $xfer += $this->ace->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->ase = new \Airavata\API\Error\AiravataSystemException();
+            $xfer += $this->ase->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_searchProjectsByProjectNameWithPagination_result');
+    if ($this->success !== null) {
+      if (!is_array($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->success));
+        {
+          foreach ($this->success as $iter43)
+          {
+            $xfer += $iter43->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ire !== null) {
+      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
+      $xfer += $this->ire->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ace !== null) {
+      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 2);
+      $xfer += $this->ace->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ase !== null) {
+      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 3);
+      $xfer += $this->ase->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_searchProjectsByProjectDesc_args {
+  static $_TSPEC;
+
+  public $gatewayId = null;
+  public $userName = null;
+  public $description = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'userName',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'description',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
+      }
+      if (isset($vals['description'])) {
+        $this->description = $vals['description'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_searchProjectsByProjectDesc_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->description);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_searchProjectsByProjectDesc_args');
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
+      $xfer += $output->writeString($this->userName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->description !== null) {
+      $xfer += $output->writeFieldBegin('description', TType::STRING, 3);
+      $xfer += $output->writeString($this->description);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_searchProjectsByProjectDesc_result {
+  static $_TSPEC;
+
+  public $success = null;
+  public $ire = null;
+  public $ace = null;
+  public $ase = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Project',
+            ),
+          ),
+        1 => array(
+          'var' => 'ire',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\InvalidRequestException',
+          ),
+        2 => array(
+          'var' => 'ace',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataClientException',
+          ),
+        3 => array(
+          'var' => 'ase',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataSystemException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['ire'])) {
+        $this->ire = $vals['ire'];
+      }
+      if (isset($vals['ace'])) {
+        $this->ace = $vals['ace'];
+      }
+      if (isset($vals['ase'])) {
+        $this->ase = $vals['ase'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_searchProjectsByProjectDesc_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::LST) {
+            $this->success = array();
+            $_size44 = 0;
+            $_etype47 = 0;
+            $xfer += $input->readListBegin($_etype47, $_size44);
+            for ($_i48 = 0; $_i48 < $_size44; ++$_i48)
+            {
+              $elem49 = null;
+              $elem49 = new \Airavata\Model\Workspace\Project();
+              $xfer += $elem49->read($input);
+              $this->success []= $elem49;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->ire = new \Airavata\API\Error\InvalidRequestException();
+            $xfer += $this->ire->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ace = new \Airavata\API\Error\AiravataClientException();
+            $xfer += $this->ace->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->ase = new \Airavata\API\Error\AiravataSystemException();
+            $xfer += $this->ase->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_searchProjectsByProjectDesc_result');
+    if ($this->success !== null) {
+      if (!is_array($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->success));
+        {
+          foreach ($this->success as $iter50)
+          {
+            $xfer += $iter50->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ire !== null) {
+      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
+      $xfer += $this->ire->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ace !== null) {
+      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 2);
+      $xfer += $this->ace->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ase !== null) {
+      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 3);
+      $xfer += $this->ase->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_searchProjectsByProjectDescWithPagination_args {
+  static $_TSPEC;
+
+  public $gatewayId = null;
+  public $userName = null;
+  public $description = null;
+  public $limit = null;
+  public $offset = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'userName',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'description',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'limit',
+          'type' => TType::I32,
+          ),
+        5 => array(
+          'var' => 'offset',
+          'type' => TType::I32,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
+      }
+      if (isset($vals['description'])) {
+        $this->description = $vals['description'];
+      }
+      if (isset($vals['limit'])) {
+        $this->limit = $vals['limit'];
+      }
+      if (isset($vals['offset'])) {
+        $this->offset = $vals['offset'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_searchProjectsByProjectDescWithPagination_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->description);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->limit);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->offset);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_searchProjectsByProjectDescWithPagination_args');
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
+      $xfer += $output->writeString($this->userName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->description !== null) {
+      $xfer += $output->writeFieldBegin('description', TType::STRING, 3);
+      $xfer += $output->writeString($this->description);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->limit !== null) {
+      $xfer += $output->writeFieldBegin('limit', TType::I32, 4);
+      $xfer += $output->writeI32($this->limit);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->offset !== null) {
+      $xfer += $output->writeFieldBegin('offset', TType::I32, 5);
+      $xfer += $output->writeI32($this->offset);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_searchProjectsByProjectDescWithPagination_result {
+  static $_TSPEC;
+
+  public $success = null;
+  public $ire = null;
+  public $ace = null;
+  public $ase = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Project',
+            ),
+          ),
+        1 => array(
+          'var' => 'ire',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\InvalidRequestException',
+          ),
+        2 => array(
+          'var' => 'ace',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataClientException',
+          ),
+        3 => array(
+          'var' => 'ase',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataSystemException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['ire'])) {
+        $this->ire = $vals['ire'];
+      }
+      if (isset($vals['ace'])) {
+        $this->ace = $vals['ace'];
+      }
+      if (isset($vals['ase'])) {
+        $this->ase = $vals['ase'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_searchProjectsByProjectDescWithPagination_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::LST) {
+            $this->success = array();
+            $_size51 = 0;
+            $_etype54 = 0;
+            $xfer += $input->readListBegin($_etype54, $_size51);
+            for ($_i55 = 0; $_i55 < $_size51; ++$_i55)
+            {
+              $elem56 = null;
+              $elem56 = new \Airavata\Model\Workspace\Project();
+              $xfer += $elem56->read($input);
+              $this->success []= $elem56;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->ire = new \Airavata\API\Error\InvalidRequestException();
+            $xfer += $this->ire->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ace = new \Airavata\API\Error\AiravataClientException();
+            $xfer += $this->ace->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->ase = new \Airavata\API\Error\AiravataSystemException();
+            $xfer += $this->ase->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_searchProjectsByProjectDescWithPagination_result');
+    if ($this->success !== null) {
+      if (!is_array($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->success));
+        {
+          foreach ($this->success as $iter57)
+          {
+            $xfer += $iter57->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ire !== null) {
+      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
+      $xfer += $this->ire->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ace !== null) {
+      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 2);
+      $xfer += $this->ace->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ase !== null) {
+      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 3);
+      $xfer += $this->ase->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_searchExperimentsByName_args {
+  static $_TSPEC;
+
+  public $gatewayId = null;
+  public $userName = null;
+  public $expName = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'userName',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'expName',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
+      }
+      if (isset($vals['expName'])) {
+        $this->expName = $vals['expName'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_searchExperimentsByName_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->expName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_searchExperimentsByName_args');
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 1);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
+      $xfer += $output->writeString($this->userName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->expName !== null) {
+      $xfer += $output->writeFieldBegin('expName', TType::STRING, 3);
+      $xfer += $output->writeString($this->expName);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_searchExperimentsByName_result {
+  static $_TSPEC;
+
+  public $success = null;
+  public $ire = null;
+  public $ace = null;
+  public $ase = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Experiment\ExperimentSummary',
+            ),
+          ),
+        1 => array(
+          'var' => 'ire',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\InvalidRequestException',
+          ),
+        2 => array(
+          'var' => 'ace',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataClientException',
+          ),
+        3 => array(
+          'var' => 'ase',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataSystemException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['ire'])) {
+        $this->ire = $vals['ire'];
+      }
+      if (isset($vals['ace'])) {
+        $this->ace = $vals['ace'];
+      }
+      if (isset($vals['ase'])) {
+        $this->ase = $vals['ase'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_searchExperimentsByName_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::LST) {
+            $this->success = array();
+            $_size58 = 0;
+            $_etype61 = 0;
+            $xfer += $input->readListBegin($_etype61, $_size58);
+            for ($_i62 = 0; $_i62 < $_size58; ++$_i62)
+            {
+              $elem63 = null;
+              $elem63 = new \Airavata\Model\Workspace\Experiment\ExperimentSummary();
+              $xfer += $elem63->read($input);
+              $this->success []= $elem63;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->ire = new \Airavata\API\Error\InvalidRequestException();
+            $xfer += $this->ire->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ace = new \Airavata\API\Error\AiravataClientException();
+            $xfer += $this->ace->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->ase = new \Airavata\API\Error\AiravataSystemException();
+            $xfer += $this->ase->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_searchExperimentsByName_result');
+    if ($this->success !== null) {
+      if (!is_array($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->success));
+        {
+          foreach ($this->success as $iter64)
+          {
+            $xfer += $iter64->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ire !== null) {
+      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
+      $xfer += $this->ire->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ace !== null) {
+      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 2);
+      $xfer += $this->ace->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ase !== null) {
+      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 3);
+      $xfer += $this->ase->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_searchExperimentsByNameWithPagination_args {
+  static $_TSPEC;
+
+  public $gatewayId = null;
+  public $userName = null;
+  public $expName = null;
+  public $limit = null;
+  public $offset = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'userName',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'expName',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'limit',
+          'type' => TType::I32,
+          ),
+        5 => array(
+          'var' => 'offset',
+          'type' => TType::I32,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
+      }
+      if (isset($vals['expName'])) {
+        $this->expName = $vals['expName'];
+      }
+      if (isset($vals['limit'])) {
+        $this->limit = $vals['limit'];
+      }
+      if (isset($vals['offset'])) {
+        $this->offset = $vals['offset'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_searchExperimentsByNameWithPagination_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->expName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->limit);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($

<TRUNCATED>