Updated Branches: refs/heads/master 621e7b8c3 -> 2e8d7b7f0
throwing RestAPIExceptions with proper messages from the rest EP Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/86c3fb2f Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/86c3fb2f Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/86c3fb2f Branch: refs/heads/master Commit: 86c3fb2fbd8557e4b996add7f4c456834b8fdf88 Parents: 029cca0 Author: Isuru <[email protected]> Authored: Fri Feb 14 17:17:04 2014 +0530 Committer: Isuru <[email protected]> Committed: Fri Feb 14 17:17:04 2014 +0530 ---------------------------------------------------------------------- .../rest/endpoint/services/ServiceUtils.java | 87 +++++++----- .../rest/endpoint/services/StratosAdmin.java | 142 +++++++++++++++---- 2 files changed, 167 insertions(+), 62 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/86c3fb2f/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java index 4a58ec9..906002d 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java @@ -91,7 +91,9 @@ public class ServiceUtils { log.info("Successfully deployed Cartridge [type] "+cartridgeDefinitionBean.type); } catch (Exception e) { - throw new RestAPIException(e); + String errorMsg = "Error while deploying cartridge definition"; + log.error(errorMsg, e); + throw new RestAPIException(errorMsg); } } @@ -128,7 +130,9 @@ public class ServiceUtils { cloudControllerServiceClient.unDeployCartridgeDefinition(cartridgeType); } catch (Exception e) { - throw new RestAPIException(e); + String errorMsg = "Error while undeploying cartridge definition for type " + cartridgeType; + log.error(errorMsg, e); + throw new RestAPIException(errorMsg); } } @@ -152,7 +156,9 @@ public class ServiceUtils { autoscalerServiceClient.deployPartition(partition); } catch (Exception e) { - throw new RestAPIException(e.getMessage(), e); + String errorMsg = "Error in deploying partition definition"; + log.error(errorMsg, e); + throw new RestAPIException(errorMsg); } } @@ -175,7 +181,9 @@ public class ServiceUtils { autoscalerServiceClient.deployAutoscalingPolicy(autoscalePolicy); } catch (Exception e) { - throw new RestAPIException(e); + String errorMsg = "Error in deploying autoscaling policy definition"; + log.error(errorMsg, e); + throw new RestAPIException(errorMsg); } } @@ -200,7 +208,9 @@ public class ServiceUtils { autoscalerServiceClient.deployDeploymentPolicy(deploymentPolicy); } catch (Exception e) { - throw new RestAPIException(e); + String errorMsg = "Error in deploying deployment policy definition"; + log.error(errorMsg, e); + throw new RestAPIException(errorMsg); } } @@ -232,7 +242,7 @@ public class ServiceUtils { } catch (Exception e) { String errorMsg = "Error getting available partitions"; log.error(errorMsg, e); - throw new RestAPIException(errorMsg, e); + throw new RestAPIException(errorMsg); } } @@ -250,9 +260,9 @@ public class ServiceUtils { autoscalerServiceClient.getPartitionsOfDeploymentPolicy(deploymentPolicyId); } catch (Exception e) { - String errorMsg = "Error getting available partitions"; + String errorMsg = "Error getting available partitions for deployment policy id " + deploymentPolicyId; log.error(errorMsg, e); - throw new RestAPIException(errorMsg, e); + throw new RestAPIException(errorMsg); } } @@ -270,9 +280,10 @@ public class ServiceUtils { autoscalerServiceClient.getPartitionsOfGroup(deploymentPolicyId, groupId); } catch (Exception e) { - String errorMsg = "Error getting available partitions"; + String errorMsg = "Error getting available partitions for deployment policy id " + deploymentPolicyId + + ", group id " + groupId; log.error(errorMsg, e); - throw new RestAPIException(errorMsg, e); + throw new RestAPIException(errorMsg); } } @@ -288,9 +299,9 @@ public class ServiceUtils { partition = autoscalerServiceClient.getPartition(partitionId); } catch (Exception e) { - String errorMsg = "Error getting available partition"; + String errorMsg = "Error getting partition for id " + partitionId; log.error(errorMsg, e); - throw new RestAPIException(errorMsg, e); + throw new RestAPIException(errorMsg); } } @@ -320,7 +331,7 @@ public class ServiceUtils { } catch (Exception e) { String errorMsg = "Error getting available autoscaling policies"; log.error(errorMsg, e); - throw new RestAPIException(errorMsg, e); + throw new RestAPIException(errorMsg); } } @@ -336,9 +347,9 @@ public class ServiceUtils { autoscalePolicy = autoscalerServiceClient.getAutoScalePolicy(autoscalePolicyId); } catch (Exception e) { - String errorMsg = "Error getting available autoscaling policies"; + String errorMsg = "Error getting information for autoscaling policy with id " + autoscalePolicyId; log.error(errorMsg, e); - throw new RestAPIException(errorMsg, e); + throw new RestAPIException(errorMsg); } } @@ -357,7 +368,7 @@ public class ServiceUtils { } catch (Exception e) { String errorMsg = "Error getting available deployment policies"; log.error(errorMsg, e); - throw new RestAPIException(errorMsg, e); + throw new RestAPIException(errorMsg); } } @@ -374,9 +385,9 @@ public class ServiceUtils { deploymentPolicies = autoscalerServiceClient.getDeploymentPolicies(cartridgeType); } catch (Exception e) { - String errorMsg = "Error getting available deployment policies"; + String errorMsg = "Error getting available deployment policies for cartridge type " + cartridgeType; log.error(errorMsg, e); - throw new RestAPIException(errorMsg, e); + throw new RestAPIException(errorMsg); } } @@ -393,9 +404,9 @@ public class ServiceUtils { deploymentPolicy = autoscalerServiceClient.getDeploymentPolicy(deploymentPolicyId); } catch (Exception e) { - String errorMsg = "Error getting available deployment policies"; + String errorMsg = "Error getting deployment policy with id " + deploymentPolicyId; log.error(errorMsg, e); - throw new RestAPIException(errorMsg, e); + throw new RestAPIException(errorMsg); } } @@ -412,9 +423,9 @@ public class ServiceUtils { partitionGroups = autoscalerServiceClient.getPartitionGroups(deploymentPolicyId); } catch (Exception e) { - String errorMsg = "Error getting available partition groups"; + String errorMsg = "Error getting available partition groups for deployment policy id " + deploymentPolicyId; log.error(errorMsg, e); - throw new RestAPIException(errorMsg, e); + throw new RestAPIException(errorMsg); } } @@ -428,7 +439,7 @@ public class ServiceUtils { return cartridge; } } - throw new RestAPIException("cannot find the required cartridge Type") ; + throw new RestAPIException("cannot find the required cartridge type " + cartridgeType) ; } static List<Cartridge> getAvailableLbCartridges(Boolean multiTenant, ConfigurationContext configurationContext) throws RestAPIException { @@ -540,9 +551,9 @@ public class ServiceUtils { } } } catch (Exception e) { - String msg = "Error when getting available cartridges. " + e.getMessage(); + String msg = "Error when getting available cartridges"; log.error(msg, e); - throw new RestAPIException("An error occurred getting available cartridges ", e); + throw new RestAPIException(msg); } Collections.sort(cartridges); @@ -573,7 +584,9 @@ public class ServiceUtils { services = serviceDeploymentManager.getServices(); } catch (ADCException e) { - throw new RestAPIException("Error in getting Service Cluster details", e); + String msg = "Error in getting deployed service information "; + log.error(msg, e); + throw new RestAPIException(msg); } if (services != null && !services.isEmpty()) { @@ -591,7 +604,9 @@ public class ServiceUtils { service = serviceDeploymentManager.getService(type); } catch (ADCException e) { - throw new RestAPIException("Error in getting Service Cluster information for type " + type, e); + String msg = "Error in getting deployed service cluster definition " + type; + log.error(msg, e); + throw new RestAPIException(msg); } if (service != null) { @@ -649,9 +664,9 @@ public class ServiceUtils { } } } catch (Exception e) { - String msg = "Error when getting subscribed cartridges. " + e.getMessage(); + String msg = "Error when getting subscribed cartridges"; log.error(msg, e); - throw new RestAPIException("An Error occurred when getting subscribed cartridges.", e); + throw new RestAPIException(msg); } Collections.sort(cartridges); @@ -1235,10 +1250,12 @@ public class ServiceUtils { cartridgeSubsciptionManager.unsubscribeFromCartridge(tenantDomain, alias); } catch (ADCException e) { - throw new RestAPIException(e); + throw new RestAPIException(e.getMessage(), e); } catch (NotSubscribedException e) { - throw new RestAPIException(e); + String msg = "Error in terminating subscription with alias "+ alias; + log.error(msg, e); + throw new RestAPIException(msg); } StratosAdminResponse stratosAdminResponse = new StratosAdminResponse(); @@ -1262,7 +1279,9 @@ public class ServiceUtils { serviceDeploymentManager.deployService(cartridgeType, autoscalingPolicy, deploymentPolicy, tenantId, tenantRange, tenantDomain, tenantUsername); } catch (Exception e) { - throw new RestAPIException(e); + String msg = "Error in deploying service cluster definition"; + log.error(msg, e); + throw new RestAPIException(msg); } StratosAdminResponse stratosAdminResponse = new StratosAdminResponse(); @@ -1276,7 +1295,9 @@ public class ServiceUtils { serviceDeploymentManager.undeployService(serviceType); } catch (Exception e) { - throw new RestAPIException(e); + String msg = "Error in undeploying service cluster definition for type " + serviceType; + log.error(msg, e); + throw new RestAPIException(msg); } StratosAdminResponse stratosAdminResponse = new StratosAdminResponse(); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/86c3fb2f/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java index 6c0b4c0..41e31fc 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java @@ -44,6 +44,7 @@ import org.apache.stratos.tenant.mgt.core.TenantPersistor; import org.apache.stratos.tenant.mgt.util.TenantMgtUtil; import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.context.RegistryType; +import org.wso2.carbon.registry.core.exceptions.RegistryException; import org.wso2.carbon.registry.core.session.UserRegistry; import org.wso2.carbon.user.api.UserRealm; import org.wso2.carbon.user.api.UserStoreManager; @@ -440,36 +441,55 @@ public class StratosAdmin extends AbstractAdmin { @Produces("application/json") @AuthorizationAction("/permission/protected/manage/monitor/tenants") @SuperTenantService(true) - public StratosAdminResponse addTenant(TenantInfoBean tenantInfoBean) throws Exception { + public StratosAdminResponse addTenant(TenantInfoBean tenantInfoBean) throws RestAPIException { try { CommonUtil.validateEmail(tenantInfoBean.getEmail()); } catch (Exception e) { String msg = "Invalid email is provided."; log.error(msg, e); - throw new Exception(msg, e); + throw new RestAPIException(msg); } String tenantDomain = tenantInfoBean.getTenantDomain(); - TenantMgtUtil.validateDomain(tenantDomain); + try { + TenantMgtUtil.validateDomain(tenantDomain); + } catch (Exception e) { + String msg = "Tenant domain validation error for tenant " + tenantDomain; + log.error(msg, e); + throw new RestAPIException(msg); + } UserRegistry userRegistry = (UserRegistry) PrivilegedCarbonContext.getThreadLocalCarbonContext(). getRegistry(RegistryType.USER_GOVERNANCE); if (userRegistry == null) { log.error("Security Alert! User registry is null. A user is trying create a tenant " + " without an authenticated session."); - throw new Exception("Invalid data."); // obscure error message. + throw new RestAPIException("Invalid data."); // obscure error message. } if (userRegistry.getTenantId() != MultitenantConstants.SUPER_TENANT_ID) { log.error("Security Alert! Non super tenant trying to create a tenant."); - throw new Exception("Invalid data."); // obscure error message. + throw new RestAPIException("Invalid data."); // obscure error message. } Tenant tenant = TenantMgtUtil.initializeTenant(tenantInfoBean); TenantPersistor persistor = ServiceHolder.getTenantPersistor(); // not validating the domain ownership, since created by super tenant - int tenantId = persistor.persistTenant(tenant, false, tenantInfoBean.getSuccessKey(), - tenantInfoBean.getOriginatedService(),false); //TODO verify whether this is the correct approach (isSkeleton) + int tenantId = 0; //TODO verify whether this is the correct approach (isSkeleton) + try { + tenantId = persistor.persistTenant(tenant, false, tenantInfoBean.getSuccessKey(), + tenantInfoBean.getOriginatedService(),false); + } catch (Exception e) { + String msg = "Error in persisting tenant " + tenantDomain; + log.error(msg, e); + throw new RestAPIException(msg); + } tenantInfoBean.setTenantId(tenantId); - TenantMgtUtil.addClaimsToUserStoreManager(tenant); + try { + TenantMgtUtil.addClaimsToUserStoreManager(tenant); + } catch (Exception e) { + String msg = "Error in granting permissions for tenant " + tenantDomain; + log.error(msg, e); + throw new RestAPIException(msg); + } //Notify tenant addition try { @@ -477,12 +497,24 @@ public class StratosAdmin extends AbstractAdmin { } catch (StratosException e) { String msg = "Error in notifying tenant addition."; log.error(msg, e); - throw new Exception(msg, e); + throw new RestAPIException(msg); } // For the super tenant tenant creation, tenants are always activated as they are created. - TenantMgtUtil.activateTenantInitially(tenantInfoBean, tenantId); + try { + TenantMgtUtil.activateTenantInitially(tenantInfoBean, tenantId); + } catch (Exception e) { + String msg = "Error in initial activation of tenant " + tenantDomain; + log.error(msg, e); + throw new RestAPIException(msg); + } - TenantMgtUtil.prepareStringToShowThemeMgtPage(tenant.getId()); + try { + TenantMgtUtil.prepareStringToShowThemeMgtPage(tenant.getId()); + } catch (RegistryException e) { + String msg = "Error in preparing theme mgt page for tenant " + tenantDomain; + log.error(msg, e); + throw new RestAPIException(msg); + } StratosAdminResponse stratosAdminResponse = new StratosAdminResponse(); stratosAdminResponse.setMessage("Successfully added new tenant with domain " + tenantInfoBean.getTenantDomain()); @@ -495,7 +527,19 @@ public class StratosAdmin extends AbstractAdmin { @Consumes("application/json") @AuthorizationAction("/permission/protected/manage/monitor/tenants") @SuperTenantService(true) - public StratosAdminResponse updateTenant(TenantInfoBean tenantInfoBean) throws Exception { + public StratosAdminResponse updateTenant(TenantInfoBean tenantInfoBean) throws RestAPIException { + + try { + return updateExistingTenant(tenantInfoBean); + } catch (Exception e) { + String msg = "Error in updating tenant " + tenantInfoBean.getTenantDomain(); + log.error(msg, e); + throw new RestAPIException(msg); + } + } + + private StratosAdminResponse updateExistingTenant(TenantInfoBean tenantInfoBean) throws Exception { + TenantManager tenantManager = ServiceHolder.getTenantManager(); UserStoreManager userStoreManager; @@ -625,7 +669,19 @@ public class StratosAdmin extends AbstractAdmin { @Produces("application/json") @AuthorizationAction("/permission/protected/manage/monitor/tenants") @SuperTenantService(true) - public TenantInfoBean getTenant(@PathParam("tenantDomain") String tenantDomain) throws Exception { + public TenantInfoBean getTenant(@PathParam("tenantDomain") String tenantDomain) throws RestAPIException { + + try { + return getTenantForDomain(tenantDomain); + } catch (Exception e) { + String msg = "Error in getting tenant information for tenant " + tenantDomain; + log.error(msg, e); + throw new RestAPIException(msg); + } + } + + private TenantInfoBean getTenantForDomain (String tenantDomain) throws Exception { + TenantManager tenantManager = ServiceHolder.getTenantManager(); int tenantId; @@ -673,9 +729,16 @@ public class StratosAdmin extends AbstractAdmin { @Produces("application/json") @AuthorizationAction("/permission/protected/manage/monitor/tenants") @SuperTenantService(true) - public StratosAdminResponse deleteTenant(@PathParam("tenantDomain") String tenantDomain) throws Exception { + public StratosAdminResponse deleteTenant(@PathParam("tenantDomain") String tenantDomain) throws RestAPIException { TenantManager tenantManager = ServiceHolder.getTenantManager(); - int tenantId = tenantManager.getTenantId(tenantDomain); + int tenantId = 0; + try { + tenantId = tenantManager.getTenantId(tenantDomain); + } catch (org.wso2.carbon.user.api.UserStoreException e) { + String msg = "Error in deleting tenant " + tenantDomain; + log.error(msg, e); + throw new RestAPIException(msg); + } try { //TODO: billing related info cleanup TenantMgtUtil.deleteTenantRegistryData(tenantId); @@ -687,7 +750,7 @@ public class StratosAdmin extends AbstractAdmin { String msg = "Error deleting tenant with domain: " + tenantDomain + " and tenant id: " + tenantId + "."; log.error(msg, e); - throw new Exception(msg, e); + throw new RestAPIException(msg); } StratosAdminResponse stratosAdminResponse = new StratosAdminResponse(); @@ -701,8 +764,15 @@ public class StratosAdmin extends AbstractAdmin { @Produces("application/json") @AuthorizationAction("/permission/protected/manage/monitor/tenants") @SuperTenantService(true) - public TenantInfoBean[] retrieveTenants() throws Exception { - List<TenantInfoBean> tenantList = getAllTenants(); + public TenantInfoBean[] retrieveTenants() throws RestAPIException { + List<TenantInfoBean> tenantList = null; + try { + tenantList = getAllTenants(); + } catch (Exception e) { + String msg = "Error in retrieving tenants"; + log.error(msg, e); + throw new RestAPIException(msg); + } return tenantList.toArray(new TenantInfoBean[tenantList.size()]); } @@ -712,8 +782,15 @@ public class StratosAdmin extends AbstractAdmin { @Produces("application/json") @AuthorizationAction("/permission/protected/manage/monitor/tenants") @SuperTenantService(true) - public TenantInfoBean[] retrievePartialSearchTenants(@PathParam("domain")String domain) throws Exception { - List<TenantInfoBean> tenantList = searchPartialTenantsDomains(domain); + public TenantInfoBean[] retrievePartialSearchTenants(@PathParam("domain")String domain) throws RestAPIException { + List<TenantInfoBean> tenantList = null; + try { + tenantList = searchPartialTenantsDomains(domain); + } catch (Exception e) { + String msg = "Error in getting information for tenant " + domain; + log.error(msg, e); + throw new RestAPIException(msg); + } return tenantList.toArray(new TenantInfoBean[tenantList.size()]); } @@ -766,8 +843,14 @@ public class StratosAdmin extends AbstractAdmin { @Consumes("application/json") @AuthorizationAction("/permission/protected/manage/monitor/tenants") @SuperTenantService(true) - public boolean isDomainAvailable(@PathParam("tenantDomain") String tenantDomain) throws Exception { - return CommonUtil.isDomainNameAvailable(tenantDomain); + public boolean isDomainAvailable(@PathParam("tenantDomain") String tenantDomain) throws RestAPIException { + try { + return CommonUtil.isDomainNameAvailable(tenantDomain); + } catch (Exception e) { + String msg = "Error in checking domain " + tenantDomain + " is available"; + log.error(msg, e); + throw new RestAPIException(msg); + } } @@ -868,14 +951,15 @@ public class StratosAdmin extends AbstractAdmin { } - private List<TenantInfoBean> getAllTenants() throws Exception { + private List<TenantInfoBean> getAllTenants() throws RestAPIException { TenantManager tenantManager = ServiceHolder.getTenantManager(); Tenant[] tenants; try { tenants = (Tenant[]) tenantManager.getAllTenants(); - } catch (UserStoreException e) { - String msg = "Error in retrieving the tenant information."; - throw new Exception(msg, e); + } catch (Exception e) { + String msg = "Error in retrieving the tenant information"; + log.error(msg, e); + throw new RestAPIException(msg); } List<TenantInfoBean> tenantList = new ArrayList<TenantInfoBean>(); @@ -886,16 +970,16 @@ public class StratosAdmin extends AbstractAdmin { return tenantList; } - private List<TenantInfoBean> searchPartialTenantsDomains(String domain) throws Exception { + private List<TenantInfoBean> searchPartialTenantsDomains(String domain) throws RestAPIException { TenantManager tenantManager = ServiceHolder.getTenantManager(); Tenant[] tenants; try { domain = domain.trim(); tenants = (Tenant[]) tenantManager.getAllTenantsForTenantDomainStr(domain); - } catch (UserStoreException e) { + } catch (Exception e) { String msg = "Error in retrieving the tenant information."; log.error(msg, e); - throw new Exception(msg, e); + throw new RestAPIException(msg); } List<TenantInfoBean> tenantList = new ArrayList<TenantInfoBean>();
