Repository: stratos Updated Branches: refs/heads/stratos-4.1.x 8c1c56808 -> bc54ffbf8
Adding rest API methods to add tenant signup from super tenant Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/bc54ffbf Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/bc54ffbf Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/bc54ffbf Branch: refs/heads/stratos-4.1.x Commit: bc54ffbf83a7e891b0291c1bf238e1c6206f3f81 Parents: 8c1c568 Author: gayangunarathne <[email protected]> Authored: Thu Sep 10 17:05:35 2015 +0530 Committer: gayangunarathne <[email protected]> Committed: Thu Sep 10 17:05:35 2015 +0530 ---------------------------------------------------------------------- .../rest/endpoint/api/StratosApiV41.java | 62 +++++++++++++++++++- .../rest/endpoint/api/StratosApiV41Utils.java | 30 ++++++---- 2 files changed, 77 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/bc54ffbf/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java index af0ff89..3c2a5bc 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java @@ -50,6 +50,7 @@ import org.apache.stratos.rest.endpoint.Utils; import org.apache.stratos.rest.endpoint.annotation.AuthorizationAction; import org.apache.stratos.rest.endpoint.annotation.SuperTenantService; import org.apache.stratos.rest.endpoint.exception.*; +import org.wso2.carbon.context.CarbonContext; import org.wso2.carbon.context.PrivilegedCarbonContext; import javax.servlet.http.HttpServletRequest; @@ -1072,7 +1073,7 @@ public class StratosApiV41 extends AbstractApi { public Response addApplicationSignUp( @PathParam("applicationId") String applicationId, ApplicationSignUpBean applicationSignUpBean) throws RestAPIException { - StratosApiV41Utils.addApplicationSignUp(applicationId, applicationSignUpBean); + StratosApiV41Utils.addApplicationSignUp(applicationId, applicationSignUpBean, CarbonContext.getThreadLocalCarbonContext().getTenantId()); URI url = uriInfo.getAbsolutePathBuilder().path(applicationId).build(); return Response.created(url).entity(new ResponseMessageBean(ResponseMessageBean.SUCCESS, String.format("Successfully signed up for: [application] %s", applicationId))).build(); @@ -1122,12 +1123,69 @@ public class StratosApiV41 extends AbstractApi { @AuthorizationAction("/permission/admin/stratos/applicationSignUps/manage") public Response removeApplicationSignUp( @PathParam("applicationId") String applicationId) throws RestAPIException { - StratosApiV41Utils.removeApplicationSignUp(applicationId); + StratosApiV41Utils.removeApplicationSignUp(applicationId, CarbonContext.getThreadLocalCarbonContext().getTenantId()); return Response.ok().entity(new ResponseMessageBean(ResponseMessageBean.SUCCESS, String.format("Application sign up removed successfully: [application] %s", applicationId))).build(); } /** + * Signs up for an application. + * + * @param applicationId the application id + * @param applicationSignUpBean the application sign up bean + * @return 200 if application sign up was successfull + * @throws RestAPIException the rest api exception + */ + @POST + @Path("/applications/{applicationId}/signup/{tenantDomain}") + @Produces("application/json") + @Consumes("application/json") + @AuthorizationAction("/permission/admin/stratos/applicationSignUps/manage") + public Response addApplicationSignUpForTenant( + @PathParam("applicationId") String applicationId, ApplicationSignUpBean applicationSignUpBean, @PathParam("tenantDomain") String tenantDomain) + throws RestAPIException { + int contextTenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); + if (contextTenantId == -1234) { + TenantInfoBean tenantInfo = StratosApiV41Utils.getTenantByDomain(tenantDomain); + StratosApiV41Utils.addApplicationSignUp(applicationId, applicationSignUpBean, tenantInfo.getTenantId()); + URI url = uriInfo.getAbsolutePathBuilder().path(applicationId).build(); + return Response.created(url).entity(new ResponseMessageBean(ResponseMessageBean.SUCCESS, + String.format("Successfully signed up for: [application] %s", applicationId))).build(); + } else { + return Response.status(Response.Status.METHOD_NOT_ALLOWED).entity(new ResponseMessageBean( + ResponseMessageBean.ERROR, "This method not allowed")).build(); + } + + } + + + /** + * Removes the application sign up. + * + * @param applicationId the application id + * @return 200 if specified application sign up is removed + * @throws RestAPIException the rest api exception + */ + @DELETE + @Path("/applications/{applicationId}/signup/{tenantDomain}") + @Produces("application/json") + @Consumes("application/json") + @AuthorizationAction("/permission/admin/stratos/applicationSignUps/manage") + public Response removeApplicationSignUpForTenant( + @PathParam("applicationId") String applicationId, @PathParam("tenantDomain") String tenantDomain) throws RestAPIException { + int contextTenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); + if (contextTenantId == -1234) { + TenantInfoBean tenantInfo = StratosApiV41Utils.getTenantByDomain(tenantDomain); + StratosApiV41Utils.removeApplicationSignUp(applicationId, tenantInfo.getTenantId()); + return Response.ok().entity(new ResponseMessageBean(ResponseMessageBean.SUCCESS, + String.format("Application sign up removed successfully: [application] %s", applicationId))).build(); + } else { + return Response.status(Response.Status.METHOD_NOT_ALLOWED).entity(new ResponseMessageBean( + ResponseMessageBean.ERROR, "This method not allowed")).build(); + } + } + + /** * Adds the domain mappings for an application. * * @param applicationId the application id http://git-wip-us.apache.org/repos/asf/stratos/blob/bc54ffbf/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java index baff88d..098e6c7 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java @@ -2420,9 +2420,10 @@ public class StratosApiV41Utils { * * @param applicationId applicationId * @param applicationSignUpBean ApplicationSignUpBean + * @param tenantId * @throws RestAPIException */ - public static void addApplicationSignUp(String applicationId, ApplicationSignUpBean applicationSignUpBean) + public static void addApplicationSignUp(String applicationId, ApplicationSignUpBean applicationSignUpBean, int tenantId) throws RestAPIException { if (StringUtils.isBlank(applicationId)) { @@ -2453,8 +2454,6 @@ public class StratosApiV41Utils { log.info(String.format("Adding applicationBean signup: [application-id] %s", applicationId)); } - int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); - ApplicationSignUp applicationSignUp = ObjectConverter.convertApplicationSignUpBeanToStubApplicationSignUp( applicationSignUpBean); applicationSignUp.setApplicationId(applicationId); @@ -2570,9 +2569,10 @@ public class StratosApiV41Utils { * Remove Application SignUp * * @param applicationId applicationId + * @param tenantId * @throws RestAPIException */ - public static void removeApplicationSignUp(String applicationId) throws RestAPIException { + public static void removeApplicationSignUp(String applicationId, int tenantId) throws RestAPIException { if (StringUtils.isBlank(applicationId)) { throw new RestAPIException("Application id is null"); } @@ -2586,8 +2586,6 @@ public class StratosApiV41Utils { throw new RestAPIException("Application singups not available for single-tenant applications"); } - int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); - try { StratosManagerServiceClient serviceClient = StratosManagerServiceClient.getInstance(); serviceClient.removeApplicationSignUp(applicationId, tenantId); @@ -3272,7 +3270,7 @@ public class StratosApiV41Utils { * @return TenantInfoBean * @throws Exception */ - public static org.apache.stratos.common.beans.TenantInfoBean getTenantByDomain(String tenantDomain) throws Exception { + public static org.apache.stratos.common.beans.TenantInfoBean getTenantByDomain(String tenantDomain) throws RestAPIException { TenantManager tenantManager = ServiceHolder.getTenantManager(); @@ -3283,7 +3281,7 @@ public class StratosApiV41Utils { String msg = "Error in retrieving the tenant id for the tenant domain: " + tenantDomain + "."; log.error(msg, e); - throw new Exception(msg, e); + throw new RestAPIException(msg, e); } Tenant tenant; try { @@ -3291,7 +3289,7 @@ public class StratosApiV41Utils { } catch (UserStoreException e) { String msg = "Error in retrieving the tenant from the tenant manager."; log.error(msg, e); - throw new Exception(msg, e); + throw new RestAPIException(msg, e); } TenantInfoBean bean; @@ -3303,10 +3301,16 @@ public class StratosApiV41Utils { return null; } - // retrieve first and last names from the UserStoreManager - bean.setFirstName(ClaimsMgtUtil.getFirstNamefromUserStoreManager(ServiceHolder.getRealmService(), tenantId)); - bean.setLastName(ClaimsMgtUtil.getLastNamefromUserStoreManager(ServiceHolder.getRealmService(), tenantId)); - + try { + // retrieve first and last names from the UserStoreManager + bean.setFirstName(ClaimsMgtUtil.getFirstNamefromUserStoreManager(ServiceHolder.getRealmService(), tenantId)); + bean.setLastName(ClaimsMgtUtil.getLastNamefromUserStoreManager(ServiceHolder.getRealmService(), tenantId)); + } + catch(UserStoreException e){ + String msg = "Error in retrieving the tenant from the tenant manager."; + log.error(msg, e); + throw new RestAPIException(msg, e); + } return bean; }
