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

Reply via email to