Handle specific exceptions correctly in AS service
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/e5b6ad0e Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/e5b6ad0e Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/e5b6ad0e Branch: refs/heads/master Commit: e5b6ad0ef5b0efd8f527387a918830e1a471a339 Parents: 40dbcef Author: Lahiru Sandaruwan <[email protected]> Authored: Wed Apr 29 15:09:45 2015 +0530 Committer: Lahiru Sandaruwan <[email protected]> Committed: Wed Apr 29 15:38:09 2015 +0530 ---------------------------------------------------------------------- .../autoscaler/pojo/policy/PolicyManager.java | 16 +++++++++------- .../autoscaler/services/AutoscalerService.java | 3 ++- .../services/impl/AutoscalerServiceImpl.java | 20 +++++++++++--------- 3 files changed, 22 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/e5b6ad0e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java index 997c593..262e5dc 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java @@ -23,8 +23,10 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.exception.AutoScalerException; +import org.apache.stratos.autoscaler.exception.AutoScalingPolicyAlreadyExistException; import org.apache.stratos.autoscaler.exception.policy.InvalidDeploymentPolicyException; import org.apache.stratos.autoscaler.exception.policy.InvalidPolicyException; +import org.apache.stratos.autoscaler.exception.policy.PolicyDoesNotExistException; import org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy; import org.apache.stratos.autoscaler.pojo.policy.deployment.ApplicationPolicy; import org.apache.stratos.autoscaler.pojo.policy.deployment.DeploymentPolicy; @@ -78,15 +80,15 @@ public class PolicyManager { } // Add the policy to information model and persist. - public boolean addAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException { + public boolean addAutoscalePolicy(AutoscalePolicy policy) throws AutoScalingPolicyAlreadyExistException{ if (log.isInfoEnabled()) { log.info(String.format("Adding autoscaling policy: [id] %s", policy.getId())); } if (StringUtils.isEmpty(policy.getId())) { throw new AutoScalerException("Autoscaling policy id cannot be empty"); } - RegistryManager.getInstance().persistAutoscalerPolicy(policy); this.addASPolicyToInformationModel(policy); + RegistryManager.getInstance().persistAutoscalerPolicy(policy); if (log.isInfoEnabled()) { log.info(String.format("Autoscaling policy is added successfully: [id] %s", policy.getId())); } @@ -105,7 +107,7 @@ public class PolicyManager { return true; } - public boolean removeAutoscalePolicy(String policyID) throws InvalidPolicyException { + public boolean removeAutoscalePolicy(String policyID) { if (StringUtils.isEmpty(policyID)) { throw new AutoScalerException("Autoscaling policy id cannot be empty"); } @@ -183,7 +185,7 @@ public class PolicyManager { } } - public void addASPolicyToInformationModel(AutoscalePolicy asPolicy) throws InvalidPolicyException { + public void addASPolicyToInformationModel(AutoscalePolicy asPolicy) throws AutoScalingPolicyAlreadyExistException{ if (!autoscalePolicyListMap.containsKey(asPolicy.getId())) { if (log.isDebugEnabled()) { log.debug("Adding autoscaling policy: " + asPolicy.getId()); @@ -192,7 +194,7 @@ public class PolicyManager { } else { String errMsg = "Specified autoscaling policy [" + asPolicy.getId() + "] already exists"; log.error(errMsg); - throw new InvalidPolicyException(errMsg); + throw new AutoScalingPolicyAlreadyExistException(errMsg); } } @@ -214,14 +216,14 @@ public class PolicyManager { } } - public void removeASPolicyInInformationModel(String policyID) throws InvalidPolicyException { + public void removeASPolicyInInformationModel(String policyID) throws PolicyDoesNotExistException { if (autoscalePolicyListMap.containsKey(policyID)) { if (log.isDebugEnabled()) { log.debug("Updating autoscaling policy: " + policyID); } autoscalePolicyListMap.remove(policyID); } else { - throw new InvalidPolicyException("No such policy ID [" + policyID + "] exists"); + throw new PolicyDoesNotExistException("No such policy ID [" + policyID + "] exists"); } } http://git-wip-us.apache.org/repos/asf/stratos/blob/e5b6ad0e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java index 1b907d4..7726068 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java @@ -33,6 +33,7 @@ import org.apache.stratos.autoscaler.pojo.ServiceGroup; import org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy; import org.apache.stratos.autoscaler.pojo.policy.deployment.ApplicationPolicy; import org.apache.stratos.autoscaler.pojo.policy.deployment.DeploymentPolicy; +import org.apache.stratos.autoscaler.exception.policy.UnremovablePolicyException; import org.apache.stratos.common.Properties; import java.rmi.RemoteException; @@ -78,7 +79,7 @@ public interface AutoscalerService { * @return * @throws InvalidPolicyException */ - public boolean removeAutoScalingPolicy(String autoscalingPolicyId) throws InvalidPolicyException; + public boolean removeAutoScalingPolicy(String autoscalingPolicyId) throws InvalidPolicyException, UnremovablePolicyException; /** * Add an application http://git-wip-us.apache.org/repos/asf/stratos/blob/e5b6ad0e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java index d5b66f3..f6523d7 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java @@ -18,7 +18,6 @@ */ package org.apache.stratos.autoscaler.services.impl; -import org.apache.axis2.AxisFault; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -34,6 +33,7 @@ import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext; import org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext; import org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext; import org.apache.stratos.autoscaler.exception.AutoScalerException; +import org.apache.stratos.autoscaler.exception.AutoScalingPolicyAlreadyExistException; import org.apache.stratos.autoscaler.exception.CloudControllerConnectionException; import org.apache.stratos.autoscaler.exception.InvalidArgumentException; import org.apache.stratos.autoscaler.exception.application.ApplicationDefinitionException; @@ -44,6 +44,7 @@ import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor; import org.apache.stratos.autoscaler.monitor.component.ApplicationMonitor; import org.apache.stratos.autoscaler.pojo.Dependencies; import org.apache.stratos.autoscaler.pojo.ServiceGroup; +import org.apache.stratos.autoscaler.exception.policy.PolicyDoesNotExistException; import org.apache.stratos.autoscaler.pojo.policy.PolicyManager; import org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy; import org.apache.stratos.autoscaler.pojo.policy.deployment.ApplicationPolicy; @@ -54,7 +55,6 @@ import org.apache.stratos.autoscaler.util.AutoscalerUtil; import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidCartridgeTypeExceptionException; import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidPartitionExceptionException; import org.apache.stratos.cloud.controller.stub.domain.MemberContext; -import org.apache.stratos.cloud.controller.stub.exception.CloudControllerException; import org.apache.stratos.common.Properties; import org.apache.stratos.common.client.CloudControllerServiceClient; import org.apache.stratos.common.client.StratosManagerServiceClient; @@ -88,7 +88,7 @@ public class AutoscalerServiceImpl implements AutoscalerService { } @Override - public boolean addAutoScalingPolicy(AutoscalePolicy autoscalePolicy) throws InvalidPolicyException { + public boolean addAutoScalingPolicy(AutoscalePolicy autoscalePolicy) throws AutoScalingPolicyAlreadyExistException{ return PolicyManager.getInstance().addAutoscalePolicy(autoscalePolicy); } @@ -98,11 +98,13 @@ public class AutoscalerServiceImpl implements AutoscalerService { } @Override - public boolean removeAutoScalingPolicy(String autoscalePolicyId) throws InvalidPolicyException { - if (validateAutoScalerPolicy(autoscalePolicyId)) { + public boolean removeAutoScalingPolicy(String autoscalePolicyId) throws UnremovablePolicyException, + PolicyDoesNotExistException { + if (removableAutoScalerPolicy(autoscalePolicyId)) { return PolicyManager.getInstance().removeAutoscalePolicy(autoscalePolicyId); } else { - throw new InvalidPolicyException("This autoscaler policy cannot be removed, since it is used in applications."); + throw new UnremovablePolicyException("This autoscaler policy cannot be removed, since it is used in " + + "applications."); } } @@ -112,7 +114,7 @@ public class AutoscalerServiceImpl implements AutoscalerService { * @param autoscalePolicyId Auto Scalar policy id boolean * @return */ - private boolean validateAutoScalerPolicy(String autoscalePolicyId) { + private boolean removableAutoScalerPolicy(String autoscalePolicyId) { boolean canRemove = true; Collection<ApplicationContext> appContexts = AutoscalerContext.getInstance().getApplicationContexts(); for (ApplicationContext app : appContexts) { @@ -825,7 +827,7 @@ public class AutoscalerServiceImpl implements AutoscalerService { @Override public void addDeployementPolicy(DeploymentPolicy deploymentPolicy) throws RemoteException, - InvalidDeploymentPolicyException, DeploymentPolicyNotExistsException, DeploymentPolicyAlreadyExistsException { + InvalidDeploymentPolicyException, DeploymentPolicyAlreadyExistsException { validateDeploymentPolicy(deploymentPolicy); @@ -852,7 +854,7 @@ public class AutoscalerServiceImpl implements AutoscalerService { } } - private void validateDeploymentPolicy(DeploymentPolicy deploymentPolicy) throws DeploymentPolicyNotExistsException, + private void validateDeploymentPolicy(DeploymentPolicy deploymentPolicy) throws InvalidDeploymentPolicyException, RemoteException { // deployment policy can't be null
