You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by la...@apache.org on 2015/04/29 12:08:20 UTC

[03/10] stratos git commit: Handle specific exceptions correctly in AS service

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 <la...@apache.org>
Authored: Wed Apr 29 15:09:45 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
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