Repository: stratos Updated Branches: refs/heads/master f6630b258 -> 2a822d99d
REST API - Return 404 for empty results on GET operations Remove unwanted stack traces from being logged for GET operations Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/2a822d99 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/2a822d99 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/2a822d99 Branch: refs/heads/master Commit: 2a822d99d8b2c68c667476f79ce11395cf78fa2f Parents: f6630b2 Author: Chamila de Alwis <[email protected]> Authored: Fri Apr 17 20:24:53 2015 +0530 Committer: Chamila de Alwis <[email protected]> Committed: Fri Apr 17 20:25:17 2015 +0530 ---------------------------------------------------------------------- .../rest/endpoint/api/StratosApiV41.java | 122 +++++++++++++++---- .../rest/endpoint/api/StratosApiV41Utils.java | 20 ++- 2 files changed, 112 insertions(+), 30 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/2a822d99/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 9c8b8c7..bf1ceec 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 @@ -215,6 +215,10 @@ public class StratosApiV41 extends AbstractApi { public Response getDeploymentPolicies() throws RestAPIException { DeploymentPolicyBean[] deploymentPolicies = StratosApiV41Utils.getDeployementPolicies(); + if (deploymentPolicies == null || deploymentPolicies.length == 0){ + return Response.status(Response.Status.NOT_FOUND).build(); + } + return Response.ok(deploymentPolicies).build(); } @@ -301,12 +305,10 @@ public class StratosApiV41 extends AbstractApi { public Response getCartridges() throws RestAPIException { List<CartridgeBean> cartridges = StratosApiV41Utils.getAvailableCartridges(null, null, getConfigContext()); - if (cartridges == null) { + if (cartridges == null || cartridges.isEmpty()) { return Response.status(Response.Status.NOT_FOUND).build(); } - CartridgeBean[] cartridgeArray = cartridges.isEmpty() ? - new CartridgeBean[0] : - cartridges.toArray(new CartridgeBean[cartridges.size()]); + CartridgeBean[] cartridgeArray = cartridges.toArray(new CartridgeBean[cartridges.size()]); return Response.ok().entity(cartridgeArray).build(); } @@ -323,11 +325,13 @@ public class StratosApiV41 extends AbstractApi { @AuthorizationAction("/permission/admin/manage/getCartridge") public Response getCartridge( @PathParam("cartridgeType") String cartridgeType) throws RestAPIException { - CartridgeBean cartridge = StratosApiV41Utils.getCartridge(cartridgeType); - if (cartridge == null) { + CartridgeBean cartridge; + try { + cartridge = StratosApiV41Utils.getCartridge(cartridgeType); + return Response.ok().entity(cartridge).build(); + } catch (RestAPIException e) { return Response.status(Response.Status.NOT_FOUND).build(); } - return Response.ok().entity(cartridge).build(); } /** @@ -348,12 +352,11 @@ public class StratosApiV41 extends AbstractApi { throws RestAPIException { List<CartridgeBean> cartridges = StratosApiV41Utils. getCartridgesByFilter(filter, criteria, getConfigContext()); - if (cartridges == null) { + if (cartridges == null || cartridges.isEmpty()) { return Response.status(Response.Status.NOT_FOUND).build(); } - CartridgeBean[] cartridgeArray = cartridges.isEmpty() ? - new CartridgeBean[0] : - cartridges.toArray(new CartridgeBean[cartridges.size()]); + + CartridgeBean[] cartridgeArray = cartridges.toArray(new CartridgeBean[cartridges.size()]); return Response.ok().entity(cartridgeArray).build(); } @@ -373,11 +376,13 @@ public class StratosApiV41 extends AbstractApi { public Response getCartridgeByFilter( @PathParam("cartridgeType") String cartridgeType, @DefaultValue("") @PathParam("filter") String filter) throws RestAPIException { - CartridgeBean cartridge = StratosApiV41Utils.getCartridgeByFilter(filter, cartridgeType, getConfigContext()); - if (cartridge == null) { + CartridgeBean cartridge; + try { + cartridge = StratosApiV41Utils.getCartridgeByFilter(filter, cartridgeType, getConfigContext()); + return Response.ok().entity(cartridge).build(); + } catch (RestAPIException e) { return Response.status(Response.Status.NOT_FOUND).build(); } - return Response.ok().entity(cartridge).build(); } /** @@ -541,6 +546,10 @@ public class StratosApiV41 extends AbstractApi { public Response getNetworkPartitions() throws RestAPIException { NetworkPartitionBean[] networkPartitions = StratosApiV41Utils.getNetworkPartitions(); + if (networkPartitions == null || networkPartitions.length == 0){ + return Response.status(Response.Status.NOT_FOUND).build(); + } + return Response.ok(networkPartitions).build(); } @@ -558,6 +567,10 @@ public class StratosApiV41 extends AbstractApi { public Response getNetworkPartition( @PathParam("networkPartitionId") String networkPartitionId) throws RestAPIException { NetworkPartitionBean networkPartition = StratosApiV41Utils.getNetworkPartition(networkPartitionId); + if (networkPartition == null){ + return Response.status(Response.Status.NOT_FOUND).build(); + } + return Response.ok(networkPartition).build(); } @@ -619,6 +632,10 @@ public class StratosApiV41 extends AbstractApi { @AuthorizationAction("/permission/protected/manage/getApplications") public Response getApplications() throws RestAPIException { List<ApplicationBean> applicationDefinitions = StratosApiV41Utils.getApplications(); + if (applicationDefinitions == null || applicationDefinitions.isEmpty()){ + return Response.status(Response.Status.NOT_FOUND).build(); + } + ApplicationBean[] applicationDefinitionsArray = applicationDefinitions .toArray(new ApplicationBean[applicationDefinitions.size()]); return Response.ok(applicationDefinitionsArray).build(); @@ -701,6 +718,10 @@ public class StratosApiV41 extends AbstractApi { public Response getApplicationPolicy( @PathParam("applicationPolicyId") String applicationPolicyId) throws RestAPIException { ApplicationPolicyBean applicationPolicyBean = StratosApiV41Utils.getApplicationPolicy(applicationPolicyId); + if (applicationPolicyBean == null){ + return Response.status(Response.Status.NOT_FOUND).build(); + } + return Response.ok(applicationPolicyBean).build(); } @@ -717,7 +738,12 @@ public class StratosApiV41 extends AbstractApi { @AuthorizationAction("/permission/admin/manage/getApplicationPolicies") public Response getApplicationPolicies() throws RestAPIException { - return Response.ok().entity(StratosApiV41Utils.getApplicationPolicies()).build(); + ApplicationPolicyBean[] applicationPolicies = StratosApiV41Utils.getApplicationPolicies(); + if (applicationPolicies == null || applicationPolicies.length == 0){ + return Response.status(Response.Status.NOT_FOUND).build(); + } + + return Response.ok().entity(applicationPolicies).build(); } /** @@ -777,6 +803,12 @@ public class StratosApiV41 extends AbstractApi { @PathParam("applicationId") String applicationId) throws RestAPIException { ApplicationNetworkPartitionIdListBean appNetworkPartitionsBean = StratosApiV41Utils .getApplicationNetworkPartitions(applicationId); + if (appNetworkPartitionsBean == null || + (appNetworkPartitionsBean.getNetworkPartitionIds().size() == 1 && + appNetworkPartitionsBean.getNetworkPartitionIds().get(0) == null)){ + return Response.status(Response.Status.NOT_FOUND).build(); + } + return Response.ok(appNetworkPartitionsBean).build(); } @@ -815,11 +847,17 @@ public class StratosApiV41 extends AbstractApi { @AuthorizationAction("/permission/protected/manage/getApplicationSignUp") public Response getApplicationSignUp( @PathParam("applicationId") String applicationId) throws RestAPIException { - ApplicationSignUpBean applicationSignUpBean = StratosApiV41Utils.getApplicationSignUp(applicationId); - if (applicationSignUpBean == null) { + ApplicationSignUpBean applicationSignUpBean = null; + try { + applicationSignUpBean = StratosApiV41Utils.getApplicationSignUp(applicationId); + if (applicationSignUpBean == null) { + return Response.status(Response.Status.NOT_FOUND).build(); + } + + return Response.ok(applicationSignUpBean).build(); + } catch (RestAPIException e) { return Response.status(Response.Status.NOT_FOUND).build(); } - return Response.ok(applicationSignUpBean).build(); } /** @@ -909,6 +947,10 @@ public class StratosApiV41 extends AbstractApi { public Response getDomainMappings( @PathParam("applicationId") String applicationId) throws RestAPIException { List<DomainMappingBean> domainMappingsBeanList = StratosApiV41Utils.getApplicationDomainMappings(applicationId); + if (domainMappingsBeanList == null || domainMappingsBeanList.isEmpty()){ + return Response.status(Response.Status.NOT_FOUND).build(); + } + DomainMappingBean[] domainMappingsBeans = domainMappingsBeanList .toArray(new DomainMappingBean[domainMappingsBeanList.size()]); return Response.ok(domainMappingsBeans).build(); @@ -1014,7 +1056,12 @@ public class StratosApiV41 extends AbstractApi { @AuthorizationAction("/permission/admin/manage/getAutoscalingPolicies") public Response getAutoscalingPolicies() throws RestAPIException { - return Response.ok().entity(StratosApiV41Utils.getAutoScalePolicies()).build(); + AutoscalePolicyBean[] autoScalePolicies = StratosApiV41Utils.getAutoScalePolicies(); + if (autoScalePolicies == null || autoScalePolicies.length == 0){ + return Response.status(Response.Status.NOT_FOUND).build(); + } + + return Response.ok().entity(autoScalePolicies).build(); } /** @@ -1416,11 +1463,13 @@ public class StratosApiV41 extends AbstractApi { try { TenantInfoBean tenantInfo = getTenantByDomain(tenantDomain); + if (tenantInfo == null){ + return Response.status(Response.Status.NOT_FOUND).build(); + } + return Response.ok().entity(tenantInfo).build(); } catch (Exception e) { - String msg = "Error in getting tenant information for tenant " + tenantDomain; - log.error(msg, e); - throw new RestAPIException(msg); + return Response.status(Response.Status.NOT_FOUND).build(); } } @@ -1446,8 +1495,14 @@ public class StratosApiV41 extends AbstractApi { throw new Exception(msg, e); } - org.apache.stratos.common.beans.TenantInfoBean bean = ObjectConverter - .convertCarbonTenantInfoBeanToTenantInfoBean(TenantMgtUtil.initializeTenantInfoBean(tenantId, tenant)); + TenantInfoBean bean; + try { + bean = ObjectConverter + .convertCarbonTenantInfoBeanToTenantInfoBean(TenantMgtUtil.initializeTenantInfoBean(tenantId, tenant)); + } catch (NullPointerException e) { + log.error(String.format("Couldn't find tenant for provided tenant domain. [Tenant Domain] %s", tenantDomain)); + return null; + } // retrieve first and last names from the UserStoreManager bean.setFirstname(ClaimsMgtUtil.getFirstNamefromUserStoreManager(ServiceHolder.getRealmService(), tenantId)); @@ -1503,6 +1558,10 @@ public class StratosApiV41 extends AbstractApi { throws RestAPIException { try { List<org.apache.stratos.common.beans.TenantInfoBean> tenantList = getAllTenants(); + if (tenantList == null || tenantList.isEmpty()){ + return Response.status(Response.Status.NOT_FOUND).build(); + } + return Response.ok().entity(tenantList.toArray( new org.apache.stratos.common.beans.TenantInfoBean[tenantList.size()])).build(); } catch (Exception e) { @@ -1551,6 +1610,10 @@ public class StratosApiV41 extends AbstractApi { try { List<org.apache.stratos.common.beans.TenantInfoBean> tenantList = searchPartialTenantsDomains(tenantDomain); + if (tenantList == null || tenantList.isEmpty()){ + return Response.status(Response.Status.NOT_FOUND).build(); + } + return Response.ok().entity(tenantList.toArray(new org.apache.stratos.common.beans.TenantInfoBean[tenantList.size()])).build(); } catch (Exception e) { String msg = "Error in getting information for tenant " + tenantDomain; @@ -1803,6 +1866,10 @@ public class StratosApiV41 extends AbstractApi { try { List<UserInfoBean> userList = stratosUserManager.getAllUsers(getTenantUserStoreManager()); + if (userList == null || userList.isEmpty()){ + return Response.status(Response.Status.NOT_FOUND).build(); + } + return Response.ok().entity(userList.toArray(new UserInfoBean[userList.size()])).build(); } catch (UserManagerException e) { throw new RestAPIException(e.getMessage()); @@ -1939,7 +2006,12 @@ public class StratosApiV41 extends AbstractApi { @AuthorizationAction("/permission/admin/manage/getKubernetesHostClusters") public Response getKubernetesHostClusters() throws RestAPIException { - return Response.ok().entity(StratosApiV41Utils.getAvailableKubernetesClusters()).build(); + KubernetesClusterBean[] availableKubernetesClusters = StratosApiV41Utils.getAvailableKubernetesClusters(); + if (availableKubernetesClusters == null || availableKubernetesClusters.length == 0){ + return Response.status(Response.Status.NOT_FOUND).build(); + } + + return Response.ok().entity(availableKubernetesClusters).build(); } /** http://git-wip-us.apache.org/repos/asf/stratos/blob/2a822d99/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 987f147..166da5b 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 @@ -940,7 +940,7 @@ public class StratosApiV41Utils { try { AutoscalerServiceClient asServiceClient = AutoscalerServiceClient.getInstance(); ServiceGroup[] serviceGroups = asServiceClient.getServiceGroups(); - if (serviceGroups == null || serviceGroups.length == 0) { + if (serviceGroups == null || serviceGroups.length == 0 || (serviceGroups.length == 1 && serviceGroups[0] == null)) { return null; } @@ -1587,6 +1587,11 @@ public class StratosApiV41Utils { try { org.apache.stratos.cloud.controller.stub.domain.kubernetes.KubernetesCluster[] kubernetesClusters = cloudControllerServiceClient.getAvailableKubernetesClusters(); + if (kubernetesClusters == null) { + log.error("Could not find any Kubernetes Clusters."); + return null; + } + return ObjectConverter.convertStubKubernetesClustersToKubernetesClusters(kubernetesClusters); } catch (RemoteException e) { @@ -1611,7 +1616,7 @@ public class StratosApiV41Utils { throw new RestAPIException(e.getMessage(), e); } catch (CloudControllerServiceNonExistingKubernetesClusterExceptionException e) { String message = e.getFaultMessage().getNonExistingKubernetesClusterException().getMessage(); - log.error(message, e); + log.error(message); throw new RestAPIException(message, e); } } @@ -1674,7 +1679,7 @@ public class StratosApiV41Utils { throw new RestAPIException(e.getMessage(), e); } catch (CloudControllerServiceNonExistingKubernetesClusterExceptionException e) { String message = e.getFaultMessage().getNonExistingKubernetesClusterException().getMessage(); - log.error(message, e); + log.error(message); throw new RestAPIException(message, e); } } @@ -1694,7 +1699,7 @@ public class StratosApiV41Utils { throw new RestAPIException(e.getMessage(), e); } catch (CloudControllerServiceNonExistingKubernetesClusterExceptionException e) { String message = e.getFaultMessage().getNonExistingKubernetesClusterException().getMessage(); - log.error(message, e); + log.error(message); throw new RestAPIException(message, e); } } @@ -2226,6 +2231,11 @@ public class StratosApiV41Utils { throw new RestAPIException("Cluster Id can not be empty"); } - return ObjectConverter.convertClusterToClusterBean(TopologyManager.getTopology().getCluster(clusterId), clusterId); + Cluster cluster = TopologyManager.getTopology().getCluster(clusterId); + if (cluster == null){ + return null; + } + + return ObjectConverter.convertClusterToClusterBean(cluster, clusterId); } }
