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 2017/12/09 18:57:49 UTC

[airavata-sandbox] branch master updated: Added methods for request reject or approval in CPI and implemented them in handler (#29)

This is an automated email from the ASF dual-hosted git repository.

smarru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-sandbox.git


The following commit(s) were added to refs/heads/master by this push:
     new b89df8d  Added methods for request reject or approval in CPI and implemented them in handler (#29)
b89df8d is described below

commit b89df8d503a8ae0debe05b8ee3aff14b1f45d11f
Author: Madrina Thapa <ma...@gmail.com>
AuthorDate: Sat Dec 9 13:57:47 2017 -0500

    Added methods for request reject or approval in CPI and implemented them in handler (#29)
    
    * Implemented methods in service handler and repositories
    
    * Added methods for request reject or approval in CPI and implemented them in handler
    
    Updated createAllocationRequest and AssignReviewers method.
---
 .../server/AllocationManagerServerHandler.java     |   90 +-
 .../manager/models/AllocationManagerException.java |    4 +-
 .../airavata/allocation/manager/models/Domain.java |    4 +-
 .../allocation/manager/models/ProjectReviewer.java |    4 +-
 .../manager/models/ProjectReviewerPK.java          |    4 +-
 .../manager/models/UserAllocationDetail.java       |    4 +-
 .../manager/models/UserAllocationDetailPK.java     |    4 +-
 .../allocation/manager/models/UserDetail.java      |    4 +-
 .../service/cpi/AllocationRegistryService.java     | 2386 +++++++++++++++++++-
 .../api-docs/allocation_manager_cpi.html           |   93 +-
 .../api-docs/allocation_manager_models.html        |   28 +-
 .../allocation-manager-docs/api-docs/index.html    |    2 +
 .../thrift_models/allocation_manager_cpi.thrift    |   10 +-
 13 files changed, 2424 insertions(+), 213 deletions(-)

diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/server/AllocationManagerServerHandler.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/server/AllocationManagerServerHandler.java
index f340cc1..ba6ef52 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/server/AllocationManagerServerHandler.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/server/AllocationManagerServerHandler.java
@@ -116,28 +116,14 @@ public class AllocationManagerServerHandler implements AllocationRegistryService
     @Override
     public boolean updateAllocationRequest(UserAllocationDetail reqDetails) throws TException {
         try {
-            UserAllocationDetail userAlloc = new UserAllocationDetail();
-            //Update UserAllocationDetail field.
-            userAlloc.id.setProjectId(reqDetails.id.projectId);
-            userAlloc.setApplicationsToBeUsed(reqDetails.applicationsToBeUsed);
-            userAlloc.setDiskUsageRangePerJob(reqDetails.diskUsageRangePerJob);
-            userAlloc.setDocuments(reqDetails.documents);
-            userAlloc.setFieldOfScience(reqDetails.fieldOfScience);
-            userAlloc.setKeywords(reqDetails.keywords);
-            userAlloc.setMaxMemoryPerCpu(reqDetails.maxMemoryPerCpu);
-            userAlloc.setNumberOfCpuPerJob(reqDetails.numberOfCpuPerJob);
-            userAlloc.setProjectDescription(reqDetails.projectDescription);
-            userAlloc.setServiceUnits(reqDetails.serviceUnits);
-            userAlloc.setSpecificResourceSelection(reqDetails.specificResourceSelection);
-            userAlloc.setTypeOfAllocation(reqDetails.typeOfAllocation);
-            userAlloc.setTypicalSuPerJob(reqDetails.typicalSuPerJob);
-
-            (new UserAllocationDetailRepository()).update(userAlloc);
-            return true;
+            if ((new UserAllocationDetailRepository()).update(reqDetails).getId() != null) {
+                return true;
+            }
         } catch (Exception ex) {
             logger.error(ex.getMessage(), ex);
             throw new AllocationManagerException().setMessage(ex.getMessage() + " Stack trace:" + ExceptionUtils.getStackTrace(ex));
         }
+        return false;
     }
 
     @Override
@@ -283,6 +269,8 @@ public class AllocationManagerServerHandler implements AllocationRegistryService
             if (!isReviewer(reviewerId)) {
                 throw new AllocationManagerException().setMessage("Invalid reviewer id!");
             }
+            
+            //Insert a new row for the reviewer in ProjectReviewer table
             ProjectReviewerEntityPK projectReviewerEntityPK = new ProjectReviewerEntityPK();
             projectReviewerEntityPK.setProjectId(projectId);
             projectReviewerEntityPK.setReviewer(reviewerId);
@@ -291,7 +279,19 @@ public class AllocationManagerServerHandler implements AllocationRegistryService
 
             ProjectReviewer projectReviewerObj = new ProjectReviewerRepository().create(projectReviewer);
             if (projectReviewerObj.getId() != null) {
-                return true;
+                //Update the status to under review.
+                 //Construct the primary key
+                UserAllocationDetailEntityPK userAllocDetailPk = new UserAllocationDetailEntityPK();
+                userAllocDetailPk.setProjectId(projectId);
+                userAllocDetailPk.setUsername(new UserAllocationDetailRepository().getPrimaryOwner(projectId));
+
+                //Create UserAllocationDetail object to call update method
+                UserAllocationDetail userAllocDetail = new UserAllocationDetail();
+                userAllocDetail = new UserAllocationDetailRepository().get(userAllocDetailPk);
+                userAllocDetail.setStatus(DBConstants.RequestStatus.UNDER_REVIEW);
+
+                //Updates the request
+                return updateAllocationRequest(userAllocDetail);
             }
         } catch (Exception ex) {
             throw new AllocationManagerException().setMessage(ex.getMessage() + " Stack trace:" + ExceptionUtils.getStackTrace(ex));
@@ -344,6 +344,7 @@ public class AllocationManagerServerHandler implements AllocationRegistryService
         return false;
     }
 
+    /*Method to get a list of all reviewers not yet assigned to a request*/
     @Override
     public List<UserDetail> getAllUnassignedReviewersForRequest(String projectId) throws TException {
         List<UserDetail> userDetailList = getAllReviewers();
@@ -362,4 +363,55 @@ public class AllocationManagerServerHandler implements AllocationRegistryService
         }
         return reviewerList;
     }
+
+    /*Method to update the request's start date, end date, status and award allocation on approval*/
+    @Override
+    public boolean approveRequest(String projectId, String adminId, long startDate, long endDate, long awardAllocation) throws TException {
+        try {
+            if (!isAdmin(adminId)) {
+                throw new AllocationManagerException().setMessage("Invalid admin id!");
+            }
+            //Construct the primary key
+            UserAllocationDetailEntityPK userAllocDetailPk = new UserAllocationDetailEntityPK();
+            userAllocDetailPk.setProjectId(projectId);
+            userAllocDetailPk.setUsername(new UserAllocationDetailRepository().getPrimaryOwner(projectId));
+
+            //Create UserAllocationDetail object to call update method
+            UserAllocationDetail userAllocDetail = new UserAllocationDetail();
+            userAllocDetail = new UserAllocationDetailRepository().get(userAllocDetailPk);
+            userAllocDetail.setStatus(DBConstants.RequestStatus.APPROVED);
+            userAllocDetail.setStartDate(startDate);
+            userAllocDetail.setEndDate(endDate);
+            userAllocDetail.setAwardAllocation(awardAllocation);
+
+            //updates the request
+            return updateAllocationRequest(userAllocDetail);
+        } catch (Exception ex) {
+            throw new AllocationManagerException().setMessage(ex.getMessage() + " Stack trace:" + ExceptionUtils.getStackTrace(ex));
+        }
+    }
+
+    /*Method to update the request status to rejected on reject of a request*/
+    @Override
+    public boolean rejectRequest(String projectId, String adminId) throws TException {
+        try {
+            if (!isAdmin(adminId)) {
+                throw new AllocationManagerException().setMessage("Invalid admin id!");
+            }
+            //Construct the primary key
+            UserAllocationDetailEntityPK userAllocDetailPk = new UserAllocationDetailEntityPK();
+            userAllocDetailPk.setProjectId(projectId);
+            userAllocDetailPk.setUsername(new UserAllocationDetailRepository().getPrimaryOwner(projectId));
+
+            //Create UserAllocationDetail object to call update method
+            UserAllocationDetail userAllocDetail = new UserAllocationDetail();
+            userAllocDetail = new UserAllocationDetailRepository().get(userAllocDetailPk);
+            userAllocDetail.setStatus(DBConstants.RequestStatus.REJECTED);
+            
+            //Updates the request
+            return updateAllocationRequest(userAllocDetail);
+        } catch (Exception ex) {
+            throw new AllocationManagerException().setMessage(ex.getMessage() + " Stack trace:" + ExceptionUtils.getStackTrace(ex));
+        }
+    }
 }
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/AllocationManagerException.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/AllocationManagerException.java
index 7e5aa8d..24647dd 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/AllocationManagerException.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/AllocationManagerException.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -11,7 +11,7 @@ package org.apache.airavata.allocation.manager.models;
  * <p>Exception model used in the allocation manager service</p>
  * 
  */
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class AllocationManagerException extends org.apache.thrift.TException implements org.apache.thrift.TBase<AllocationManagerException, AllocationManagerException._Fields>, java.io.Serializable, Cloneable, Comparable<AllocationManagerException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AllocationManagerException");
 
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/Domain.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/Domain.java
index 2ff7671..6de324d 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/Domain.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/Domain.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -16,7 +16,7 @@ package org.apache.airavata.allocation.manager.models;
  * <li>updatedTime: Time when domain was updated</li>
  * 
  */
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>, java.io.Serializable, Cloneable, Comparable<Domain> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Domain");
 
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewer.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewer.java
index 0dce8d7..70185f2 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewer.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewer.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -17,7 +17,7 @@ package org.apache.airavata.allocation.manager.models;
  * <li>status: Status of the allocation request</li>
  * 
  */
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class ProjectReviewer implements org.apache.thrift.TBase<ProjectReviewer, ProjectReviewer._Fields>, java.io.Serializable, Cloneable, Comparable<ProjectReviewer> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProjectReviewer");
 
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewerPK.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewerPK.java
index cae6246..2ca2a85 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewerPK.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewerPK.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -7,7 +7,7 @@
 package org.apache.airavata.allocation.manager.models;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class ProjectReviewerPK implements org.apache.thrift.TBase<ProjectReviewerPK, ProjectReviewerPK._Fields>, java.io.Serializable, Cloneable, Comparable<ProjectReviewerPK> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProjectReviewerPK");
 
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserAllocationDetail.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserAllocationDetail.java
index bced1ce..256ff4c 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserAllocationDetail.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserAllocationDetail.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -27,7 +27,7 @@ package org.apache.airavata.allocation.manager.models;
  * <li>typicalSuPerJob :  An optional field to help reviewer and PI for allocation approval</li>
  * 
  */
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class UserAllocationDetail implements org.apache.thrift.TBase<UserAllocationDetail, UserAllocationDetail._Fields>, java.io.Serializable, Cloneable, Comparable<UserAllocationDetail> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UserAllocationDetail");
 
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserAllocationDetailPK.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserAllocationDetailPK.java
index b0e6fde..1e50a0c 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserAllocationDetailPK.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserAllocationDetailPK.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -13,7 +13,7 @@ package org.apache.airavata.allocation.manager.models;
  * <li>sponsorName : Name of supervisor, manager, group leader or self</li>
  * 
  */
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class UserAllocationDetailPK implements org.apache.thrift.TBase<UserAllocationDetailPK, UserAllocationDetailPK._Fields>, java.io.Serializable, Cloneable, Comparable<UserAllocationDetailPK> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UserAllocationDetailPK");
 
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserDetail.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserDetail.java
index a1cd9a6..6348406 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserDetail.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserDetail.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -16,7 +16,7 @@ package org.apache.airavata.allocation.manager.models;
  * <li>userType: Type of the user</li>
  * 
  */
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class UserDetail implements org.apache.thrift.TBase<UserDetail, UserDetail._Fields>, java.io.Serializable, Cloneable, Comparable<UserDetail> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UserDetail");
 
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/service/cpi/AllocationRegistryService.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/service/cpi/AllocationRegistryService.java
index ebfdb94..0380308 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/service/cpi/AllocationRegistryService.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/service/cpi/AllocationRegistryService.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -7,7 +7,7 @@
 package org.apache.airavata.allocation.manager.service.cpi;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class AllocationRegistryService {
 
   public interface Iface {
@@ -158,6 +158,25 @@ public class AllocationRegistryService {
      */
     public java.util.List<org.apache.airavata.allocation.manager.models.UserDetail> getAllUnassignedReviewersForRequest(java.lang.String projectId) throws org.apache.thrift.TException;
 
+    /**
+     * <p>API method to approve a request</p>
+     * 
+     * @param projectId
+     * @param adminId
+     * @param startDate
+     * @param endDate
+     * @param awardAllocation
+     */
+    public boolean approveRequest(java.lang.String projectId, java.lang.String adminId, long startDate, long endDate, long awardAllocation) throws org.apache.thrift.TException;
+
+    /**
+     * <p>API method to reject a request</p>
+     * 
+     * @param projectId
+     * @param adminId
+     */
+    public boolean rejectRequest(java.lang.String projectId, java.lang.String adminId) throws org.apache.thrift.TException;
+
   }
 
   public interface AsyncIface {
@@ -202,6 +221,10 @@ public class AllocationRegistryService {
 
     public void getAllUnassignedReviewersForRequest(java.lang.String projectId, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.allocation.manager.models.UserDetail>> resultHandler) throws org.apache.thrift.TException;
 
+    public void approveRequest(java.lang.String projectId, java.lang.String adminId, long startDate, long endDate, long awardAllocation, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;
+
+    public void rejectRequest(java.lang.String projectId, java.lang.String adminId, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;
+
   }
 
   public static class Client extends org.apache.thrift.TServiceClient implements Iface {
@@ -688,6 +711,57 @@ public class AllocationRegistryService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getAllUnassignedReviewersForRequest failed: unknown result");
     }
 
+    public boolean approveRequest(java.lang.String projectId, java.lang.String adminId, long startDate, long endDate, long awardAllocation) throws org.apache.thrift.TException
+    {
+      send_approveRequest(projectId, adminId, startDate, endDate, awardAllocation);
+      return recv_approveRequest();
+    }
+
+    public void send_approveRequest(java.lang.String projectId, java.lang.String adminId, long startDate, long endDate, long awardAllocation) throws org.apache.thrift.TException
+    {
+      approveRequest_args args = new approveRequest_args();
+      args.setProjectId(projectId);
+      args.setAdminId(adminId);
+      args.setStartDate(startDate);
+      args.setEndDate(endDate);
+      args.setAwardAllocation(awardAllocation);
+      sendBase("approveRequest", args);
+    }
+
+    public boolean recv_approveRequest() throws org.apache.thrift.TException
+    {
+      approveRequest_result result = new approveRequest_result();
+      receiveBase(result, "approveRequest");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "approveRequest failed: unknown result");
+    }
+
+    public boolean rejectRequest(java.lang.String projectId, java.lang.String adminId) throws org.apache.thrift.TException
+    {
+      send_rejectRequest(projectId, adminId);
+      return recv_rejectRequest();
+    }
+
+    public void send_rejectRequest(java.lang.String projectId, java.lang.String adminId) throws org.apache.thrift.TException
+    {
+      rejectRequest_args args = new rejectRequest_args();
+      args.setProjectId(projectId);
+      args.setAdminId(adminId);
+      sendBase("rejectRequest", args);
+    }
+
+    public boolean recv_rejectRequest() throws org.apache.thrift.TException
+    {
+      rejectRequest_result result = new rejectRequest_result();
+      receiveBase(result, "rejectRequest");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "rejectRequest failed: unknown result");
+    }
+
   }
   public static class AsyncClient extends org.apache.thrift.async.TAsyncClient implements AsyncIface {
     public static class Factory implements org.apache.thrift.async.TAsyncClientFactory<AsyncClient> {
@@ -1367,6 +1441,85 @@ public class AllocationRegistryService {
       }
     }
 
+    public void approveRequest(java.lang.String projectId, java.lang.String adminId, long startDate, long endDate, long awardAllocation, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      approveRequest_call method_call = new approveRequest_call(projectId, adminId, startDate, endDate, awardAllocation, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class approveRequest_call extends org.apache.thrift.async.TAsyncMethodCall<java.lang.Boolean> {
+      private java.lang.String projectId;
+      private java.lang.String adminId;
+      private long startDate;
+      private long endDate;
+      private long awardAllocation;
+      public approveRequest_call(java.lang.String projectId, java.lang.String adminId, long startDate, long endDate, long awardAllocation, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> 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.adminId = adminId;
+        this.startDate = startDate;
+        this.endDate = endDate;
+        this.awardAllocation = awardAllocation;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("approveRequest", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        approveRequest_args args = new approveRequest_args();
+        args.setProjectId(projectId);
+        args.setAdminId(adminId);
+        args.setStartDate(startDate);
+        args.setEndDate(endDate);
+        args.setAwardAllocation(awardAllocation);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public java.lang.Boolean getResult() throws org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new java.lang.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_approveRequest();
+      }
+    }
+
+    public void rejectRequest(java.lang.String projectId, java.lang.String adminId, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      rejectRequest_call method_call = new rejectRequest_call(projectId, adminId, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class rejectRequest_call extends org.apache.thrift.async.TAsyncMethodCall<java.lang.Boolean> {
+      private java.lang.String projectId;
+      private java.lang.String adminId;
+      public rejectRequest_call(java.lang.String projectId, java.lang.String adminId, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> 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.adminId = adminId;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("rejectRequest", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        rejectRequest_args args = new rejectRequest_args();
+        args.setProjectId(projectId);
+        args.setAdminId(adminId);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public java.lang.Boolean getResult() throws org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new java.lang.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_rejectRequest();
+      }
+    }
+
   }
 
   public static class Processor<I extends Iface> extends org.apache.thrift.TBaseProcessor<I> implements org.apache.thrift.TProcessor {
@@ -1400,6 +1553,8 @@ public class AllocationRegistryService {
       processMap.put("getAllReviewsForARequest", new getAllReviewsForARequest());
       processMap.put("getAllReviewers", new getAllReviewers());
       processMap.put("getAllUnassignedReviewersForRequest", new getAllUnassignedReviewersForRequest());
+      processMap.put("approveRequest", new approveRequest());
+      processMap.put("rejectRequest", new rejectRequest());
       return processMap;
     }
 
@@ -1416,11 +1571,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public createAllocationRequest_result getResult(I iface, createAllocationRequest_args args) throws org.apache.thrift.TException {
         createAllocationRequest_result result = new createAllocationRequest_result();
         result.success = iface.createAllocationRequest(args.allocDetail);
@@ -1441,11 +1591,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public isAllocationRequestExists_result getResult(I iface, isAllocationRequestExists_args args) throws org.apache.thrift.TException {
         isAllocationRequestExists_result result = new isAllocationRequestExists_result();
         result.success = iface.isAllocationRequestExists(args.projectId, args.userName);
@@ -1467,11 +1612,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public deleteAllocationRequest_result getResult(I iface, deleteAllocationRequest_args args) throws org.apache.thrift.TException {
         deleteAllocationRequest_result result = new deleteAllocationRequest_result();
         result.success = iface.deleteAllocationRequest(args.projectId, args.userName);
@@ -1493,11 +1633,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getAllocationRequest_result getResult(I iface, getAllocationRequest_args args) throws org.apache.thrift.TException {
         getAllocationRequest_result result = new getAllocationRequest_result();
         result.success = iface.getAllocationRequest(args.projectId, args.userName);
@@ -1518,11 +1653,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public updateAllocationRequest_result getResult(I iface, updateAllocationRequest_args args) throws org.apache.thrift.TException {
         updateAllocationRequest_result result = new updateAllocationRequest_result();
         result.success = iface.updateAllocationRequest(args.allocDetail);
@@ -1544,11 +1674,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getAllocationRequestStatus_result getResult(I iface, getAllocationRequestStatus_args args) throws org.apache.thrift.TException {
         getAllocationRequestStatus_result result = new getAllocationRequestStatus_result();
         result.success = iface.getAllocationRequestStatus(args.projectId, args.userName);
@@ -1569,11 +1694,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getAllocationRequestUserEmail_result getResult(I iface, getAllocationRequestUserEmail_args args) throws org.apache.thrift.TException {
         getAllocationRequestUserEmail_result result = new getAllocationRequestUserEmail_result();
         result.success = iface.getAllocationRequestUserEmail(args.userName);
@@ -1594,11 +1714,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getAllocationManagerAdminEmail_result getResult(I iface, getAllocationManagerAdminEmail_args args) throws org.apache.thrift.TException {
         getAllocationManagerAdminEmail_result result = new getAllocationManagerAdminEmail_result();
         result.success = iface.getAllocationManagerAdminEmail(args.userType);
@@ -1619,11 +1734,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getAllocationRequestUserName_result getResult(I iface, getAllocationRequestUserName_args args) throws org.apache.thrift.TException {
         getAllocationRequestUserName_result result = new getAllocationRequestUserName_result();
         result.success = iface.getAllocationRequestUserName(args.projectId);
@@ -1644,11 +1754,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public updateAllocationRequestStatus_result getResult(I iface, updateAllocationRequestStatus_args args) throws org.apache.thrift.TException {
         updateAllocationRequestStatus_result result = new updateAllocationRequestStatus_result();
         iface.updateAllocationRequestStatus(args.projectId, args.status);
@@ -1669,11 +1774,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-     // @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getAllRequestsForAdmin_result getResult(I iface, getAllRequestsForAdmin_args args) throws org.apache.thrift.TException {
         getAllRequestsForAdmin_result result = new getAllRequestsForAdmin_result();
         result.success = iface.getAllRequestsForAdmin(args.userName);
@@ -1694,11 +1794,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public assignReviewers_result getResult(I iface, assignReviewers_args args) throws org.apache.thrift.TException {
         assignReviewers_result result = new assignReviewers_result();
         result.success = iface.assignReviewers(args.projectId, args.reviewerId, args.adminId);
@@ -1720,11 +1815,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public updateRequestByReviewer_result getResult(I iface, updateRequestByReviewer_args args) throws org.apache.thrift.TException {
         updateRequestByReviewer_result result = new updateRequestByReviewer_result();
         result.success = iface.updateRequestByReviewer(args.reviewerId, args.userAllocationDetail);
@@ -1746,11 +1836,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public isAdmin_result getResult(I iface, isAdmin_args args) throws org.apache.thrift.TException {
         isAdmin_result result = new isAdmin_result();
         result.success = iface.isAdmin(args.userName);
@@ -1772,11 +1857,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public isReviewer_result getResult(I iface, isReviewer_args args) throws org.apache.thrift.TException {
         isReviewer_result result = new isReviewer_result();
         result.success = iface.isReviewer(args.userName);
@@ -1798,11 +1878,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getAllRequestsForReviewers_result getResult(I iface, getAllRequestsForReviewers_args args) throws org.apache.thrift.TException {
         getAllRequestsForReviewers_result result = new getAllRequestsForReviewers_result();
         result.success = iface.getAllRequestsForReviewers(args.userName);
@@ -1823,11 +1898,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getUserDetails_result getResult(I iface, getUserDetails_args args) throws org.apache.thrift.TException {
         getUserDetails_result result = new getUserDetails_result();
         result.success = iface.getUserDetails(args.userName);
@@ -1848,11 +1918,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getAllReviewsForARequest_result getResult(I iface, getAllReviewsForARequest_args args) throws org.apache.thrift.TException {
         getAllReviewsForARequest_result result = new getAllReviewsForARequest_result();
         result.success = iface.getAllReviewsForARequest(args.projectId);
@@ -1873,11 +1938,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getAllReviewers_result getResult(I iface, getAllReviewers_args args) throws org.apache.thrift.TException {
         getAllReviewers_result result = new getAllReviewers_result();
         result.success = iface.getAllReviewers();
@@ -1898,11 +1958,6 @@ public class AllocationRegistryService {
         return false;
       }
 
-//      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getAllUnassignedReviewersForRequest_result getResult(I iface, getAllUnassignedReviewersForRequest_args args) throws org.apache.thrift.TException {
         getAllUnassignedReviewersForRequest_result result = new getAllUnassignedReviewersForRequest_result();
         result.success = iface.getAllUnassignedReviewersForRequest(args.projectId);
@@ -1910,6 +1965,48 @@ public class AllocationRegistryService {
       }
     }
 
+    public static class approveRequest<I extends Iface> extends org.apache.thrift.ProcessFunction<I, approveRequest_args> {
+      public approveRequest() {
+        super("approveRequest");
+      }
+
+      public approveRequest_args getEmptyArgsInstance() {
+        return new approveRequest_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public approveRequest_result getResult(I iface, approveRequest_args args) throws org.apache.thrift.TException {
+        approveRequest_result result = new approveRequest_result();
+        result.success = iface.approveRequest(args.projectId, args.adminId, args.startDate, args.endDate, args.awardAllocation);
+        result.setSuccessIsSet(true);
+        return result;
+      }
+    }
+
+    public static class rejectRequest<I extends Iface> extends org.apache.thrift.ProcessFunction<I, rejectRequest_args> {
+      public rejectRequest() {
+        super("rejectRequest");
+      }
+
+      public rejectRequest_args getEmptyArgsInstance() {
+        return new rejectRequest_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public rejectRequest_result getResult(I iface, rejectRequest_args args) throws org.apache.thrift.TException {
+        rejectRequest_result result = new rejectRequest_result();
+        result.success = iface.rejectRequest(args.projectId, args.adminId);
+        result.setSuccessIsSet(true);
+        return result;
+      }
+    }
+
   }
 
   public static class AsyncProcessor<I extends AsyncIface> extends org.apache.thrift.TBaseAsyncProcessor<I> {
@@ -1943,6 +2040,8 @@ public class AllocationRegistryService {
       processMap.put("getAllReviewsForARequest", new getAllReviewsForARequest());
       processMap.put("getAllReviewers", new getAllReviewers());
       processMap.put("getAllUnassignedReviewersForRequest", new getAllUnassignedReviewersForRequest());
+      processMap.put("approveRequest", new approveRequest());
+      processMap.put("rejectRequest", new rejectRequest());
       return processMap;
     }
 
@@ -3172,37 +3271,161 @@ public class AllocationRegistryService {
       }
     }
 
-  }
-
-  public static class createAllocationRequest_args implements org.apache.thrift.TBase<createAllocationRequest_args, createAllocationRequest_args._Fields>, java.io.Serializable, Cloneable, Comparable<createAllocationRequest_args>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("createAllocationRequest_args");
+    public static class approveRequest<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, approveRequest_args, java.lang.Boolean> {
+      public approveRequest() {
+        super("approveRequest");
+      }
 
-    private static final org.apache.thrift.protocol.TField ALLOC_DETAIL_FIELD_DESC = new org.apache.thrift.protocol.TField("allocDetail", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+      public approveRequest_args getEmptyArgsInstance() {
+        return new approveRequest_args();
+      }
 
-    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new createAllocationRequest_argsStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new createAllocationRequest_argsTupleSchemeFactory();
+      public org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean>() { 
+          public void onComplete(java.lang.Boolean o) {
+            approveRequest_result result = new approveRequest_result();
+            result.success = o;
+            result.setSuccessIsSet(true);
+            try {
+              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+            } catch (org.apache.thrift.transport.TTransportException e) {
+              _LOGGER.error("TTransportException writing to internal frame buffer", e);
+              fb.close();
+            } catch (java.lang.Exception e) {
+              _LOGGER.error("Exception writing to internal frame buffer", e);
+              onError(e);
+            }
+          }
+          public void onError(java.lang.Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TSerializable msg;
+            approveRequest_result result = new approveRequest_result();
+            if (e instanceof org.apache.thrift.transport.TTransportException) {
+              _LOGGER.error("TTransportException inside handler", e);
+              fb.close();
+              return;
+            } else if (e instanceof org.apache.thrift.TApplicationException) {
+              _LOGGER.error("TApplicationException inside handler", e);
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TApplicationException)e;
+            } else {
+              _LOGGER.error("Exception inside handler", e);
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+            } catch (java.lang.Exception ex) {
+              _LOGGER.error("Exception writing to internal frame buffer", ex);
+              fb.close();
+            }
+          }
+        };
+      }
 
-    public org.apache.airavata.allocation.manager.models.UserAllocationDetail allocDetail; // required
+      protected boolean isOneway() {
+        return false;
+      }
 
-    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
-    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-      ALLOC_DETAIL((short)1, "allocDetail");
+      public void start(I iface, approveRequest_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
+        iface.approveRequest(args.projectId, args.adminId, args.startDate, args.endDate, args.awardAllocation,resultHandler);
+      }
+    }
 
-      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
+    public static class rejectRequest<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, rejectRequest_args, java.lang.Boolean> {
+      public rejectRequest() {
+        super("rejectRequest");
+      }
 
-      static {
-        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
-          byName.put(field.getFieldName(), field);
-        }
+      public rejectRequest_args getEmptyArgsInstance() {
+        return new rejectRequest_args();
       }
 
-      /**
-       * Find the _Fields constant that matches fieldId, or null if its not found.
-       */
-      public static _Fields findByThriftId(int fieldId) {
-        switch(fieldId) {
-          case 1: // ALLOC_DETAIL
-            return ALLOC_DETAIL;
+      public org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean>() { 
+          public void onComplete(java.lang.Boolean o) {
+            rejectRequest_result result = new rejectRequest_result();
+            result.success = o;
+            result.setSuccessIsSet(true);
+            try {
+              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+            } catch (org.apache.thrift.transport.TTransportException e) {
+              _LOGGER.error("TTransportException writing to internal frame buffer", e);
+              fb.close();
+            } catch (java.lang.Exception e) {
+              _LOGGER.error("Exception writing to internal frame buffer", e);
+              onError(e);
+            }
+          }
+          public void onError(java.lang.Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TSerializable msg;
+            rejectRequest_result result = new rejectRequest_result();
+            if (e instanceof org.apache.thrift.transport.TTransportException) {
+              _LOGGER.error("TTransportException inside handler", e);
+              fb.close();
+              return;
+            } else if (e instanceof org.apache.thrift.TApplicationException) {
+              _LOGGER.error("TApplicationException inside handler", e);
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TApplicationException)e;
+            } else {
+              _LOGGER.error("Exception inside handler", e);
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+            } catch (java.lang.Exception ex) {
+              _LOGGER.error("Exception writing to internal frame buffer", ex);
+              fb.close();
+            }
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, rejectRequest_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
+        iface.rejectRequest(args.projectId, args.adminId,resultHandler);
+      }
+    }
+
+  }
+
+  public static class createAllocationRequest_args implements org.apache.thrift.TBase<createAllocationRequest_args, createAllocationRequest_args._Fields>, java.io.Serializable, Cloneable, Comparable<createAllocationRequest_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("createAllocationRequest_args");
+
+    private static final org.apache.thrift.protocol.TField ALLOC_DETAIL_FIELD_DESC = new org.apache.thrift.protocol.TField("allocDetail", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new createAllocationRequest_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new createAllocationRequest_argsTupleSchemeFactory();
+
+    public org.apache.airavata.allocation.manager.models.UserAllocationDetail allocDetail; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      ALLOC_DETAIL((short)1, "allocDetail");
+
+      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
+
+      static {
+        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 1: // ALLOC_DETAIL
+            return ALLOC_DETAIL;
           default:
             return null;
         }
@@ -18378,4 +18601,1917 @@ public class AllocationRegistryService {
     }
   }
 
+  public static class approveRequest_args implements org.apache.thrift.TBase<approveRequest_args, approveRequest_args._Fields>, java.io.Serializable, Cloneable, Comparable<approveRequest_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("approveRequest_args");
+
+    private static final org.apache.thrift.protocol.TField PROJECT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("projectId", org.apache.thrift.protocol.TType.STRING, (short)1);
+    private static final org.apache.thrift.protocol.TField ADMIN_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("adminId", org.apache.thrift.protocol.TType.STRING, (short)2);
+    private static final org.apache.thrift.protocol.TField START_DATE_FIELD_DESC = new org.apache.thrift.protocol.TField("startDate", org.apache.thrift.protocol.TType.I64, (short)3);
+    private static final org.apache.thrift.protocol.TField END_DATE_FIELD_DESC = new org.apache.thrift.protocol.TField("endDate", org.apache.thrift.protocol.TType.I64, (short)4);
+    private static final org.apache.thrift.protocol.TField AWARD_ALLOCATION_FIELD_DESC = new org.apache.thrift.protocol.TField("awardAllocation", org.apache.thrift.protocol.TType.I64, (short)5);
+
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new approveRequest_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new approveRequest_argsTupleSchemeFactory();
+
+    public java.lang.String projectId; // required
+    public java.lang.String adminId; // required
+    public long startDate; // required
+    public long endDate; // required
+    public long awardAllocation; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      PROJECT_ID((short)1, "projectId"),
+      ADMIN_ID((short)2, "adminId"),
+      START_DATE((short)3, "startDate"),
+      END_DATE((short)4, "endDate"),
+      AWARD_ALLOCATION((short)5, "awardAllocation");
+
+      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
+
+      static {
+        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 1: // PROJECT_ID
+            return PROJECT_ID;
+          case 2: // ADMIN_ID
+            return ADMIN_ID;
+          case 3: // START_DATE
+            return START_DATE;
+          case 4: // END_DATE
+            return END_DATE;
+          case 5: // AWARD_ALLOCATION
+            return AWARD_ALLOCATION;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(java.lang.String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final java.lang.String _fieldName;
+
+      _Fields(short thriftId, java.lang.String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public java.lang.String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+    private static final int __STARTDATE_ISSET_ID = 0;
+    private static final int __ENDDATE_ISSET_ID = 1;
+    private static final int __AWARDALLOCATION_ISSET_ID = 2;
+    private byte __isset_bitfield = 0;
+    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.PROJECT_ID, new org.apache.thrift.meta_data.FieldMetaData("projectId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.ADMIN_ID, new org.apache.thrift.meta_data.FieldMetaData("adminId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.START_DATE, new org.apache.thrift.meta_data.FieldMetaData("startDate", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+      tmpMap.put(_Fields.END_DATE, new org.apache.thrift.meta_data.FieldMetaData("endDate", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+      tmpMap.put(_Fields.AWARD_ALLOCATION, new org.apache.thrift.meta_data.FieldMetaData("awardAllocation", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(approveRequest_args.class, metaDataMap);
+    }
+
+    public approveRequest_args() {
+    }
+
+    public approveRequest_args(
+      java.lang.String projectId,
+      java.lang.String adminId,
+      long startDate,
+      long endDate,
+      long awardAllocation)
+    {
+      this();
+      this.projectId = projectId;
+      this.adminId = adminId;
+      this.startDate = startDate;
+      setStartDateIsSet(true);
+      this.endDate = endDate;
+      setEndDateIsSet(true);
+      this.awardAllocation = awardAllocation;
+      setAwardAllocationIsSet(true);
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public approveRequest_args(approveRequest_args other) {
+      __isset_bitfield = other.__isset_bitfield;
+      if (other.isSetProjectId()) {
+        this.projectId = other.projectId;
+      }
+      if (other.isSetAdminId()) {
+        this.adminId = other.adminId;
+      }
+      this.startDate = other.startDate;
+      this.endDate = other.endDate;
+      this.awardAllocation = other.awardAllocation;
+    }
+
+    public approveRequest_args deepCopy() {
+      return new approveRequest_args(this);
+    }
+
+    @Override
+    public void clear() {
+      this.projectId = null;
+      this.adminId = null;
+      setStartDateIsSet(false);
+      this.startDate = 0;
+      setEndDateIsSet(false);
+      this.endDate = 0;
+      setAwardAllocationIsSet(false);
+      this.awardAllocation = 0;
+    }
+
+    public java.lang.String getProjectId() {
+      return this.projectId;
+    }
+
+    public approveRequest_args setProjectId(java.lang.String projectId) {
+      this.projectId = projectId;
+      return this;
+    }
+
+    public void unsetProjectId() {
+      this.projectId = null;
+    }
+
+    /** Returns true if field projectId is set (has been assigned a value) and false otherwise */
+    public boolean isSetProjectId() {
+      return this.projectId != null;
+    }
+
+    public void setProjectIdIsSet(boolean value) {
+      if (!value) {
+        this.projectId = null;
+      }
+    }
+
+    public java.lang.String getAdminId() {
+      return this.adminId;
+    }
+
+    public approveRequest_args setAdminId(java.lang.String adminId) {
+      this.adminId = adminId;
+      return this;
+    }
+
+    public void unsetAdminId() {
+      this.adminId = null;
+    }
+
+    /** Returns true if field adminId is set (has been assigned a value) and false otherwise */
+    public boolean isSetAdminId() {
+      return this.adminId != null;
+    }
+
+    public void setAdminIdIsSet(boolean value) {
+      if (!value) {
+        this.adminId = null;
+      }
+    }
+
+    public long getStartDate() {
+      return this.startDate;
+    }
+
+    public approveRequest_args setStartDate(long startDate) {
+      this.startDate = startDate;
+      setStartDateIsSet(true);
+      return this;
+    }
+
+    public void unsetStartDate() {
+      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __STARTDATE_ISSET_ID);
+    }
+
+    /** Returns true if field startDate is set (has been assigned a value) and false otherwise */
+    public boolean isSetStartDate() {
+      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __STARTDATE_ISSET_ID);
+    }
+
+    public void setStartDateIsSet(boolean value) {
+      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __STARTDATE_ISSET_ID, value);
+    }
+
+    public long getEndDate() {
+      return this.endDate;
+    }
+
+    public approveRequest_args setEndDate(long endDate) {
+      this.endDate = endDate;
+      setEndDateIsSet(true);
+      return this;
+    }
+
+    public void unsetEndDate() {
+      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __ENDDATE_ISSET_ID);
+    }
+
+    /** Returns true if field endDate is set (has been assigned a value) and false otherwise */
+    public boolean isSetEndDate() {
+      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __ENDDATE_ISSET_ID);
+    }
+
+    public void setEndDateIsSet(boolean value) {
+      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __ENDDATE_ISSET_ID, value);
+    }
+
+    public long getAwardAllocation() {
+      return this.awardAllocation;
+    }
+
+    public approveRequest_args setAwardAllocation(long awardAllocation) {
+      this.awardAllocation = awardAllocation;
+      setAwardAllocationIsSet(true);
+      return this;
+    }
+
+    public void unsetAwardAllocation() {
+      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __AWARDALLOCATION_ISSET_ID);
+    }
+
+    /** Returns true if field awardAllocation is set (has been assigned a value) and false otherwise */
+    public boolean isSetAwardAllocation() {
+      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __AWARDALLOCATION_ISSET_ID);
+    }
+
+    public void setAwardAllocationIsSet(boolean value) {
+      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __AWARDALLOCATION_ISSET_ID, value);
+    }
+
+    public void setFieldValue(_Fields field, java.lang.Object value) {
+      switch (field) {
+      case PROJECT_ID:
+        if (value == null) {
+          unsetProjectId();
+        } else {
+          setProjectId((java.lang.String)value);
+        }
+        break;
+
+      case ADMIN_ID:
+        if (value == null) {
+          unsetAdminId();
+        } else {
+          setAdminId((java.lang.String)value);
+        }
+        break;
+
+      case START_DATE:
+        if (value == null) {
+          unsetStartDate();
+        } else {
+          setStartDate((java.lang.Long)value);
+        }
+        break;
+
+      case END_DATE:
+        if (value == null) {
+          unsetEndDate();
+        } else {
+          setEndDate((java.lang.Long)value);
+        }
+        break;
+
+      case AWARD_ALLOCATION:
+        if (value == null) {
+          unsetAwardAllocation();
+        } else {
+          setAwardAllocation((java.lang.Long)value);
+        }
+        break;
+
+      }
+    }
+
+    public java.lang.Object getFieldValue(_Fields field) {
+      switch (field) {
+      case PROJECT_ID:
+        return getProjectId();
+
+      case ADMIN_ID:
+        return getAdminId();
+
+      case START_DATE:
+        return getStartDate();
+
+      case END_DATE:
+        return getEndDate();
+
+      case AWARD_ALLOCATION:
+        return getAwardAllocation();
+
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new java.lang.IllegalArgumentException();
+      }
+
+      switch (field) {
+      case PROJECT_ID:
+        return isSetProjectId();
+      case ADMIN_ID:
+        return isSetAdminId();
+      case START_DATE:
+        return isSetStartDate();
+      case END_DATE:
+        return isSetEndDate();
+      case AWARD_ALLOCATION:
+        return isSetAwardAllocation();
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(java.lang.Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof approveRequest_args)
+        return this.equals((approveRequest_args)that);
+      return false;
+    }
+
+    public boolean equals(approveRequest_args that) {
+      if (that == null)
+        return false;
+      if (this == that)
+        return true;
+
+      boolean this_present_projectId = true && this.isSetProjectId();
+      boolean that_present_projectId = true && that.isSetProjectId();
+      if (this_present_projectId || that_present_projectId) {
+        if (!(this_present_projectId && that_present_projectId))
+          return false;
+        if (!this.projectId.equals(that.projectId))
+          return false;
+      }
+
+      boolean this_present_adminId = true && this.isSetAdminId();
+      boolean that_present_adminId = true && that.isSetAdminId();
+      if (this_present_adminId || that_present_adminId) {
+        if (!(this_present_adminId && that_present_adminId))
+          return false;
+        if (!this.adminId.equals(that.adminId))
+          return false;
+      }
+
+      boolean this_present_startDate = true;
+      boolean that_present_startDate = true;
+      if (this_present_startDate || that_present_startDate) {
+        if (!(this_present_startDate && that_present_startDate))
+          return false;
+        if (this.startDate != that.startDate)
+          return false;
+      }
+
+      boolean this_present_endDate = true;
+      boolean that_present_endDate = true;
+      if (this_present_endDate || that_present_endDate) {
+        if (!(this_present_endDate && that_present_endDate))
+          return false;
+        if (this.endDate != that.endDate)
+          return false;
+      }
+
+      boolean this_present_awardAllocation = true;
+      boolean that_present_awardAllocation = true;
+      if (this_present_awardAllocation || that_present_awardAllocation) {
+        if (!(this_present_awardAllocation && that_present_awardAllocation))
+          return false;
+        if (this.awardAllocation != that.awardAllocation)
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      int hashCode = 1;
+
+      hashCode = hashCode * 8191 + ((isSetProjectId()) ? 131071 : 524287);
+      if (isSetProjectId())
+        hashCode = hashCode * 8191 + projectId.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetAdminId()) ? 131071 : 524287);
+      if (isSetAdminId())
+        hashCode = hashCode * 8191 + adminId.hashCode();
+
+      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(startDate);
+
+      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(endDate);
+
+      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(awardAllocation);
+
+      return hashCode;
+    }
+
+    @Override
+    public int compareTo(approveRequest_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = java.lang.Boolean.valueOf(isSetProjectId()).compareTo(other.isSetProjectId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetProjectId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.projectId, other.projectId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetAdminId()).compareTo(other.isSetAdminId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAdminId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.adminId, other.adminId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetStartDate()).compareTo(other.isSetStartDate());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetStartDate()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.startDate, other.startDate);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetEndDate()).compareTo(other.isSetEndDate());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetEndDate()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.endDate, other.endDate);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetAwardAllocation()).compareTo(other.isSetAwardAllocation());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAwardAllocation()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.awardAllocation, other.awardAllocation);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      scheme(iprot).read(iprot, this);
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      scheme(oprot).write(oprot, this);
+    }
+
+    @Override
+    public java.lang.String toString() {
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("approveRequest_args(");
+      boolean first = true;
+
+      sb.append("projectId:");
+      if (this.projectId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.projectId);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("adminId:");
+      if (this.adminId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.adminId);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("startDate:");
+      sb.append(this.startDate);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("endDate:");
+      sb.append(this.endDate);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("awardAllocation:");
+      sb.append(this.awardAllocation);
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      if (projectId == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'projectId' was not present! Struct: " + toString());
+      }
+      if (adminId == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'adminId' was not present! Struct: " + toString());
+      }
+      // alas, we cannot check 'startDate' because it's a primitive and you chose the non-beans generator.
+      // alas, we cannot check 'endDate' because it's a primitive and you chose the non-beans generator.
+      // alas, we cannot check 'awardAllocation' because it's a primitive and you chose the non-beans generator.
+      // check for sub-struct validity
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
+      try {
+        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+        __isset_bitfield = 0;
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private static class approveRequest_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public approveRequest_argsStandardScheme getScheme() {
+        return new approveRequest_argsStandardScheme();
+      }
+    }
+
+    private static class approveRequest_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<approveRequest_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, approveRequest_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TField schemeField;
+        iprot.readStructBegin();
+        while (true)
+        {
+          schemeField = iprot.readFieldBegin();
+          if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+            break;
+          }
+          switch (schemeField.id) {
+            case 1: // PROJECT_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.projectId = iprot.readString();
+                struct.setProjectIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // ADMIN_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.adminId = iprot.readString();
+                struct.setAdminIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 3: // START_DATE
+              if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+                struct.startDate = iprot.readI64();
+                struct.setStartDateIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 4: // END_DATE
+              if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+                struct.endDate = iprot.readI64();
+                struct.setEndDateIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 5: // AWARD_ALLOCATION
+              if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+                struct.awardAllocation = iprot.readI64();
+                struct.setAwardAllocationIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            default:
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+          }
+          iprot.readFieldEnd();
+        }
+        iprot.readStructEnd();
+
+        // check for required fields of primitive type, which can't be checked in the validate method
+        if (!struct.isSetStartDate()) {
+          throw new org.apache.thrift.protocol.TProtocolException("Required field 'startDate' was not found in serialized data! Struct: " + toString());
+        }
+        if (!struct.isSetEndDate()) {
+          throw new org.apache.thrift.protocol.TProtocolException("Required field 'endDate' was not found in serialized data! Struct: " + toString());
+        }
+        if (!struct.isSetAwardAllocation()) {
+          throw new org.apache.thrift.protocol.TProtocolException("Required field 'awardAllocation' was not found in serialized data! Struct: " + toString());
+        }
+        struct.validate();
+      }
+
+      public void write(org.apache.thrift.protocol.TProtocol oprot, approveRequest_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.projectId != null) {
+          oprot.writeFieldBegin(PROJECT_ID_FIELD_DESC);
+          oprot.writeString(struct.projectId);
+          oprot.writeFieldEnd();
+        }
+        if (struct.adminId != null) {
+          oprot.writeFieldBegin(ADMIN_ID_FIELD_DESC);
+          oprot.writeString(struct.adminId);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldBegin(START_DATE_FIELD_DESC);
+        oprot.writeI64(struct.startDate);
+        oprot.writeFieldEnd();
+        oprot.writeFieldBegin(END_DATE_FIELD_DESC);
+        oprot.writeI64(struct.endDate);
+        oprot.writeFieldEnd();
+        oprot.writeFieldBegin(AWARD_ALLOCATION_FIELD_DESC);
+        oprot.writeI64(struct.awardAllocation);
+        oprot.writeFieldEnd();
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class approveRequest_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public approveRequest_argsTupleScheme getScheme() {
+        return new approveRequest_argsTupleScheme();
+      }
+    }
+
+    private static class approveRequest_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<approveRequest_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, approveRequest_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        oprot.writeString(struct.projectId);
+        oprot.writeString(struct.adminId);
+        oprot.writeI64(struct.startDate);
+        oprot.writeI64(struct.endDate);
+        oprot.writeI64(struct.awardAllocation);
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, approveRequest_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        struct.projectId = iprot.readString();
+        struct.setProjectIdIsSet(true);
+        struct.adminId = iprot.readString();
+        struct.setAdminIdIsSet(true);
+        struct.startDate = iprot.readI64();
+        struct.setStartDateIsSet(true);
+        struct.endDate = iprot.readI64();
+        struct.setEndDateIsSet(true);
+        struct.awardAllocation = iprot.readI64();
+        struct.setAwardAllocationIsSet(true);
+      }
+    }
+
+    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+    }
+  }
+
+  public static class approveRequest_result implements org.apache.thrift.TBase<approveRequest_result, approveRequest_result._Fields>, java.io.Serializable, Cloneable, Comparable<approveRequest_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("approveRequest_result");
+
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.BOOL, (short)0);
+
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new approveRequest_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new approveRequest_resultTupleSchemeFactory();
+
+    public boolean success; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SUCCESS((short)0, "success");
+
+      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
+
+      static {
+        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 0: // SUCCESS
+            return SUCCESS;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(java.lang.String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final java.lang.String _fieldName;
+
+      _Fields(short thriftId, java.lang.String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public java.lang.String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+    private static final int __SUCCESS_ISSET_ID = 0;
+    private byte __isset_bitfield = 0;
+    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(approveRequest_result.class, metaDataMap);
+    }
+
+    public approveRequest_result() {
+    }
+
+    public approveRequest_result(
+      boolean success)
+    {
+      this();
+      this.success = success;
+      setSuccessIsSet(true);
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public approveRequest_result(approveRequest_result other) {
+      __isset_bitfield = other.__isset_bitfield;
+      this.success = other.success;
+    }
+
+    public approveRequest_result deepCopy() {
+      return new approveRequest_result(this);
+    }
+
+    @Override
+    public void clear() {
+      setSuccessIsSet(false);
+      this.success = false;
+    }
+
+    public boolean isSuccess() {
+      return this.success;
+    }
+
+    public approveRequest_result setSuccess(boolean success) {
+      this.success = success;
+      setSuccessIsSet(true);
+      return this;
+    }
+
+    public void unsetSuccess() {
+      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
+    }
+
+    public void setFieldValue(_Fields field, java.lang.Object value) {
+      switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((java.lang.Boolean)value);
+        }
+        break;
+
+      }
+    }
+
+    public java.lang.Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SUCCESS:
+        return isSuccess();
+
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new java.lang.IllegalArgumentException();
+      }
+
+      switch (field) {
+      case SUCCESS:
+        return isSetSuccess();
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(java.lang.Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof approveRequest_result)
+        return this.equals((approveRequest_result)that);
+      return false;
+    }
+
+    public boolean equals(approveRequest_result that) {
+      if (that == null)
+        return false;
+      if (this == that)
+        return true;
+
+      boolean this_present_success = true;
+      boolean that_present_success = true;
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (this.success != that.success)
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      int hashCode = 1;
+
+      hashCode = hashCode * 8191 + ((success) ? 131071 : 524287);
+
+      return hashCode;
+    }
+
+    @Override
+    public int compareTo(approveRequest_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = java.lang.Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      scheme(iprot).read(iprot, this);
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      scheme(oprot).write(oprot, this);
+      }
+
+    @Override
+    public java.lang.String toString() {
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("approveRequest_result(");
+      boolean first = true;
+
+      sb.append("success:");
+      sb.append(this.success);
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      // check for sub-struct validity
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
+      try {
+        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+        __isset_bitfield = 0;
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private static class approveRequest_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public approveRequest_resultStandardScheme getScheme() {
+        return new approveRequest_resultStandardScheme();
+      }
+    }
+
+    private static class approveRequest_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<approveRequest_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, approveRequest_result struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TField schemeField;
+        iprot.readStructBegin();
+        while (true)
+        {
+          schemeField = iprot.readFieldBegin();
+          if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+            break;
+          }
+          switch (schemeField.id) {
+            case 0: // SUCCESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+                struct.success = iprot.readBool();
+                struct.setSuccessIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            default:
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+          }
+          iprot.readFieldEnd();
+        }
+        iprot.readStructEnd();
+
+        // check for required fields of primitive type, which can't be checked in the validate method
+        struct.validate();
+      }
+
+      public void write(org.apache.thrift.protocol.TProtocol oprot, approveRequest_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.isSetSuccess()) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          oprot.writeBool(struct.success);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class approveRequest_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public approveRequest_resultTupleScheme getScheme() {
+        return new approveRequest_resultTupleScheme();
+      }
+    }
+
+    private static class approveRequest_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<approveRequest_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, approveRequest_result struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        java.util.BitSet optionals = new java.util.BitSet();
+        if (struct.isSetSuccess()) {
+          optionals.set(0);
+        }
+        oprot.writeBitSet(optionals, 1);
+        if (struct.isSetSuccess()) {
+          oprot.writeBool(struct.success);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, approveRequest_result struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        java.util.BitSet incoming = iprot.readBitSet(1);
+        if (incoming.get(0)) {
+          struct.success = iprot.readBool();
+          struct.setSuccessIsSet(true);
+        }
+      }
+    }
+
+    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+    }
+  }
+
+  public static class rejectRequest_args implements org.apache.thrift.TBase<rejectRequest_args, rejectRequest_args._Fields>, java.io.Serializable, Cloneable, Comparable<rejectRequest_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("rejectRequest_args");
+
+    private static final org.apache.thrift.protocol.TField PROJECT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("projectId", org.apache.thrift.protocol.TType.STRING, (short)1);
+    private static final org.apache.thrift.protocol.TField ADMIN_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("adminId", org.apache.thrift.protocol.TType.STRING, (short)2);
+
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new rejectRequest_argsStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new rejectRequest_argsTupleSchemeFactory();
+
+    public java.lang.String projectId; // required
+    public java.lang.String adminId; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      PROJECT_ID((short)1, "projectId"),
+      ADMIN_ID((short)2, "adminId");
+
+      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
+
+      static {
+        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 1: // PROJECT_ID
+            return PROJECT_ID;
+          case 2: // ADMIN_ID
+            return ADMIN_ID;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(java.lang.String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final java.lang.String _fieldName;
+
+      _Fields(short thriftId, java.lang.String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public java.lang.String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.PROJECT_ID, new org.apache.thrift.meta_data.FieldMetaData("projectId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.ADMIN_ID, new org.apache.thrift.meta_data.FieldMetaData("adminId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(rejectRequest_args.class, metaDataMap);
+    }
+
+    public rejectRequest_args() {
+    }
+
+    public rejectRequest_args(
+      java.lang.String projectId,
+      java.lang.String adminId)
+    {
+      this();
+      this.projectId = projectId;
+      this.adminId = adminId;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public rejectRequest_args(rejectRequest_args other) {
+      if (other.isSetProjectId()) {
+        this.projectId = other.projectId;
+      }
+      if (other.isSetAdminId()) {
+        this.adminId = other.adminId;
+      }
+    }
+
+    public rejectRequest_args deepCopy() {
+      return new rejectRequest_args(this);
+    }
+
+    @Override
+    public void clear() {
+      this.projectId = null;
+      this.adminId = null;
+    }
+
+    public java.lang.String getProjectId() {
+      return this.projectId;
+    }
+
+    public rejectRequest_args setProjectId(java.lang.String projectId) {
+      this.projectId = projectId;
+      return this;
+    }
+
+    public void unsetProjectId() {
+      this.projectId = null;
+    }
+
+    /** Returns true if field projectId is set (has been assigned a value) and false otherwise */
+    public boolean isSetProjectId() {
+      return this.projectId != null;
+    }
+
+    public void setProjectIdIsSet(boolean value) {
+      if (!value) {
+        this.projectId = null;
+      }
+    }
+
+    public java.lang.String getAdminId() {
+      return this.adminId;
+    }
+
+    public rejectRequest_args setAdminId(java.lang.String adminId) {
+      this.adminId = adminId;
+      return this;
+    }
+
+    public void unsetAdminId() {
+      this.adminId = null;
+    }
+
+    /** Returns true if field adminId is set (has been assigned a value) and false otherwise */
+    public boolean isSetAdminId() {
+      return this.adminId != null;
+    }
+
+    public void setAdminIdIsSet(boolean value) {
+      if (!value) {
+        this.adminId = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, java.lang.Object value) {
+      switch (field) {
+      case PROJECT_ID:
+        if (value == null) {
+          unsetProjectId();
+        } else {
+          setProjectId((java.lang.String)value);
+        }
+        break;
+
+      case ADMIN_ID:
+        if (value == null) {
+          unsetAdminId();
+        } else {
+          setAdminId((java.lang.String)value);
+        }
+        break;
+
+      }
+    }
+
+    public java.lang.Object getFieldValue(_Fields field) {
+      switch (field) {
+      case PROJECT_ID:
+        return getProjectId();
+
+      case ADMIN_ID:
+        return getAdminId();
+
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new java.lang.IllegalArgumentException();
+      }
+
+      switch (field) {
+      case PROJECT_ID:
+        return isSetProjectId();
+      case ADMIN_ID:
+        return isSetAdminId();
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(java.lang.Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof rejectRequest_args)
+        return this.equals((rejectRequest_args)that);
+      return false;
+    }
+
+    public boolean equals(rejectRequest_args that) {
+      if (that == null)
+        return false;
+      if (this == that)
+        return true;
+
+      boolean this_present_projectId = true && this.isSetProjectId();
+      boolean that_present_projectId = true && that.isSetProjectId();
+      if (this_present_projectId || that_present_projectId) {
+        if (!(this_present_projectId && that_present_projectId))
+          return false;
+        if (!this.projectId.equals(that.projectId))
+          return false;
+      }
+
+      boolean this_present_adminId = true && this.isSetAdminId();
+      boolean that_present_adminId = true && that.isSetAdminId();
+      if (this_present_adminId || that_present_adminId) {
+        if (!(this_present_adminId && that_present_adminId))
+          return false;
+        if (!this.adminId.equals(that.adminId))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      int hashCode = 1;
+
+      hashCode = hashCode * 8191 + ((isSetProjectId()) ? 131071 : 524287);
+      if (isSetProjectId())
+        hashCode = hashCode * 8191 + projectId.hashCode();
+
+      hashCode = hashCode * 8191 + ((isSetAdminId()) ? 131071 : 524287);
+      if (isSetAdminId())
+        hashCode = hashCode * 8191 + adminId.hashCode();
+
+      return hashCode;
+    }
+
+    @Override
+    public int compareTo(rejectRequest_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = java.lang.Boolean.valueOf(isSetProjectId()).compareTo(other.isSetProjectId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetProjectId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.projectId, other.projectId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = java.lang.Boolean.valueOf(isSetAdminId()).compareTo(other.isSetAdminId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAdminId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.adminId, other.adminId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      scheme(iprot).read(iprot, this);
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      scheme(oprot).write(oprot, this);
+    }
+
+    @Override
+    public java.lang.String toString() {
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("rejectRequest_args(");
+      boolean first = true;
+
+      sb.append("projectId:");
+      if (this.projectId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.projectId);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("adminId:");
+      if (this.adminId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.adminId);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      if (projectId == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'projectId' was not present! Struct: " + toString());
+      }
+      if (adminId == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'adminId' was not present! Struct: " + toString());
+      }
+      // check for sub-struct validity
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
+      try {
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private static class rejectRequest_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public rejectRequest_argsStandardScheme getScheme() {
+        return new rejectRequest_argsStandardScheme();
+      }
+    }
+
+    private static class rejectRequest_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<rejectRequest_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, rejectRequest_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TField schemeField;
+        iprot.readStructBegin();
+        while (true)
+        {
+          schemeField = iprot.readFieldBegin();
+          if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+            break;
+          }
+          switch (schemeField.id) {
+            case 1: // PROJECT_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.projectId = iprot.readString();
+                struct.setProjectIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // ADMIN_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.adminId = iprot.readString();
+                struct.setAdminIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            default:
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+          }
+          iprot.readFieldEnd();
+        }
+        iprot.readStructEnd();
+
+        // check for required fields of primitive type, which can't be checked in the validate method
+        struct.validate();
+      }
+
+      public void write(org.apache.thrift.protocol.TProtocol oprot, rejectRequest_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.projectId != null) {
+          oprot.writeFieldBegin(PROJECT_ID_FIELD_DESC);
+          oprot.writeString(struct.projectId);
+          oprot.writeFieldEnd();
+        }
+        if (struct.adminId != null) {
+          oprot.writeFieldBegin(ADMIN_ID_FIELD_DESC);
+          oprot.writeString(struct.adminId);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class rejectRequest_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public rejectRequest_argsTupleScheme getScheme() {
+        return new rejectRequest_argsTupleScheme();
+      }
+    }
+
+    private static class rejectRequest_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<rejectRequest_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, rejectRequest_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        oprot.writeString(struct.projectId);
+        oprot.writeString(struct.adminId);
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, rejectRequest_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        struct.projectId = iprot.readString();
+        struct.setProjectIdIsSet(true);
+        struct.adminId = iprot.readString();
+        struct.setAdminIdIsSet(true);
+      }
+    }
+
+    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+    }
+  }
+
+  public static class rejectRequest_result implements org.apache.thrift.TBase<rejectRequest_result, rejectRequest_result._Fields>, java.io.Serializable, Cloneable, Comparable<rejectRequest_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("rejectRequest_result");
+
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.BOOL, (short)0);
+
+    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new rejectRequest_resultStandardSchemeFactory();
+    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new rejectRequest_resultTupleSchemeFactory();
+
+    public boolean success; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SUCCESS((short)0, "success");
+
+      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
+
+      static {
+        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 0: // SUCCESS
+            return SUCCESS;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(java.lang.String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final java.lang.String _fieldName;
+
+      _Fields(short thriftId, java.lang.String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public java.lang.String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+    private static final int __SUCCESS_ISSET_ID = 0;
+    private byte __isset_bitfield = 0;
+    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(rejectRequest_result.class, metaDataMap);
+    }
+
+    public rejectRequest_result() {
+    }
+
+    public rejectRequest_result(
+      boolean success)
+    {
+      this();
+      this.success = success;
+      setSuccessIsSet(true);
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public rejectRequest_result(rejectRequest_result other) {
+      __isset_bitfield = other.__isset_bitfield;
+      this.success = other.success;
+    }
+
+    public rejectRequest_result deepCopy() {
+      return new rejectRequest_result(this);
+    }
+
+    @Override
+    public void clear() {
+      setSuccessIsSet(false);
+      this.success = false;
+    }
+
+    public boolean isSuccess() {
+      return this.success;
+    }
+
+    public rejectRequest_result setSuccess(boolean success) {
+      this.success = success;
+      setSuccessIsSet(true);
+      return this;
+    }
+
+    public void unsetSuccess() {
+      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
+    }
+
+    public void setFieldValue(_Fields field, java.lang.Object value) {
+      switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((java.lang.Boolean)value);
+        }
+        break;
+
+      }
+    }
+
+    public java.lang.Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SUCCESS:
+        return isSuccess();
+
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new java.lang.IllegalArgumentException();
+      }
+
+      switch (field) {
+      case SUCCESS:
+        return isSetSuccess();
+      }
+      throw new java.lang.IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(java.lang.Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof rejectRequest_result)
+        return this.equals((rejectRequest_result)that);
+      return false;
+    }
+
+    public boolean equals(rejectRequest_result that) {
+      if (that == null)
+        return false;
+      if (this == that)
+        return true;
+
+      boolean this_present_success = true;
+      boolean that_present_success = true;
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (this.success != that.success)
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      int hashCode = 1;
+
+      hashCode = hashCode * 8191 + ((success) ? 131071 : 524287);
+
+      return hashCode;
+    }
+
+    @Override
+    public int compareTo(rejectRequest_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = java.lang.Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      scheme(iprot).read(iprot, this);
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      scheme(oprot).write(oprot, this);
+      }
+
+    @Override
+    public java.lang.String toString() {
+      java.lang.StringBuilder sb = new java.lang.StringBuilder("rejectRequest_result(");
+      boolean first = true;
+
+      sb.append("success:");
+      sb.append(this.success);
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      // check for sub-struct validity
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
+      try {
+        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+        __isset_bitfield = 0;
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private static class rejectRequest_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public rejectRequest_resultStandardScheme getScheme() {
+        return new rejectRequest_resultStandardScheme();
+      }
+    }
+
+    private static class rejectRequest_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<rejectRequest_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, rejectRequest_result struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TField schemeField;
+        iprot.readStructBegin();
+        while (true)
+        {
+          schemeField = iprot.readFieldBegin();
+          if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+            break;
+          }
+          switch (schemeField.id) {
+            case 0: // SUCCESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+                struct.success = iprot.readBool();
+                struct.setSuccessIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            default:
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+          }
+          iprot.readFieldEnd();
+        }
+        iprot.readStructEnd();
+
+        // check for required fields of primitive type, which can't be checked in the validate method
+        struct.validate();
+      }
+
+      public void write(org.apache.thrift.protocol.TProtocol oprot, rejectRequest_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.isSetSuccess()) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          oprot.writeBool(struct.success);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class rejectRequest_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+      public rejectRequest_resultTupleScheme getScheme() {
+        return new rejectRequest_resultTupleScheme();
+      }
+    }
+
+    private static class rejectRequest_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<rejectRequest_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, rejectRequest_result struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        java.util.BitSet optionals = new java.util.BitSet();
+        if (struct.isSetSuccess()) {
+          optionals.set(0);
+        }
+        oprot.writeBitSet(optionals, 1);
+        if (struct.isSetSuccess()) {
+          oprot.writeBool(struct.success);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, rejectRequest_result struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+        java.util.BitSet incoming = iprot.readBitSet(1);
+        if (incoming.get(0)) {
+          struct.success = iprot.readBool();
+          struct.setSuccessIsSet(true);
+        }
+      }
+    }
+
+    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+    }
+  }
+
 }
diff --git a/allocation-manager/allocation-manager-docs/api-docs/allocation_manager_cpi.html b/allocation-manager/allocation-manager-docs/api-docs/allocation_manager_cpi.html
index 1c47b40..01b8fc6 100644
--- a/allocation-manager/allocation-manager-docs/api-docs/allocation_manager_cpi.html
+++ b/allocation-manager/allocation-manager-docs/api-docs/allocation_manager_cpi.html
@@ -11,6 +11,7 @@
 <tr>
 <td>allocation_manager_cpi</td><td><a href="#Svc_AllocationRegistryService">AllocationRegistryService</a><br/>
 <ul>
+<li><a href="#Fn_AllocationRegistryService_approveRequest">approveRequest</a></li>
 <li><a href="#Fn_AllocationRegistryService_assignReviewers">assignReviewers</a></li>
 <li><a href="#Fn_AllocationRegistryService_createAllocationRequest">createAllocationRequest</a></li>
 <li><a href="#Fn_AllocationRegistryService_deleteAllocationRequest">deleteAllocationRequest</a></li>
@@ -28,6 +29,7 @@
 <li><a href="#Fn_AllocationRegistryService_isAdmin">isAdmin</a></li>
 <li><a href="#Fn_AllocationRegistryService_isAllocationRequestExists">isAllocationRequestExists</a></li>
 <li><a href="#Fn_AllocationRegistryService_isReviewer">isReviewer</a></li>
+<li><a href="#Fn_AllocationRegistryService_rejectRequest">rejectRequest</a></li>
 <li><a href="#Fn_AllocationRegistryService_updateAllocationRequest">updateAllocationRequest</a></li>
 <li><a href="#Fn_AllocationRegistryService_updateAllocationRequestStatus">updateAllocationRequestStatus</a></li>
 <li><a href="#Fn_AllocationRegistryService_updateRequestByReviewer">updateRequestByReviewer</a></li>
@@ -40,70 +42,81 @@
 <h3 id="Svc_AllocationRegistryService">Service: AllocationRegistryService</h3>
 <div class="definition"><h4 id="Fn_AllocationRegistryService_createAllocationRequest">Function: AllocationRegistryService.createAllocationRequest</h4>
 <pre><code>string</code> createAllocationRequest(<code><a href="allocation_manager_models.html#Struct_UserAllocationDetail">allocation_manager_models.UserAllocationDetail</a></code> allocDetail)
-</pre><pre><p>API method to create new allocation requests</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_isAllocationRequestExists">Function: AllocationRegistryService.isAllocationRequestExists</h4>
+</pre><p>API method to create new allocation requests</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_isAllocationRequestExists">Function: AllocationRegistryService.isAllocationRequestExists</h4>
 <pre><code>bool</code> isAllocationRequestExists(<code>string</code> projectId,
                                <code>string</code> userName)
-</pre><pre><p>API method to check if the allocation request exists</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_deleteAllocationRequest">Function: AllocationRegistryService.deleteAllocationRequest</h4>
+</pre><p>API method to check if the allocation request exists</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_deleteAllocationRequest">Function: AllocationRegistryService.deleteAllocationRequest</h4>
 <pre><code>bool</code> deleteAllocationRequest(<code>string</code> projectId,
                              <code>string</code> userName)
-</pre><pre><p>API method to delete allocation request</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationRequest">Function: AllocationRegistryService.getAllocationRequest</h4>
+</pre><p>API method to delete allocation request</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationRequest">Function: AllocationRegistryService.getAllocationRequest</h4>
 <pre><code><a href="allocation_manager_models.html#Struct_UserAllocationDetail">allocation_manager_models.UserAllocationDetail</a></code> getAllocationRequest(<code>string</code> projectId,
                                                                     <code>string</code> userName)
-</pre><pre><p>API method to get an allocation Request</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_updateAllocationRequest">Function: AllocationRegistryService.updateAllocationRequest</h4>
+</pre><p>API method to get an allocation Request</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_updateAllocationRequest">Function: AllocationRegistryService.updateAllocationRequest</h4>
 <pre><code>bool</code> updateAllocationRequest(<code><a href="allocation_manager_models.html#Struct_UserAllocationDetail">allocation_manager_models.UserAllocationDetail</a></code> allocDetail)
-</pre><pre><p>API method to update an allocation Request</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationRequestStatus">Function: AllocationRegistryService.getAllocationRequestStatus</h4>
+</pre><p>API method to update an allocation Request</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationRequestStatus">Function: AllocationRegistryService.getAllocationRequestStatus</h4>
 <pre><code>string</code> getAllocationRequestStatus(<code>string</code> projectId,
                                   <code>string</code> userName)
-</pre><pre><p>API method to get an allocation Request status</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationRequestUserEmail">Function: AllocationRegistryService.getAllocationRequestUserEmail</h4>
+</pre><p>API method to get an allocation Request status</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationRequestUserEmail">Function: AllocationRegistryService.getAllocationRequestUserEmail</h4>
 <pre><code>string</code> getAllocationRequestUserEmail(<code>string</code> userName)
-</pre><pre><p>API method to get an allocation Request PI email</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationManagerAdminEmail">Function: AllocationRegistryService.getAllocationManagerAdminEmail</h4>
+</pre><p>API method to get an allocation Request PI email</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationManagerAdminEmail">Function: AllocationRegistryService.getAllocationManagerAdminEmail</h4>
 <pre><code>string</code> getAllocationManagerAdminEmail(<code>string</code> userType)
-</pre><pre><p>API method to get an allocation Request Admin email</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationRequestUserName">Function: AllocationRegistryService.getAllocationRequestUserName</h4>
+</pre><p>API method to get an allocation Request Admin email</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationRequestUserName">Function: AllocationRegistryService.getAllocationRequestUserName</h4>
 <pre><code>string</code> getAllocationRequestUserName(<code>string</code> projectId)
-</pre><pre><p>API method to get an allocation Request PI</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_updateAllocationRequestStatus">Function: AllocationRegistryService.updateAllocationRequestStatus</h4>
+</pre><p>API method to get an allocation Request PI</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_updateAllocationRequestStatus">Function: AllocationRegistryService.updateAllocationRequestStatus</h4>
 <pre><code>void</code> updateAllocationRequestStatus(<code>string</code> projectId,
                                    <code>string</code> status)
-</pre><pre><p>API method to update the status of a request</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllRequestsForAdmin">Function: AllocationRegistryService.getAllRequestsForAdmin</h4>
+</pre><p>API method to update the status of a request</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllRequestsForAdmin">Function: AllocationRegistryService.getAllRequestsForAdmin</h4>
 <pre><code>list&lt;<code><a href="allocation_manager_models.html#Struct_UserAllocationDetail">allocation_manager_models.UserAllocationDetail</a></code>&gt;</code> getAllRequestsForAdmin(<code>string</code> userName)
-</pre><pre><p>API method to get all requests for admin</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_assignReviewers">Function: AllocationRegistryService.assignReviewers</h4>
+</pre><p>API method to get all requests for admin</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_assignReviewers">Function: AllocationRegistryService.assignReviewers</h4>
 <pre><code>bool</code> assignReviewers(<code>string</code> projectId,
                      <code>string</code> reviewerId,
                      <code>string</code> adminId)
-</pre><pre><p>API method to assign reviewers</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_updateRequestByReviewer">Function: AllocationRegistryService.updateRequestByReviewer</h4>
+</pre><p>API method to assign reviewers</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_updateRequestByReviewer">Function: AllocationRegistryService.updateRequestByReviewer</h4>
 <pre><code>bool</code> updateRequestByReviewer(<code>string</code> reviewerId,
                              <code><a href="allocation_manager_models.html#Struct_UserAllocationDetail">allocation_manager_models.UserAllocationDetail</a></code> userAllocationDetail)
-</pre><pre><p>API method to update request submitted by reviewer</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_isAdmin">Function: AllocationRegistryService.isAdmin</h4>
+</pre><p>API method to update request submitted by reviewer</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_isAdmin">Function: AllocationRegistryService.isAdmin</h4>
 <pre><code>bool</code> isAdmin(<code>string</code> userName)
-</pre><pre><p>API method to check if the logged in user is an Admin</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_isReviewer">Function: AllocationRegistryService.isReviewer</h4>
+</pre><p>API method to check if the logged in user is an Admin</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_isReviewer">Function: AllocationRegistryService.isReviewer</h4>
 <pre><code>bool</code> isReviewer(<code>string</code> userName)
-</pre><pre><p>API method to check if the logged in user is a Reviewer</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllRequestsForReviewers">Function: AllocationRegistryService.getAllRequestsForReviewers</h4>
+</pre><p>API method to check if the logged in user is a Reviewer</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllRequestsForReviewers">Function: AllocationRegistryService.getAllRequestsForReviewers</h4>
 <pre><code>list&lt;<code><a href="allocation_manager_models.html#Struct_UserAllocationDetail">allocation_manager_models.UserAllocationDetail</a></code>&gt;</code> getAllRequestsForReviewers(<code>string</code> userName)
-</pre><pre><p>API method to get all requests assigned to the reviewers</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getUserDetails">Function: AllocationRegistryService.getUserDetails</h4>
+</pre><p>API method to get all requests assigned to the reviewers</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getUserDetails">Function: AllocationRegistryService.getUserDetails</h4>
 <pre><code><a href="allocation_manager_models.html#Struct_UserDetail">allocation_manager_models.UserDetail</a></code> getUserDetails(<code>string</code> userName)
-</pre><pre><p>API method to get a user details</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllReviewsForARequest">Function: AllocationRegistryService.getAllReviewsForARequest</h4>
+</pre><p>API method to get a user details</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllReviewsForARequest">Function: AllocationRegistryService.getAllReviewsForARequest</h4>
 <pre><code>list&lt;<code><a href="allocation_manager_models.html#Struct_UserAllocationDetail">allocation_manager_models.UserAllocationDetail</a></code>&gt;</code> getAllReviewsForARequest(<code>string</code> projectId)
-</pre><pre><p>API method to get all the reviews for a request</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllReviewers">Function: AllocationRegistryService.getAllReviewers</h4>
+</pre><p>API method to get all the reviews for a request</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllReviewers">Function: AllocationRegistryService.getAllReviewers</h4>
 <pre><code>list&lt;<code><a href="allocation_manager_models.html#Struct_UserDetail">allocation_manager_models.UserDetail</a></code>&gt;</code> getAllReviewers()
-</pre><pre><p>API method to get all reviewers</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllUnassignedReviewersForRequest">Function: AllocationRegistryService.getAllUnassignedReviewersForRequest</h4>
+</pre><p>API method to get all reviewers</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllUnassignedReviewersForRequest">Function: AllocationRegistryService.getAllUnassignedReviewersForRequest</h4>
 <pre><code>list&lt;<code><a href="allocation_manager_models.html#Struct_UserDetail">allocation_manager_models.UserDetail</a></code>&gt;</code> getAllUnassignedReviewersForRequest(<code>string</code> projectId)
-</pre><pre><p>API method to get all unassigned reviewers for a request</p>
-</pre><br/></div></div></body></html>
+</pre><p>API method to get all unassigned reviewers for a request</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_approveRequest">Function: AllocationRegistryService.approveRequest</h4>
+<pre><code>bool</code> approveRequest(<code>string</code> projectId,
+                    <code>string</code> adminId,
+                    <code>i64</code> startDate,
+                    <code>i64</code> endDate,
+                    <code>i64</code> awardAllocation)
+</pre><p>API method to approve a request</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_rejectRequest">Function: AllocationRegistryService.rejectRequest</h4>
+<pre><code>bool</code> rejectRequest(<code>string</code> projectId,
+                   <code>string</code> adminId)
+</pre><p>API method to reject a request</p>
+<br/></div></div></body></html>
diff --git a/allocation-manager/allocation-manager-docs/api-docs/allocation_manager_models.html b/allocation-manager/allocation-manager-docs/api-docs/allocation_manager_models.html
index 050fcd8..e75cb8e 100644
--- a/allocation-manager/allocation-manager-docs/api-docs/allocation_manager_models.html
+++ b/allocation-manager/allocation-manager-docs/api-docs/allocation_manager_models.html
@@ -7,11 +7,11 @@
 <title>Thrift module: allocation_manager_models</title></head><body>
 <div class="container-fluid">
 <h1>Thrift module: allocation_manager_models</h1>
-<pre><p>Field to share sponsorship details</p>
+<p>Field to share sponsorship details</p>
 <li>projectId : Id of the project</li>
 <li>sponsorName : Name of supervisor, manager, group leader or self</li>
 
-</pre><br/><table class="table-bordered table-striped table-condensed"><thead><th>Module</th><th>Services</th><th>Data types</th><th>Constants</th></thead>
+<br/><table class="table-bordered table-striped table-condensed"><thead><th>Module</th><th>Services</th><th>Data types</th><th>Constants</th></thead>
 <tr>
 <td>allocation_manager_models</td><td></td>
 <td><a href="#Struct_AllocationManagerException">AllocationManagerException</a><br/>
@@ -29,11 +29,11 @@
 <table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>projectId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>4</td><td>username</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><pre><p>Field to share sponsorship details</p>
+</table><br/><p>Field to share sponsorship details</p>
 <li>projectId : Id of the project</li>
 <li>sponsorName : Name of supervisor, manager, group leader or self</li>
 
-</pre><br/></div><div class="definition"><h3 id="Struct_ProjectReviewerPK">Struct: ProjectReviewerPK</h3>
+<br/></div><div class="definition"><h3 id="Struct_ProjectReviewerPK">Struct: ProjectReviewerPK</h3>
 <table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>projectId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>4</td><td>reviewer</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
@@ -60,7 +60,7 @@
 <tr><td>19</td><td>endDate</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>20</td><td>status</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>21</td><td>isPrimaryOwner</td><td><code>bool</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><pre><p>Required allocation request details</p>
+</table><br/><p>Required allocation request details</p>
 <li>id : (primary key) Ask the user to assign project ID, but this project should unique, we will need an API endpoint to check whether this ID is not used by other projects and the username</li>
 <li>applicationsToBeUsed : Select the application that the user intends to use, according to application chosen here, resources that can be allocable will be fetch from resource discovery module. User will not be restricted to these application upon allocation grant, provided the resources allocated support the application.</li>
 <li>diskUsageRangePerJob : An optional field to help reviewer and PI for allocation approval</li>
@@ -78,10 +78,10 @@
 <li>typeOfAllocation : If the User has an exclusive allocation with third party organization and wants to use airavata middleware to manage jobs.</li>
 <li>typicalSuPerJob :  An optional field to help reviewer and PI for allocation approval</li>
 
-</pre><br/></div><div class="definition"><h3 id="Struct_ProjectReviewer">Struct: ProjectReviewer</h3>
+<br/></div><div class="definition"><h3 id="Struct_ProjectReviewer">Struct: ProjectReviewer</h3>
 <table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>id</td><td><code><a href="#Struct_ProjectReviewerPK">ProjectReviewerPK</a></code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><pre><p>Allocation Request status details</p>
+</table><br/><p>Allocation Request status details</p>
 <li>projectId: Unique id of the project</li>
 <li>awardAllocation: Allocation awarded</li>
 <li>endDate: End date of the request</li>
@@ -89,37 +89,37 @@
 <li>startDate: Start date of the allocation</li>
 <li>status: Status of the allocation request</li>
 
-</pre><br/></div><div class="definition"><h3 id="Struct_UserDetail">Struct: UserDetail</h3>
+<br/></div><div class="definition"><h3 id="Struct_UserDetail">Struct: UserDetail</h3>
 <table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>username</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>2</td><td>email</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>3</td><td>fullName</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>4</td><td>password</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>5</td><td>userType</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><pre><p>A user should have an account with airavata to request an allocation</p>
+</table><br/><p>A user should have an account with airavata to request an allocation</p>
 <li>username : Login Username</li>
 <li>email :Login email</li>
 <li>fullName: Full name of the user</li>
 <li>Password: Password of the user</li>
 <li>userType: Type of the user</li>
 
-</pre><br/></div><div class="definition"><h3 id="Struct_Domain">Struct: Domain</h3>
+<br/></div><div class="definition"><h3 id="Struct_Domain">Struct: Domain</h3>
 <table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>domainId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>2</td><td>name</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>3</td><td>description</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>4</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>5</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><pre><p>An entity for maintaining various domains</p>
+</table><br/><p>An entity for maintaining various domains</p>
 <li>domainId : Unique id of the domain</li>
 <li>name : Name of the domain</li>
 <li>description: Description of the domain</li>
 <li>createdTime: Time when the domain was created</li>
 <li>updatedTime: Time when domain was updated</li>
 
-</pre><br/></div><div class="definition"><h3 id="Struct_AllocationManagerException">Exception: AllocationManagerException</h3>
+<br/></div><div class="definition"><h3 id="Struct_AllocationManagerException">Exception: AllocationManagerException</h3>
 <table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>message</td><td><code>string</code></td><td></td><td>required</td><td></td></tr>
-</table><br/><pre><p>Exception model used in the allocation manager service</p>
+</table><br/><p>Exception model used in the allocation manager service</p>
 
-</pre><br/></div></div></body></html>
+<br/></div></div></body></html>
diff --git a/allocation-manager/allocation-manager-docs/api-docs/index.html b/allocation-manager/allocation-manager-docs/api-docs/index.html
index 1ae4701..95349ec 100644
--- a/allocation-manager/allocation-manager-docs/api-docs/index.html
+++ b/allocation-manager/allocation-manager-docs/api-docs/index.html
@@ -7,6 +7,7 @@
 <tr>
 <td>allocation_manager_cpi</td><td><a href="allocation_manager_cpi.html#Svc_AllocationRegistryService">AllocationRegistryService</a><br/>
 <ul>
+<li><a href="allocation_manager_cpi.html#Fn_AllocationRegistryService_approveRequest">approveRequest</a></li>
 <li><a href="allocation_manager_cpi.html#Fn_AllocationRegistryService_assignReviewers">assignReviewers</a></li>
 <li><a href="allocation_manager_cpi.html#Fn_AllocationRegistryService_createAllocationRequest">createAllocationRequest</a></li>
 <li><a href="allocation_manager_cpi.html#Fn_AllocationRegistryService_deleteAllocationRequest">deleteAllocationRequest</a></li>
@@ -24,6 +25,7 @@
 <li><a href="allocation_manager_cpi.html#Fn_AllocationRegistryService_isAdmin">isAdmin</a></li>
 <li><a href="allocation_manager_cpi.html#Fn_AllocationRegistryService_isAllocationRequestExists">isAllocationRequestExists</a></li>
 <li><a href="allocation_manager_cpi.html#Fn_AllocationRegistryService_isReviewer">isReviewer</a></li>
+<li><a href="allocation_manager_cpi.html#Fn_AllocationRegistryService_rejectRequest">rejectRequest</a></li>
 <li><a href="allocation_manager_cpi.html#Fn_AllocationRegistryService_updateAllocationRequest">updateAllocationRequest</a></li>
 <li><a href="allocation_manager_cpi.html#Fn_AllocationRegistryService_updateAllocationRequestStatus">updateAllocationRequestStatus</a></li>
 <li><a href="allocation_manager_cpi.html#Fn_AllocationRegistryService_updateRequestByReviewer">updateRequestByReviewer</a></li>
diff --git a/allocation-manager/thrift_models/allocation_manager_cpi.thrift b/allocation-manager/thrift_models/allocation_manager_cpi.thrift
index bb30453..3ae4145 100755
--- a/allocation-manager/thrift_models/allocation_manager_cpi.thrift
+++ b/allocation-manager/thrift_models/allocation_manager_cpi.thrift
@@ -101,6 +101,14 @@ service AllocationRegistryService{
         list<allocation_manager_models.UserDetail> getAllReviewers()
 	/**
         <p>API method to get all unassigned reviewers for a request</p>
-        */
+    */
         list<allocation_manager_models.UserDetail> getAllUnassignedReviewersForRequest(1:required string projectId)
+        /**
+        <p>API method to approve a request</p>
+        */
+        bool approveRequest(1:required string projectId, 2:required string adminId, 3:required i64 startDate, 4:required i64 endDate, 5:required i64 awardAllocation)
+ /**
+        <p>API method to reject a request</p>
+        */
+        bool rejectRequest(1:required string projectId, 2:required string adminId)
 }

-- 
To stop receiving notification emails like this one, please contact
['"commits@airavata.apache.org" <co...@airavata.apache.org>'].