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/08/13 04:15:33 UTC

[1/2] stratos git commit: Fixing formatting issues

Repository: stratos
Updated Branches:
  refs/heads/master 4b5a381bb -> a2749a9ec


http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
index 105d3aa..98e97cf 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
@@ -70,8 +70,6 @@ public abstract class ParentComponentMonitor extends Monitor {
     //Scheduler executor service to execute this monitor in a thread
     private final ScheduledExecutorService scheduler = StratosThreadPool.getScheduledExecutorService(
             "autoscaler.monitor.scheduler.thread.pool", 100);
-    // future to cancel it when destroying monitors
-    private ScheduledFuture<?> schedulerFuture;
     //The monitors dependency tree with all the start-able/kill-able dependencies
     protected DependencyTree startupDependencyTree;
     //The monitors dependency tree with all the scaling dependencies
@@ -86,6 +84,8 @@ public abstract class ParentComponentMonitor extends Monitor {
     protected Map<String, List<String>> terminatingInstancesMap;
     //network partition contexts
     protected Map<String, NetworkPartitionContext> networkPartitionContextsMap;
+    // future to cancel it when destroying monitors
+    private ScheduledFuture<?> schedulerFuture;
     //Executor service to maintain the thread pool
     private ExecutorService executorService;
 
@@ -207,7 +207,7 @@ public abstract class ParentComponentMonitor extends Monitor {
                 //starting a new instance of the child
                 Monitor monitor = aliasToActiveChildMonitorsMap.get(context.getId());
                 //Creating the new instance
-                if(monitor instanceof ParentComponentMonitor) {
+                if (monitor instanceof ParentComponentMonitor) {
                     ((ParentComponentMonitor) monitor).createInstanceOnTermination(instanceId);
                 } else {
                     monitor.createInstanceOnDemand(instanceId);
@@ -244,12 +244,12 @@ public abstract class ParentComponentMonitor extends Monitor {
                     Monitor monitor = aliasToActiveChildMonitorsMap.get(context.getId());
                     // Creating new instance
                     for (String instanceId : parentInstanceIds) {
-                        if(monitor.getInstancesByParentInstanceId(instanceId) == null ||
+                        if (monitor.getInstancesByParentInstanceId(instanceId) == null ||
                                 monitor.getInstancesByParentInstanceId(instanceId).isEmpty()) {
                             monitor.createInstanceOnDemand(instanceId);
                         } else {
                             log.info(String.format("Instance has already exists for [application] " +
-                                    "%s [component] %s [instance-id] %s", getAppId(),
+                                            "%s [component] %s [instance-id] %s", getAppId(),
                                     context.getId(), instanceId));
                         }
                     }
@@ -275,7 +275,7 @@ public abstract class ParentComponentMonitor extends Monitor {
         if (networkPartitionContext != null) {
             InstanceContext instanceContext = networkPartitionContext.
                     getInstanceContext(instanceId);
-            ParentInstanceContext parentInstanceContext = (ParentInstanceContext)instanceContext;
+            ParentInstanceContext parentInstanceContext = (ParentInstanceContext) instanceContext;
             if (instanceContext != null) {
                 if (parentInstanceContext.containsScalingEvent(id)) {
                     parentInstanceContext.removeScalingEvent(id);
@@ -302,7 +302,7 @@ public abstract class ParentComponentMonitor extends Monitor {
         String instanceId = scalingDownBeyondMinEvent.getInstanceId();
         InstanceContext instanceContext = getNetworkPartitionContext(networkPartitionId).
                 getInstanceContext(instanceId);
-        ((ParentInstanceContext)instanceContext).addScalingDownBeyondMinEvent(scalingDownBeyondMinEvent);
+        ((ParentInstanceContext) instanceContext).addScalingDownBeyondMinEvent(scalingDownBeyondMinEvent);
     }
 
     @Override
@@ -323,7 +323,7 @@ public abstract class ParentComponentMonitor extends Monitor {
             InstanceContext instanceContext = networkPartitionContext.
                     getInstanceContext(instanceId);
             if (instanceContext != null) {
-                ParentInstanceContext parentInstanceContext = (ParentInstanceContext)instanceContext;
+                ParentInstanceContext parentInstanceContext = (ParentInstanceContext) instanceContext;
                 if (parentInstanceContext.containsScalingEvent(id)) {
                     parentInstanceContext.removeScalingOverMaxEvent(id);
                     parentInstanceContext.addScalingOverMaxEvent(scalingUpBeyondMaxEvent);
@@ -362,18 +362,18 @@ public abstract class ParentComponentMonitor extends Monitor {
             // no need to invoke start dependencies.
 
             Monitor childMonitor = aliasToActiveChildMonitorsMap.get(childId);
-            if(childMonitor != null) {
+            if (childMonitor != null) {
                 Instance instance = childMonitor.getInstance(instanceId);
                 boolean firstIteration = false;
-                if(instance != null) {
-                    if(instance instanceof GroupInstance) {
-                        GroupInstance groupInstance = (GroupInstance)instance;
+                if (instance != null) {
+                    if (instance instanceof GroupInstance) {
+                        GroupInstance groupInstance = (GroupInstance) instance;
                         firstIteration = groupInstance.getPreviousState() == GroupStatus.Created;
-                    } else if(instance instanceof ClusterInstance) {
-                        ClusterInstance clusterInstance = (ClusterInstance)instance;
+                    } else if (instance instanceof ClusterInstance) {
+                        ClusterInstance clusterInstance = (ClusterInstance) instance;
                         firstIteration = clusterInstance.getPreviousState() == ClusterStatus.Created;
                     }
-                    if(firstIteration || childMonitor.hasStartupDependents()) {
+                    if (firstIteration || childMonitor.hasStartupDependents()) {
                         startDep = startDependency(childId, instanceId);
                     }
                 } else {
@@ -666,9 +666,9 @@ public abstract class ParentComponentMonitor extends Monitor {
             }
         }
 
-        if(log.isDebugEnabled()) {
+        if (log.isDebugEnabled()) {
             log.debug(String.format("Calculating the group instances status for [application] " +
-                    "%s [group] %s [group-instance] %s [required-status] %s [no-of-instances] %s",
+                            "%s [group] %s [group-instance] %s [required-status] %s [no-of-instances] %s",
                     appId, childId, instanceId, requiredStatus.toString(),
                     noOfInstancesOfRequiredStatus));
         }
@@ -681,14 +681,14 @@ public abstract class ParentComponentMonitor extends Monitor {
             //if terminated all the instances in this instances map should be in terminated state
             if (noOfInstancesOfRequiredStatus == this.inactiveInstancesMap.size() &&
                     requiredStatus == GroupStatus.Terminated) {
-                if(log.isDebugEnabled()) {
+                if (log.isDebugEnabled()) {
                     log.debug(String.format("Group instances in required status for [application] " +
                                     "%s [group] %s [group-instance] %s [required-status] %s",
                             appId, childId, instanceId, GroupStatus.Terminated.toString()));
                 }
                 return true;
             } else if (noOfInstancesOfRequiredStatus >= minInstances) {
-                if(log.isDebugEnabled()) {
+                if (log.isDebugEnabled()) {
                     log.debug(String.format("Group instances in required status for [application] " +
                                     "%s [group] %s [group-instance] %s [required-status] %s",
                             appId, childId, instanceId, requiredStatus.toString()));
@@ -697,7 +697,7 @@ public abstract class ParentComponentMonitor extends Monitor {
             } else {
                 //of only one is inActive implies that the whole group is Inactive
                 if (requiredStatus == GroupStatus.Inactive && noOfInstancesOfRequiredStatus >= 1) {
-                    if(log.isDebugEnabled()) {
+                    if (log.isDebugEnabled()) {
                         log.debug(String.format("Group instances in required status for [application] " +
                                         "%s [group] %s [group-instance] %s [required-status] %s",
                                 appId, childId, instanceId, GroupStatus.Inactive.toString()));

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/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 e7fc57c..3336776 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
@@ -55,8 +55,12 @@ public class PolicyManager {
 
     private static Map<String, ApplicationPolicy> applicationPolicyListMap;
 
-    public Collection<DeploymentPolicy> getDeploymentPolicies() {
-        return deploymentPolicyListMap.values();
+    private PolicyManager() {
+        // Initialize distributed object provider
+        DistributedObjectProvider distributedObjectProvider = ServiceReferenceHolder.getInstance().getDistributedObjectProvider();
+        autoscalePolicyListMap = distributedObjectProvider.getMap(AS_POLICY_ID_TO_AUTOSCALE_POLICY_MAP);
+        deploymentPolicyListMap = distributedObjectProvider.getMap(DEPLOYMENT_POLICY_ID_TO_DEPLOYMENT_POLICY_MAP);
+        applicationPolicyListMap = distributedObjectProvider.getMap(APPLICATION_ID_TO_APPLICATION_POLICY_MAP);
     }
 
     /* An instance of a PolicyManager is created when the class is loaded.
@@ -64,20 +68,12 @@ public class PolicyManager {
      * PolicyManager is created only once. Hence it is singleton.
      */
 
-    private static class InstanceHolder {
-        private static final PolicyManager INSTANCE = new PolicyManager();
-    }
-
     public static PolicyManager getInstance() {
         return InstanceHolder.INSTANCE;
     }
 
-    private PolicyManager() {
-        // Initialize distributed object provider
-        DistributedObjectProvider distributedObjectProvider = ServiceReferenceHolder.getInstance().getDistributedObjectProvider();
-        autoscalePolicyListMap = distributedObjectProvider.getMap(AS_POLICY_ID_TO_AUTOSCALE_POLICY_MAP);
-        deploymentPolicyListMap = distributedObjectProvider.getMap(DEPLOYMENT_POLICY_ID_TO_DEPLOYMENT_POLICY_MAP);
-        applicationPolicyListMap = distributedObjectProvider.getMap(APPLICATION_ID_TO_APPLICATION_POLICY_MAP);
+    public Collection<DeploymentPolicy> getDeploymentPolicies() {
+        return deploymentPolicyListMap.values();
     }
 
     // Add the policy to information model and persist.
@@ -120,7 +116,6 @@ public class PolicyManager {
         return true;
     }
 
-
     /**
      * Add deployment policy to in memory map and persist.
      *
@@ -276,7 +271,6 @@ public class PolicyManager {
         return autoscalePolicyListMap.get(id);
     }
 
-
     private void addDeploymentPolicyToPolicyListMap(DeploymentPolicy policy) {
         if (StringUtils.isEmpty(policy.getDeploymentPolicyID())) {
             throw new RuntimeException("Application id is not found in the deployment policy");
@@ -347,7 +341,6 @@ public class PolicyManager {
         return deploymentPolicyListMap.get(id);
     }
 
-
     public void addApplicationPolicy(ApplicationPolicy applicationPolicy) throws InvalidApplicationPolicyException {
         String applicationPolicyId = applicationPolicy.getId();
         if (log.isInfoEnabled()) {
@@ -426,4 +419,8 @@ public class PolicyManager {
     public ApplicationPolicy[] getApplicationPolicies() {
         return applicationPolicyListMap.values().toArray(new ApplicationPolicy[0]);
     }
+
+    private static class InstanceHolder {
+        private static final PolicyManager INSTANCE = new PolicyManager();
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java
index 3688c6b..b871e97 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java
@@ -41,9 +41,8 @@ import java.util.Map;
 public class AutoscalerRuleEvaluator {
 
     private static final Log log = LogFactory.getLog(AutoscalerRuleEvaluator.class);
-
-    private Map<String, KnowledgeBase> knowledgeBases;
     private static volatile AutoscalerRuleEvaluator instance;
+    private Map<String, KnowledgeBase> knowledgeBases;
 
     private AutoscalerRuleEvaluator() {
         knowledgeBases = new HashMap<String, KnowledgeBase>();
@@ -67,6 +66,24 @@ public class AutoscalerRuleEvaluator {
         return instance;
     }
 
+    private static KnowledgeBase readKnowledgeBase(String drlFileName) {
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        String configDir = CarbonUtils.getCarbonConfigDirPath();
+        String droolsDir = configDir + File.separator + StratosConstants.DROOLS_DIR_NAME;
+        Resource resource = ResourceFactory.newFileResource(droolsDir + File.separator + drlFileName);
+        kbuilder.add(resource, ResourceType.DRL);
+        KnowledgeBuilderErrors errors = kbuilder.getErrors();
+        if (errors.size() > 0) {
+            for (KnowledgeBuilderError error : errors) {
+                log.error(error.getMessage());
+            }
+            throw new IllegalArgumentException("Could not parse knowledge");
+        }
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+        return kbase;
+    }
+
     public void parseAndBuildKnowledgeBaseForDroolsFile(String drlFileName) {
         KnowledgeBase knowledgeBase = readKnowledgeBase(drlFileName);
         if (knowledgeBase == null) {
@@ -87,22 +104,4 @@ public class AutoscalerRuleEvaluator {
         ksession.setGlobal("log", RuleLog.getInstance());
         return ksession;
     }
-
-    private static KnowledgeBase readKnowledgeBase(String drlFileName) {
-        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-        String configDir = CarbonUtils.getCarbonConfigDirPath();
-        String droolsDir = configDir + File.separator + StratosConstants.DROOLS_DIR_NAME;
-        Resource resource = ResourceFactory.newFileResource(droolsDir + File.separator + drlFileName);
-        kbuilder.add(resource, ResourceType.DRL);
-        KnowledgeBuilderErrors errors = kbuilder.getErrors();
-        if (errors.size() > 0) {
-            for (KnowledgeBuilderError error : errors) {
-                log.error(error.getMessage());
-            }
-            throw new IllegalArgumentException("Could not parse knowledge");
-        }
-        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-        kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
-        return kbase;
-    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
index 89633f7..1a8bfc9 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
@@ -43,9 +43,8 @@ import org.apache.stratos.common.constants.StratosConstants;
  */
 public class RuleTasksDelegator {
 
-    private static boolean arspiIsSet = false;
-
     private static final Log log = LogFactory.getLog(RuleTasksDelegator.class);
+    private static boolean arspiIsSet = false;
 
     public double getPredictedValueForNextMinute(float average, float gradient, float secondDerivative, int timeInterval) {
         double predictedValue;

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/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 52c8dbe..f75fbc5 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
@@ -491,7 +491,7 @@ public class AutoscalerServiceImpl implements AutoscalerService {
                     return false;
                 } else {
                     log.info(String.format("Previous graceful un-deployment is in progress for " +
-                            "[application-id] %s , thus  terminating instances directly",
+                                    "[application-id] %s , thus  terminating instances directly",
                             applicationId));
                     appMonitor.setForce(true);
                     terminateAllMembersAndClustersForcefully(applicationId);
@@ -926,15 +926,15 @@ public class AutoscalerServiceImpl implements AutoscalerService {
             //Stopping the cluster monitor thread
             ClusterMonitor clusterMonitor = AutoscalerContext.getInstance().
                     getClusterMonitor(clusterId);
-            if(clusterMonitor != null) {
+            if (clusterMonitor != null) {
                 clusterMonitor.destroy();
             } else {
-                if(log.isDebugEnabled()) {
+                if (log.isDebugEnabled()) {
                     log.debug(String.format("Cluster monitor cannot be found for [application] %s " +
                             "[cluster] %s", applicationId, clusterId));
                 }
             }
-            if(cluster != null) {
+            if (cluster != null) {
                 Collection<ClusterInstance> allClusterInstances = cluster.getClusterInstances();
                 for (ClusterInstance clusterInstance : allClusterInstances) {
                     ClusterStatusEventPublisher.sendClusterTerminatedEvent(applicationId, cluster.getServiceName(),
@@ -1132,7 +1132,7 @@ public class AutoscalerServiceImpl implements AutoscalerService {
                 for (NetworkPartitionRef networkPartition : deploymentPolicy.getNetworkPartitionRefs()) {
                     NetworkPartitionContext clusterLevelNetworkPartitionContext
                             = clusterMonitor.getClusterContext().getNetworkPartitionCtxt(networkPartition.getId());
-                    if(clusterLevelNetworkPartitionContext != null) {
+                    if (clusterLevelNetworkPartitionContext != null) {
                         try {
                             addNewPartitionsToClusterMonitor(clusterLevelNetworkPartitionContext, networkPartition,
                                     deploymentPolicy.getDeploymentPolicyID(), clusterMonitor.getClusterContext().getServiceId());

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
index b76322c..24a4e07 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
@@ -80,10 +80,6 @@ public class AutoscalerUtil {
         return Holder.INSTANCE;
     }
 
-    private static class Holder {
-        private static final AutoscalerUtil INSTANCE = new AutoscalerUtil();
-    }
-
     public static Applications getApplications() {
 
         Applications applications;
@@ -266,80 +262,6 @@ public class AutoscalerUtil {
         return toCommonProperties(properties);
     }
 
-    public synchronized void startApplicationMonitor(String applicationId) {
-
-        AutoscalerContext autoscalerContext = AutoscalerContext.getInstance();
-        if (autoscalerContext.getAppMonitor(applicationId) == null) {
-            autoscalerContext.addApplicationPendingMonitor(applicationId);
-            ServiceReferenceHolder.getInstance().getExecutorService().submit(new ApplicationMonitorAdder(applicationId));
-
-            log.info(String.format("Monitor scheduled: [application] %s ", applicationId));
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Application monitor thread already exists: " +
-                        "[application] %s ", applicationId));
-            }
-        }
-    }
-
-    private class ApplicationMonitorAdder implements Runnable {
-        private String applicationId;
-
-        public ApplicationMonitorAdder(String applicationId) {
-            this.applicationId = applicationId;
-        }
-
-        public void run() {
-            long startTime = System.currentTimeMillis();
-            long endTime = startTime;
-            int retries = 5;
-            boolean success = false;
-            ApplicationMonitor applicationMonitor = null;
-            while (!success && retries != 0) {
-
-                try {
-                    startTime = System.currentTimeMillis();
-                    log.info("Starting monitor: [application] " + applicationId);
-                    try {
-                        applicationMonitor = MonitorFactory.getApplicationMonitor(applicationId);
-                    } catch (PolicyValidationException e) {
-                        String msg = "Monitor creation failed: [application] " + applicationId;
-                        log.warn(msg, e);
-                        retries--;
-                    }
-                    success = true;
-                    endTime = System.currentTimeMillis();
-                } catch (DependencyBuilderException e) {
-                    String msg = "Monitor creation failed: [application] " + applicationId;
-                    log.warn(msg, e);
-                    retries--;
-                } catch (TopologyInConsistentException e) {
-                    String msg = "Monitor creation failed: [application] " + applicationId;
-                    log.warn(msg, e);
-                    retries--;
-                }
-            }
-
-            if (applicationMonitor == null) {
-                String msg = "Monitor creation failed, even after retrying for 5 times: "
-                        + "[application] " + applicationId;
-                log.error(msg);
-                throw new RuntimeException(msg);
-            }
-            AutoscalerContext autoscalerContext = AutoscalerContext.getInstance();
-            autoscalerContext.removeApplicationPendingMonitor(applicationId);
-            autoscalerContext.removeAppMonitor(applicationId);
-            autoscalerContext.addAppMonitor(applicationMonitor);
-
-            long startupTime = ((endTime - startTime) / 1000);
-            if (log.isInfoEnabled()) {
-                log.info(String.format("Monitor started successfully: [application] %s [dependents] %s " +
-                                "[startup-time] %d seconds", applicationMonitor.getId(),
-                        applicationMonitor.getStartupDependencyTree(), startupTime));
-            }
-        }
-    }
-
     public static Monitor.MonitorType findMonitorType(ApplicationChildContext context) {
         if (context instanceof GroupChildContext) {
             return Monitor.MonitorType.Group;
@@ -711,7 +633,6 @@ public class AutoscalerUtil {
         }
     }
 
-
     /**
      * Validates an application policy against the application
      *
@@ -787,6 +708,150 @@ public class AutoscalerUtil {
         return false;
     }
 
+    public static void validateStartupOrders(String groupName, String[] startupOrders) throws InvalidServiceGroupException {
+
+        if (startupOrders == null || startupOrders.length == 0) {
+            if (log.isDebugEnabled()) {
+                log.debug("No Startup Order defined for group " + groupName);
+            }
+            return;
+        }
+
+        for (String startupOrder : startupOrders) {
+            // split comma separated startup orders
+            String[] splittedStartupOrders = startupOrder.split(",");
+            for (String splittedStartupOrder : splittedStartupOrders) {
+                if (!splittedStartupOrder.trim().startsWith("cartridge.") && !splittedStartupOrder.trim().startsWith("group.")) {
+                    // invalid startup order; should prefixed by either 'cartridge.' or 'group.'
+                    throw new InvalidServiceGroupException("Invalid cartridge group: startup order [" + startupOrder +
+                            "] for group " + groupName +
+                            ", should prefixed by either 'cartridge.' or 'group.'");
+                }
+            }
+        }
+    }
+
+    public static void validateScalingDependencies(String groupName, String[] scalingDependents) throws InvalidServiceGroupException {
+
+        if (scalingDependents == null || scalingDependents.length == 0) {
+            if (log.isDebugEnabled()) {
+                log.debug("No Scaling Dependents defined for group " + groupName);
+            }
+            return;
+        }
+
+        for (String scalingDependent : scalingDependents) {
+            // split comma separated scaling dependents
+            String[] splittedDependents = scalingDependent.split(",");
+            for (String splittedDependent : splittedDependents) {
+                if (!splittedDependent.trim().startsWith("cartridge.") && !splittedDependent.trim().startsWith("group.")) {
+                    // invalid startup order; should prefixed by either 'cartridge.' or 'group.'
+                    throw new InvalidServiceGroupException("Invalid cartridge group: Scaling Dependency [" +
+                            scalingDependent + "] for group " + groupName +
+                            ", should prefixed by either 'cartridge.' or 'group.'");
+                }
+            }
+        }
+    }
+
+    /**
+     * Validate the Auto Scalar policy removal
+     *
+     * @param autoscalePolicyId Auto Scalar policy id boolean
+     * @return
+     */
+    public static boolean removableAutoScalerPolicy(String autoscalePolicyId) {
+        Collection<ApplicationContext> applicationContexts = AutoscalerContext.getInstance().
+                getApplicationContexts();
+        for (ApplicationContext applicationContext : applicationContexts) {
+            if (applicationContext.getComponents().getCartridgeContexts() != null) {
+                for (CartridgeContext cartridgeContext : applicationContext.getComponents().
+                        getCartridgeContexts()) {
+                    if (autoscalePolicyId.equals(cartridgeContext.getSubscribableInfoContext().
+                            getAutoscalingPolicy())) {
+                        return false;
+                    }
+                }
+            }
+
+            if (applicationContext.getComponents().getGroupContexts() != null) {
+                return findAutoscalingPolicyInGroup(applicationContext.getComponents().getGroupContexts(),
+                        autoscalePolicyId);
+            }
+        }
+        return true;
+    }
+
+    public static boolean findAutoscalingPolicyInGroup(GroupContext[] groupContexts,
+                                                       String autoscalePolicyId) {
+        for (GroupContext groupContext : groupContexts) {
+            if (groupContext.getCartridgeContexts() != null) {
+                for (CartridgeContext cartridgeContext : groupContext.getCartridgeContexts()) {
+                    if (autoscalePolicyId.equals(cartridgeContext.getSubscribableInfoContext().
+                            getAutoscalingPolicy())) {
+                        return false;
+                    }
+                }
+
+            }
+            if (groupContext.getGroupContexts() != null) {
+                return findAutoscalingPolicyInGroup(groupContext.getGroupContexts(),
+                        autoscalePolicyId);
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Validate the deployment policy removal
+     *
+     * @param deploymentPolicyId
+     * @return
+     */
+    public static boolean removableDeploymentPolicy(String deploymentPolicyId) {
+        boolean canRemove = true;
+        Map<String, Application> applications = ApplicationHolder.getApplications().getApplications();
+        for (Application application : applications.values()) {
+            List<String> deploymentPolicyIdsReferredInApplication = AutoscalerUtil.
+                    getDeploymentPolicyIdsReferredInApplication(application.getUniqueIdentifier());
+            for (String deploymentPolicyIdInApp : deploymentPolicyIdsReferredInApplication) {
+                if (deploymentPolicyId.equals(deploymentPolicyIdInApp)) {
+                    canRemove = false;
+                }
+            }
+        }
+        return canRemove;
+    }
+
+    public static void readApplicationContextsFromRegistry() {
+        String[] resourcePaths = RegistryManager.getInstance().getApplicationContextResourcePaths();
+        if ((resourcePaths == null) || (resourcePaths.length == 0)) {
+            return;
+        }
+
+        for (String resourcePath : resourcePaths) {
+            ApplicationContext applicationContext = RegistryManager.getInstance().
+                    getApplicationContextByResourcePath(resourcePath);
+            AutoscalerContext.getInstance().addApplicationContext(applicationContext);
+        }
+    }
+
+    public synchronized void startApplicationMonitor(String applicationId) {
+
+        AutoscalerContext autoscalerContext = AutoscalerContext.getInstance();
+        if (autoscalerContext.getAppMonitor(applicationId) == null) {
+            autoscalerContext.addApplicationPendingMonitor(applicationId);
+            ServiceReferenceHolder.getInstance().getExecutorService().submit(new ApplicationMonitorAdder(applicationId));
+
+            log.info(String.format("Monitor scheduled: [application] %s ", applicationId));
+        } else {
+            if (log.isDebugEnabled()) {
+                log.debug(String.format("Application monitor thread already exists: " +
+                        "[application] %s ", applicationId));
+            }
+        }
+    }
+
     public void updateApplicationsTopology(Application application)
             throws ApplicationDefinitionException {
         Application existingApplication = ApplicationHolder.getApplications().
@@ -889,133 +954,66 @@ public class AutoscalerUtil {
         }
     }
 
-    public static void validateStartupOrders(String groupName, String[] startupOrders) throws InvalidServiceGroupException {
-
-        if (startupOrders == null || startupOrders.length == 0) {
-            if (log.isDebugEnabled()) {
-                log.debug("No Startup Order defined for group " + groupName);
-            }
-            return;
-        }
-
-        for (String startupOrder : startupOrders) {
-            // split comma separated startup orders
-            String[] splittedStartupOrders = startupOrder.split(",");
-            for (String splittedStartupOrder : splittedStartupOrders) {
-                if (!splittedStartupOrder.trim().startsWith("cartridge.") && !splittedStartupOrder.trim().startsWith("group.")) {
-                    // invalid startup order; should prefixed by either 'cartridge.' or 'group.'
-                    throw new InvalidServiceGroupException("Invalid cartridge group: startup order [" + startupOrder +
-                            "] for group " + groupName +
-                            ", should prefixed by either 'cartridge.' or 'group.'");
-                }
-            }
-        }
+    private static class Holder {
+        private static final AutoscalerUtil INSTANCE = new AutoscalerUtil();
     }
 
-    public static void validateScalingDependencies(String groupName, String[] scalingDependents) throws InvalidServiceGroupException {
+    private class ApplicationMonitorAdder implements Runnable {
+        private String applicationId;
 
-        if (scalingDependents == null || scalingDependents.length == 0) {
-            if (log.isDebugEnabled()) {
-                log.debug("No Scaling Dependents defined for group " + groupName);
-            }
-            return;
+        public ApplicationMonitorAdder(String applicationId) {
+            this.applicationId = applicationId;
         }
 
-        for (String scalingDependent : scalingDependents) {
-            // split comma separated scaling dependents
-            String[] splittedDependents = scalingDependent.split(",");
-            for (String splittedDependent : splittedDependents) {
-                if (!splittedDependent.trim().startsWith("cartridge.") && !splittedDependent.trim().startsWith("group.")) {
-                    // invalid startup order; should prefixed by either 'cartridge.' or 'group.'
-                    throw new InvalidServiceGroupException("Invalid cartridge group: Scaling Dependency [" +
-                            scalingDependent + "] for group " + groupName +
-                            ", should prefixed by either 'cartridge.' or 'group.'");
-                }
-            }
-        }
-    }
+        public void run() {
+            long startTime = System.currentTimeMillis();
+            long endTime = startTime;
+            int retries = 5;
+            boolean success = false;
+            ApplicationMonitor applicationMonitor = null;
+            while (!success && retries != 0) {
 
-    /**
-     * Validate the Auto Scalar policy removal
-     *
-     * @param autoscalePolicyId Auto Scalar policy id boolean
-     * @return
-     */
-    public static boolean removableAutoScalerPolicy(String autoscalePolicyId) {
-        Collection<ApplicationContext> applicationContexts = AutoscalerContext.getInstance().
-                getApplicationContexts();
-        for (ApplicationContext applicationContext : applicationContexts) {
-            if(applicationContext.getComponents().getCartridgeContexts() != null) {
-                for(CartridgeContext cartridgeContext : applicationContext.getComponents().
-                        getCartridgeContexts()) {
-                    if(autoscalePolicyId.equals(cartridgeContext.getSubscribableInfoContext().
-                            getAutoscalingPolicy())) {
-                        return false;
+                try {
+                    startTime = System.currentTimeMillis();
+                    log.info("Starting monitor: [application] " + applicationId);
+                    try {
+                        applicationMonitor = MonitorFactory.getApplicationMonitor(applicationId);
+                    } catch (PolicyValidationException e) {
+                        String msg = "Monitor creation failed: [application] " + applicationId;
+                        log.warn(msg, e);
+                        retries--;
                     }
+                    success = true;
+                    endTime = System.currentTimeMillis();
+                } catch (DependencyBuilderException e) {
+                    String msg = "Monitor creation failed: [application] " + applicationId;
+                    log.warn(msg, e);
+                    retries--;
+                } catch (TopologyInConsistentException e) {
+                    String msg = "Monitor creation failed: [application] " + applicationId;
+                    log.warn(msg, e);
+                    retries--;
                 }
             }
 
-            if(applicationContext.getComponents().getGroupContexts() != null) {
-                return findAutoscalingPolicyInGroup(applicationContext.getComponents().getGroupContexts(),
-                        autoscalePolicyId);
-            }
-        }
-        return true;
-    }
-
-    public static boolean findAutoscalingPolicyInGroup(GroupContext[] groupContexts,
-                                                String autoscalePolicyId) {
-        for(GroupContext groupContext : groupContexts) {
-            if(groupContext.getCartridgeContexts() != null) {
-                for(CartridgeContext cartridgeContext : groupContext.getCartridgeContexts()) {
-                    if(autoscalePolicyId.equals(cartridgeContext.getSubscribableInfoContext().
-                            getAutoscalingPolicy())) {
-                        return false;
-                    }
-                }
-
-            }
-            if(groupContext.getGroupContexts() != null) {
-                return findAutoscalingPolicyInGroup(groupContext.getGroupContexts(),
-                        autoscalePolicyId);
+            if (applicationMonitor == null) {
+                String msg = "Monitor creation failed, even after retrying for 5 times: "
+                        + "[application] " + applicationId;
+                log.error(msg);
+                throw new RuntimeException(msg);
             }
-        }
-        return true;
-    }
-
+            AutoscalerContext autoscalerContext = AutoscalerContext.getInstance();
+            autoscalerContext.removeApplicationPendingMonitor(applicationId);
+            autoscalerContext.removeAppMonitor(applicationId);
+            autoscalerContext.addAppMonitor(applicationMonitor);
 
-    /**
-     * Validate the deployment policy removal
-     *
-     * @param deploymentPolicyId
-     * @return
-     */
-    public static boolean removableDeploymentPolicy(String deploymentPolicyId) {
-        boolean canRemove = true;
-        Map<String, Application> applications = ApplicationHolder.getApplications().getApplications();
-        for (Application application : applications.values()) {
-            List<String> deploymentPolicyIdsReferredInApplication = AutoscalerUtil.
-                    getDeploymentPolicyIdsReferredInApplication(application.getUniqueIdentifier());
-            for (String deploymentPolicyIdInApp : deploymentPolicyIdsReferredInApplication) {
-                if (deploymentPolicyId.equals(deploymentPolicyIdInApp)) {
-                    canRemove = false;
-                }
+            long startupTime = ((endTime - startTime) / 1000);
+            if (log.isInfoEnabled()) {
+                log.info(String.format("Monitor started successfully: [application] %s [dependents] %s " +
+                                "[startup-time] %d seconds", applicationMonitor.getId(),
+                        applicationMonitor.getStartupDependencyTree(), startupTime));
             }
         }
-        return canRemove;
-    }
-
-    public static void readApplicationContextsFromRegistry() {
-        String[] resourcePaths = RegistryManager.getInstance().getApplicationContextResourcePaths();
-        if ((resourcePaths == null) || (resourcePaths.length == 0)) {
-            return;
-        }
-
-        for (String resourcePath : resourcePaths) {
-            ApplicationContext applicationContext = RegistryManager.getInstance().
-                    getApplicationContextByResourcePath(resourcePath);
-            AutoscalerContext.getInstance().addApplicationContext( applicationContext);
-        }
     }
 
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/ConfUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/ConfUtil.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/ConfUtil.java
index 28c5f66..969490e 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/ConfUtil.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/ConfUtil.java
@@ -34,12 +34,10 @@ import java.util.HashMap;
 public class ConfUtil {
 
     private static Log log = LogFactory.getLog(ConfUtil.class);
-
-    private XMLConfiguration config;
-
     //To maintain the map of config files
     private static HashMap<String, ConfUtil> instanceMap = new HashMap<String, ConfUtil>();
     private static Object mutex = new Object();
+    private XMLConfiguration config;
 
     private ConfUtil(String configFilePath) {
         try {

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/ServiceReferenceHolder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/ServiceReferenceHolder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/ServiceReferenceHolder.java
index 36b048e..4cc175c 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/ServiceReferenceHolder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/ServiceReferenceHolder.java
@@ -60,38 +60,38 @@ public class ServiceReferenceHolder {
         return instance;
     }
 
-    public void setAxisConfiguration(AxisConfiguration axisConfiguration) {
-        this.axisConfiguration = axisConfiguration;
-    }
-
     public AxisConfiguration getAxisConfiguration() {
         return axisConfiguration;
     }
 
-    public void setDistributedObjectProvider(DistributedObjectProvider distributedObjectProvider) {
-        this.distributedObjectProvider = distributedObjectProvider;
+    public void setAxisConfiguration(AxisConfiguration axisConfiguration) {
+        this.axisConfiguration = axisConfiguration;
     }
 
     public DistributedObjectProvider getDistributedObjectProvider() {
         return distributedObjectProvider;
     }
 
-    public void setHazelcastInstance(HazelcastInstance hazelcastInstance) {
-        this.hazelcastInstance = hazelcastInstance;
+    public void setDistributedObjectProvider(DistributedObjectProvider distributedObjectProvider) {
+        this.distributedObjectProvider = distributedObjectProvider;
     }
 
     public HazelcastInstance getHazelcastInstance() {
         return hazelcastInstance;
     }
 
-    public void setRegistry(UserRegistry governanceSystemRegistry) {
-        registry = governanceSystemRegistry;
+    public void setHazelcastInstance(HazelcastInstance hazelcastInstance) {
+        this.hazelcastInstance = hazelcastInstance;
     }
 
     public Registry getRegistry() {
         return registry;
     }
 
+    public void setRegistry(UserRegistry governanceSystemRegistry) {
+        registry = governanceSystemRegistry;
+    }
+
     public TaskService getTaskService() {
         return taskService;
     }
@@ -116,19 +116,19 @@ public class ServiceReferenceHolder {
         this.groupStatusProcessorChain = groupStatusProcessorChain;
     }
 
-    public void setExecutorService(ExecutorService executorService) {
-        this.executorService = executorService;
-    }
-
     public ExecutorService getExecutorService() {
         return executorService;
     }
 
-    public void setComponentStartUpSynchronizer(ComponentStartUpSynchronizer componentStartUpSynchronizer) {
-        this.componentStartUpSynchronizer = componentStartUpSynchronizer;
+    public void setExecutorService(ExecutorService executorService) {
+        this.executorService = executorService;
     }
 
     public ComponentStartUpSynchronizer getComponentStartUpSynchronizer() {
         return componentStartUpSynchronizer;
     }
+
+    public void setComponentStartUpSynchronizer(ComponentStartUpSynchronizer componentStartUpSynchronizer) {
+        this.componentStartUpSynchronizer = componentStartUpSynchronizer;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/AutoscalerUtilTest.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/AutoscalerUtilTest.java b/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/AutoscalerUtilTest.java
index 2f65281..c676ed1 100644
--- a/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/AutoscalerUtilTest.java
+++ b/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/AutoscalerUtilTest.java
@@ -79,7 +79,7 @@ public class AutoscalerUtilTest {
     @Test
     public void testRemovalOfAutoscalingPolicy() {
         List<CartridgeContext> cartridgeContexts = new ArrayList<CartridgeContext>();
-        for(int i = 0; i < 12; i++) {
+        for (int i = 0; i < 12; i++) {
             CartridgeContext cartridgeContext = new CartridgeContext();
             SubscribableInfoContext subscribableContext = new SubscribableInfoContext();
             subscribableContext.setAlias("cart-" + i);
@@ -89,12 +89,12 @@ public class AutoscalerUtilTest {
             cartridgeContexts.add(cartridgeContext);
         }
         List<GroupContext> groupContextList = new ArrayList<GroupContext>();
-        for(int i = 0; i < 5; i++) {
+        for (int i = 0; i < 5; i++) {
             GroupContext groupContext = new GroupContext();
             groupContext.setAlias("group-" + i);
             CartridgeContext[] cartridgeContexts1 = new CartridgeContext[2];
             cartridgeContexts1[0] = cartridgeContexts.get(i);
-            cartridgeContexts1[1] = cartridgeContexts.get(i+5);
+            cartridgeContexts1[1] = cartridgeContexts.get(i + 5);
 
             groupContext.setCartridgeContexts(cartridgeContexts1);
             groupContextList.add(groupContext);
@@ -123,7 +123,7 @@ public class AutoscalerUtilTest {
         canRemove = AutoscalerUtil.removableAutoScalerPolicy("test");
         assertEquals(canRemove, true);
 
-        for(int i = 0; i < 12; i ++) {
+        for (int i = 0; i < 12; i++) {
             canRemove = AutoscalerUtil.removableAutoScalerPolicy("auto-" + i);
             assertEquals(canRemove, false);
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestMinimumRule.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestMinimumRule.java b/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestMinimumRule.java
index 2928d2d..e140209 100644
--- a/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestMinimumRule.java
+++ b/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestMinimumRule.java
@@ -45,6 +45,10 @@ public class TestMinimumRule {
     private StatefulKnowledgeSession ksession;
     private XMLConfiguration conf;
 
+    public static String get() {
+        return "null";
+    }
+
     @Before
     public void setUp() {
         KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
@@ -95,8 +99,4 @@ public class TestMinimumRule {
         assertEquals(true, TestDelegator.isMinRuleFired());
 
     }
-
-    public static String get() {
-        return "null";
-    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestObsoletedMemberRule.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestObsoletedMemberRule.java b/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestObsoletedMemberRule.java
index 2654529..bd75a63 100644
--- a/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestObsoletedMemberRule.java
+++ b/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestObsoletedMemberRule.java
@@ -46,6 +46,10 @@ public class TestObsoletedMemberRule {
     private StatefulKnowledgeSession ksession;
     private XMLConfiguration conf;
 
+    public static String get() {
+        return "null";
+    }
+
     @Before
     public void setUp() {
         KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
@@ -171,8 +175,4 @@ public class TestObsoletedMemberRule {
 
 
     }
-
-    public static String get() {
-        return "null";
-    }
 }


[2/2] stratos git commit: Fixing formatting issues

Posted by la...@apache.org.
Fixing formatting issues


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/a2749a9e
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/a2749a9e
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/a2749a9e

Branch: refs/heads/master
Commit: a2749a9ecb8206ee21ce616287c91ef7548df3e7
Parents: 4b5a381
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Fri Aug 7 16:13:15 2015 -0500
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Wed Aug 12 09:17:56 2015 -0500

----------------------------------------------------------------------
 .../applications/ApplicationUtils.java          |  11 +-
 .../dependency/DependencyBuilder.java           |  44 +--
 .../applications/dependency/DependencyTree.java |  13 +-
 .../context/ApplicationChildContext.java        |   7 +-
 .../parser/DefaultApplicationParser.java        |  58 ++-
 .../applications/parser/ParserUtils.java        |  18 +-
 .../applications/payload/BasicPayloadData.java  |  26 +-
 .../applications/payload/PayloadFactory.java    |   2 +-
 .../pojo/ApplicationClusterContext.java         |  17 +-
 .../applications/pojo/ApplicationContext.java   |   4 +-
 .../applications/pojo/ComponentContext.java     |   8 +-
 .../pojo/SubscribableInfoContext.java           |  16 +-
 .../client/AutoscalerCloudControllerClient.java |  25 +-
 .../autoscaler/context/AutoscalerContext.java   |   6 +-
 .../application/ParentInstanceContext.java      |   4 +-
 .../context/cluster/AbstractClusterContext.java |   2 +-
 .../context/cluster/ClusterInstanceContext.java |   8 +-
 .../context/member/MemberStatsContext.java      |  48 +--
 .../partition/ClusterLevelPartitionContext.java |  76 ++--
 .../network/NetworkPartitionContext.java        |  28 +-
 .../InstanceNotificationPublisher.java          |  16 +-
 .../AutoscalerTopologyEventReceiver.java        |   2 +-
 .../stratos/autoscaler/monitor/Monitor.java     |  25 +-
 .../autoscaler/monitor/MonitorFactory.java      |  10 +-
 .../monitor/cluster/ClusterMonitor.java         |  50 ++-
 .../monitor/component/ApplicationMonitor.java   |  14 +-
 .../monitor/component/GroupMonitor.java         |  24 +-
 .../component/ParentComponentMonitor.java       |  40 +-
 .../autoscaler/pojo/policy/PolicyManager.java   |  27 +-
 .../rule/AutoscalerRuleEvaluator.java           |  39 +-
 .../autoscaler/rule/RuleTasksDelegator.java     |   3 +-
 .../services/impl/AutoscalerServiceImpl.java    |  10 +-
 .../stratos/autoscaler/util/AutoscalerUtil.java | 382 +++++++++----------
 .../stratos/autoscaler/util/ConfUtil.java       |   4 +-
 .../autoscaler/util/ServiceReferenceHolder.java |  32 +-
 .../stratos/autoscaler/AutoscalerUtilTest.java  |   8 +-
 .../stratos/autoscaler/TestMinimumRule.java     |   8 +-
 .../autoscaler/TestObsoletedMemberRule.java     |   8 +-
 38 files changed, 549 insertions(+), 574 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationUtils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationUtils.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationUtils.java
index 874666e..c8de90f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationUtils.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationUtils.java
@@ -37,11 +37,10 @@ import java.util.Set;
 import java.util.regex.Pattern;
 
 public class ApplicationUtils {
-    private static final Log log = LogFactory.getLog(ApplicationUtils.class);
-
     public static final String TOKEN_PAYLOAD_PARAM_NAME = "TOKEN";
     public static final String DEPLOYMENT = "DEPLOYMENT";
     public static final String PAYLOAD_PARAMETER = "payload_parameter.";
+    private static final Log log = LogFactory.getLog(ApplicationUtils.class);
     public static Pattern ALIAS_PATTERN = Pattern.compile("([a-z0-9]+([-][a-z0-9])*)+");
 
     public static boolean isAliasValid(String alias) {
@@ -139,12 +138,12 @@ public class ApplicationUtils {
     public static PayloadData createPayload(String appId, String groupName, Cartridge cartridge, String subscriptionKey, int tenantId, String clusterId,
                                             String hostName, String repoUrl, String alias, Map<String, String> customPayloadEntries, String[] dependencyAliases,
                                             org.apache.stratos.common.Properties properties, String oauthToken, String[] dependencyClusterIDs,
-                                            String[] exportMetadata, String[] importMetadata,String lvsVirtualIP)
+                                            String[] exportMetadata, String[] importMetadata, String lvsVirtualIP)
             throws ApplicationDefinitionException {
 
         //Create the payload
         BasicPayloadData basicPayloadData = createBasicPayload(appId, groupName, cartridge, subscriptionKey,
-                clusterId, hostName, repoUrl, alias, tenantId, dependencyAliases, dependencyClusterIDs, exportMetadata, importMetadata,lvsVirtualIP);
+                clusterId, hostName, repoUrl, alias, tenantId, dependencyAliases, dependencyClusterIDs, exportMetadata, importMetadata, lvsVirtualIP);
         //Populate the basic payload details
         basicPayloadData.populatePayload();
 
@@ -212,7 +211,7 @@ public class ApplicationUtils {
                                                        String subscriptionKey, String clusterId,
                                                        String hostName, String repoUrl, String alias,
                                                        int tenantId, String[] dependencyAliases, String[] dependencyCLusterIDs,
-                                                       String[] exportMetadata, String[] importMetadata,String lvsVirtualIP) {
+                                                       String[] exportMetadata, String[] importMetadata, String lvsVirtualIP) {
 
         BasicPayloadData basicPayloadData = new BasicPayloadData();
         basicPayloadData.setAppId(appId);
@@ -224,7 +223,7 @@ public class ApplicationUtils {
         basicPayloadData.setPortMappings(createPortMappingPayloadString(cartridge));
         basicPayloadData.setServiceName(cartridge.getType());
         basicPayloadData.setProvider(cartridge.getProvider());
-	    basicPayloadData.setLvsVirtualIP(lvsVirtualIP);
+        basicPayloadData.setLvsVirtualIP(lvsVirtualIP);
 
         if (repoUrl != null) {
             basicPayloadData.setGitRepositoryUrl(repoUrl);

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyBuilder.java
index 7d3b59e..fe5ae12 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyBuilder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyBuilder.java
@@ -39,15 +39,31 @@ public class DependencyBuilder {
 
     }
 
-    private static class Holder {
-        private static final DependencyBuilder INSTANCE = new DependencyBuilder();
-    }
-
     public static DependencyBuilder getInstance() {
         return Holder.INSTANCE;
     }
 
     /**
+     * Utility method to get the group alias from the startup order Eg: group.mygroup
+     *
+     * @param startupOrder startup order
+     * @return group alias
+     */
+    public static String getGroupFromStartupOrder(String startupOrder) {
+        return startupOrder.substring(AutoscalerConstants.GROUP.length() + 1);
+    }
+
+    /**
+     * Utility method to get the cluster alias from startup order Eg: cartridge.myphp
+     *
+     * @param startupOrder startup order
+     * @return cluster alias
+     */
+    public static String getClusterFromStartupOrder(String startupOrder) {
+        return startupOrder.substring(AutoscalerConstants.CARTRIDGE.length() + 1);
+    }
+
+    /**
      * This will build the dependency tree based on the given dependencies
      *
      * @param component it will give the necessary information to build the tree
@@ -236,23 +252,7 @@ public class DependencyBuilder {
         return scalingDependentLists;
     }
 
-    /**
-     * Utility method to get the group alias from the startup order Eg: group.mygroup
-     *
-     * @param startupOrder startup order
-     * @return group alias
-     */
-    public static String getGroupFromStartupOrder(String startupOrder) {
-        return startupOrder.substring(AutoscalerConstants.GROUP.length() + 1);
-    }
-
-    /**
-     * Utility method to get the cluster alias from startup order Eg: cartridge.myphp
-     *
-     * @param startupOrder startup order
-     * @return cluster alias
-     */
-    public static String getClusterFromStartupOrder(String startupOrder) {
-        return startupOrder.substring(AutoscalerConstants.CARTRIDGE.length() + 1);
+    private static class Holder {
+        private static final DependencyBuilder INSTANCE = new DependencyBuilder();
     }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyTree.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyTree.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyTree.java
index 04af9b1..00e3fd5 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyTree.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyTree.java
@@ -230,10 +230,6 @@ public class DependencyTree {
                 allChildrenOfAppContext);
     }
 
-    public void setTerminationBehavior(TerminationBehavior terminationBehavior) {
-        this.terminationBehavior = terminationBehavior;
-    }
-
     public boolean isTerminateDependent() {
         return this.getTerminationBehavior() == TerminationBehavior.TERMINATE_DEPENDENT;
     }
@@ -242,13 +238,12 @@ public class DependencyTree {
         return this.getTerminationBehavior() == TerminationBehavior.TERMINATE_ALL;
     }
 
-
     public TerminationBehavior getTerminationBehavior() {
         return terminationBehavior;
     }
 
-    public enum TerminationBehavior {
-        TERMINATE_ALL, TERMINATE_NONE, TERMINATE_DEPENDENT
+    public void setTerminationBehavior(TerminationBehavior terminationBehavior) {
+        this.terminationBehavior = terminationBehavior;
     }
 
     public String getId() {
@@ -281,4 +276,8 @@ public class DependencyTree {
             }
         }
     }
+
+    public enum TerminationBehavior {
+        TERMINATE_ALL, TERMINATE_NONE, TERMINATE_DEPENDENT
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/context/ApplicationChildContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/context/ApplicationChildContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/context/ApplicationChildContext.java
index 1e4f3fd..56e2840 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/context/ApplicationChildContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/context/ApplicationChildContext.java
@@ -29,17 +29,16 @@ import java.util.Stack;
  */
 public abstract class ApplicationChildContext {
 
-    private String id;
     protected boolean started;
+    protected boolean hasStartupDependents;
+    protected boolean isGroupScalingEnabled;
+    private String id;
     private boolean terminated;
     private ClusterStatus status;
     private Stack<ClusterStatus> statusLifeCycle;
     private List<ApplicationChildContext> applicationChildContextList;
     private ApplicationChildContext parent;
 
-    protected boolean hasStartupDependents;
-    protected boolean isGroupScalingEnabled;
-
     public ApplicationChildContext(String id, boolean killDependent) {
         applicationChildContextList = new ArrayList<ApplicationChildContext>();
         statusLifeCycle = new Stack<ClusterStatus>();

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
index 7ac88eb..d9378ab 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
@@ -57,10 +57,10 @@ import java.util.*;
  */
 public class DefaultApplicationParser implements ApplicationParser {
 
-    private static final String METADATA_APPENDER = "-";
     public static final String ALIAS = "alias";
     public static final String CARTRIDGE_TYPE = "type";
     public static final String LOAD_BALANCER = "lb";
+    private static final String METADATA_APPENDER = "-";
     private static Log log = LogFactory.getLog(DefaultApplicationParser.class);
 
     private List<ApplicationClusterContext> applicationClusterContexts;
@@ -73,6 +73,29 @@ public class DefaultApplicationParser implements ApplicationParser {
 
     }
 
+    /**
+     * Validates terminationBehavior. The terminationBehavior should be one of the following:
+     * 1. terminate-none
+     * 2. terminate-dependents
+     * 3. terminate-all
+     *
+     * @throws ApplicationDefinitionException if terminationBehavior is different to what is
+     *                                        listed above
+     */
+    private static void validateTerminationBehavior(String terminationBehavior) throws ApplicationDefinitionException {
+
+        if (!(terminationBehavior == null ||
+                AutoscalerConstants.TERMINATE_NONE.equals(terminationBehavior) ||
+                AutoscalerConstants.TERMINATE_DEPENDENTS.equals(terminationBehavior) ||
+                AutoscalerConstants.TERMINATE_ALL.equals(terminationBehavior))) {
+            throw new ApplicationDefinitionException("Invalid termination behaviour found: [ " +
+                    terminationBehavior + " ], should be one of '" +
+                    AutoscalerConstants.TERMINATE_NONE + "', '" +
+                    AutoscalerConstants.TERMINATE_DEPENDENTS + "', '" +
+                    AutoscalerConstants.TERMINATE_ALL + "'");
+        }
+    }
+
     @Override
     public Application parse(ApplicationContext applicationContext)
             throws ApplicationDefinitionException, CartridgeGroupNotFoundException,
@@ -153,7 +176,7 @@ public class DefaultApplicationParser implements ApplicationParser {
 
         if (!ApplicationUtils.isAliasValid(alias)) {
             handleError(String.format("Alias is not valid: [application-id] %s " +
-                    "[cartridge-type] %s [alias] %s [valid-pattern] %s", applicationId, cartridgeType, alias,
+                            "[cartridge-type] %s [alias] %s [valid-pattern] %s", applicationId, cartridgeType, alias,
                     ApplicationUtils.ALIAS_PATTERN.pattern()));
         }
 
@@ -235,7 +258,6 @@ public class DefaultApplicationParser implements ApplicationParser {
         return subscribableInfoContextMap;
     }
 
-
     /**
      * Builds the Application structure
      *
@@ -334,7 +356,6 @@ public class DefaultApplicationParser implements ApplicationParser {
         return application;
     }
 
-
     /**
      * Parse Subscription Information
      *
@@ -455,7 +476,7 @@ public class DefaultApplicationParser implements ApplicationParser {
                     subscribableInfoContext.getDeploymentPolicy(), isLB,
                     tenantRange, subscribableInfoContext.getDependencyAliases(),
                     subscribableInfoContext.getProperties(), arrDependencyClusterIDs, arrExportMetadata,
-                    arrImportMetadata,subscribableInfoContext.getLvsVirtualIP());
+                    arrImportMetadata, subscribableInfoContext.getLvsVirtualIP());
 
             appClusterCtxt.setAutoscalePolicyName(subscribableInfoContext.getAutoscalingPolicy());
             appClusterCtxt.setProperties(subscribableInfoContext.getProperties());
@@ -529,29 +550,6 @@ public class DefaultApplicationParser implements ApplicationParser {
     }
 
     /**
-     * Validates terminationBehavior. The terminationBehavior should be one of the following:
-     * 1. terminate-none
-     * 2. terminate-dependents
-     * 3. terminate-all
-     *
-     * @throws ApplicationDefinitionException if terminationBehavior is different to what is
-     *                                        listed above
-     */
-    private static void validateTerminationBehavior(String terminationBehavior) throws ApplicationDefinitionException {
-
-        if (!(terminationBehavior == null ||
-                AutoscalerConstants.TERMINATE_NONE.equals(terminationBehavior) ||
-                AutoscalerConstants.TERMINATE_DEPENDENTS.equals(terminationBehavior) ||
-                AutoscalerConstants.TERMINATE_ALL.equals(terminationBehavior))) {
-            throw new ApplicationDefinitionException("Invalid termination behaviour found: [ " +
-                    terminationBehavior + " ], should be one of '" +
-                    AutoscalerConstants.TERMINATE_NONE + "', '" +
-                    AutoscalerConstants.TERMINATE_DEPENDENTS + "', '" +
-                    AutoscalerConstants.TERMINATE_ALL + "'");
-        }
-    }
-
-    /**
      * Parse Group information
      *
      * @param appId                   Application id
@@ -942,12 +940,12 @@ public class DefaultApplicationParser implements ApplicationParser {
                                                                       String alias, String clusterId, String hostname,
                                                                       String deploymentPolicy, boolean isLB, String tenantRange,
                                                                       String[] dependencyAliases, Properties properties, String[] dependencyClustorIDs,
-                                                                      String[] exportMetadata, String[] importMetadata,String lvsVirtualIP)
+                                                                      String[] exportMetadata, String[] importMetadata, String lvsVirtualIP)
             throws ApplicationDefinitionException {
 
         // Create text payload
         PayloadData payloadData = ApplicationUtils.createPayload(appId, groupName, cartridge, subscriptionKey, tenantId, clusterId,
-                hostname, repoUrl, alias, null, dependencyAliases, properties, oauthToken, dependencyClustorIDs, exportMetadata, importMetadata,lvsVirtualIP);
+                hostname, repoUrl, alias, null, dependencyAliases, properties, oauthToken, dependencyClustorIDs, exportMetadata, importMetadata, lvsVirtualIP);
 
         String textPayload = payloadData.toString();
         if (log.isDebugEnabled()) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/ParserUtils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/ParserUtils.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/ParserUtils.java
index 904ab53..aa42b7f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/ParserUtils.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/ParserUtils.java
@@ -72,13 +72,13 @@ public class ParserUtils {
         for (String commaSeparatedStartupOrder : startupOrderArr) {
             // convertStartupOrder all Startup Orders to aliases-based
             List<String> components = Arrays.asList(commaSeparatedStartupOrder.split(","));
-            for(String component : components) {
+            for (String component : components) {
                 boolean aliasFound = false;
-                if(component.startsWith(AutoscalerConstants.GROUP)) {
+                if (component.startsWith(AutoscalerConstants.GROUP)) {
                     String groupAlias = component.substring(AutoscalerConstants.GROUP.length() + 1);
-                    if(groupContext.getGroupContexts() != null) {
-                        for(GroupContext context : groupContext.getGroupContexts()) {
-                            if(context.getAlias().equals(groupAlias)) {
+                    if (groupContext.getGroupContexts() != null) {
+                        for (GroupContext context : groupContext.getGroupContexts()) {
+                            if (context.getAlias().equals(groupAlias)) {
                                 aliasFound = true;
                             }
                         }
@@ -87,15 +87,15 @@ public class ParserUtils {
                 } else {
                     String cartridgeAlias = component.substring(
                             AutoscalerConstants.CARTRIDGE.length() + 1);
-                    if(groupContext.getCartridgeContexts() != null) {
-                        for(CartridgeContext context : groupContext.getCartridgeContexts()) {
-                            if(context.getSubscribableInfoContext().getAlias().equals(cartridgeAlias)) {
+                    if (groupContext.getCartridgeContexts() != null) {
+                        for (CartridgeContext context : groupContext.getCartridgeContexts()) {
+                            if (context.getSubscribableInfoContext().getAlias().equals(cartridgeAlias)) {
                                 aliasFound = true;
                             }
                         }
                     }
                 }
-                if(!aliasFound) {
+                if (!aliasFound) {
                     String msg = "The startup-order defined in the [group] " + groupContext.getName()
                             + " is not correct. [startup-order-alias] " + component +
                             " is not there in the application.";

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/BasicPayloadData.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/BasicPayloadData.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/BasicPayloadData.java
index ebe17aa..86fbac7 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/BasicPayloadData.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/BasicPayloadData.java
@@ -32,7 +32,7 @@ import java.io.Serializable;
 public class BasicPayloadData implements Serializable {
 
     private static Log log = LogFactory.getLog(BasicPayloadData.class);
-
+    protected StringBuilder payloadBuilder;
     private String appId;
     private String groupName;
     private String serviceName;
@@ -56,9 +56,7 @@ public class BasicPayloadData implements Serializable {
     private String[] dependencyClusterIDs;
     private String[] exportMetadataKeys;
     private String[] importMetadataKeys;
-	private String lvsVirtualIP;
-
-    protected StringBuilder payloadBuilder;
+    private String lvsVirtualIP;
 
     public BasicPayloadData() {
 
@@ -129,10 +127,10 @@ public class BasicPayloadData implements Serializable {
         if (getExportMetadataKeys() != null) {
             payloadBuilder.append("IMPORT_METADATA_KEYS=" + getImportMetadataKeys());
         }
-	    payloadBuilder.append(",");
-	    if(getLvsVirtualIP()!=null && !getLvsVirtualIP().equals("")){
-		    payloadBuilder.append("LVS_VIRTUAL_IP=" +getLvsVirtualIP());
-	    }
+        payloadBuilder.append(",");
+        if (getLvsVirtualIP() != null && !getLvsVirtualIP().equals("")) {
+            payloadBuilder.append("LVS_VIRTUAL_IP=" + getLvsVirtualIP());
+        }
     }
 
     public String getServiceName() {
@@ -394,11 +392,11 @@ public class BasicPayloadData implements Serializable {
         this.importMetadataKeys = importMetadataKeys;
     }
 
-	public String getLvsVirtualIP() {
-		return lvsVirtualIP;
-	}
+    public String getLvsVirtualIP() {
+        return lvsVirtualIP;
+    }
 
-	public void setLvsVirtualIP(String lvsVirtualIP) {
-		this.lvsVirtualIP = lvsVirtualIP;
-	}
+    public void setLvsVirtualIP(String lvsVirtualIP) {
+        this.lvsVirtualIP = lvsVirtualIP;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/PayloadFactory.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/PayloadFactory.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/PayloadFactory.java
index e022f7b..f4ad48b 100755
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/PayloadFactory.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/PayloadFactory.java
@@ -26,8 +26,8 @@ import org.apache.stratos.autoscaler.exception.application.ApplicationDefinition
 
 public class PayloadFactory {
 
-    private static final String LB_IDENTIFIER = "lb";
     public static final String DATA_IDENTIFIER = "data";
+    private static final String LB_IDENTIFIER = "lb";
     private static Log log = LogFactory.getLog(PayloadFactory.class);
 
     /**

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationClusterContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationClusterContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationClusterContext.java
index 721a948..cd48cd4 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationClusterContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationClusterContext.java
@@ -45,15 +45,6 @@ public class ApplicationClusterContext implements Serializable {
     private Properties properties;
 
     private String[] dependencyClusterIds;
-
-    public PersistenceContext getPersistenceContext() {
-        return persistenceContext;
-    }
-
-    public void setPersistenceContext(PersistenceContext persistenceContext) {
-        this.persistenceContext = persistenceContext;
-    }
-
     private PersistenceContext persistenceContext;
 
     public ApplicationClusterContext(String cartridgeType, String clusterId, String hostName,
@@ -69,6 +60,14 @@ public class ApplicationClusterContext implements Serializable {
         this.dependencyClusterIds = dependencyClusterIds;
     }
 
+    public PersistenceContext getPersistenceContext() {
+        return persistenceContext;
+    }
+
+    public void setPersistenceContext(PersistenceContext persistenceContext) {
+        this.persistenceContext = persistenceContext;
+    }
+
     public String getClusterId() {
         return clusterId;
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java
index ec79fcf..5c2b1f2 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java
@@ -25,12 +25,10 @@ import java.io.Serializable;
 
 public class ApplicationContext implements Serializable {
 
-    private static final long serialVersionUID = 6704036501869668646L;
-
     public static final String STATUS_CREATED = "Created";
     public static final String STATUS_DEPLOYED = "Deployed";
     public static final String STATUS_UNDEPLOYING = "Undeploying";
-
+    private static final long serialVersionUID = 6704036501869668646L;
     private String applicationId;
     private String alias;
     private boolean multiTenant;

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ComponentContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ComponentContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ComponentContext.java
index 98a0d5d..d3fc2e6 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ComponentContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ComponentContext.java
@@ -54,11 +54,11 @@ public class ComponentContext implements Serializable {
         this.dependencyContext = dependencyContext;
     }
 
-    public void setApplicationClusterContexts(ApplicationClusterContext[] applicationClusterContexts) {
-        this.applicationClusterContexts = applicationClusterContexts;
-    }
-
     public ApplicationClusterContext[] getApplicationClusterContexts() {
         return applicationClusterContexts;
     }
+
+    public void setApplicationClusterContexts(ApplicationClusterContext[] applicationClusterContexts) {
+        this.applicationClusterContexts = applicationClusterContexts;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/SubscribableInfoContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/SubscribableInfoContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/SubscribableInfoContext.java
index 4ecb4fa..c4b57f0 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/SubscribableInfoContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/SubscribableInfoContext.java
@@ -36,8 +36,8 @@ public class SubscribableInfoContext implements Serializable {
     private ArtifactRepositoryContext artifactRepositoryContext;
     private Properties properties;
     private PersistenceContext persistenceContext;
-	//This is the virtual IP that we need to pass for use LVS as Load Balancer
-	private String lvsVirtualIP;
+    //This is the virtual IP that we need to pass for use LVS as Load Balancer
+    private String lvsVirtualIP;
 
     public String getAlias() {
         return alias;
@@ -111,11 +111,11 @@ public class SubscribableInfoContext implements Serializable {
         this.persistenceContext = persistenceContext;
     }
 
-	public String getLvsVirtualIP() {
-		return lvsVirtualIP;
-	}
+    public String getLvsVirtualIP() {
+        return lvsVirtualIP;
+    }
 
-	public void setLvsVirtualIP(String lvsVirtualIP) {
-		this.lvsVirtualIP = lvsVirtualIP;
-	}
+    public void setLvsVirtualIP(String lvsVirtualIP) {
+        this.lvsVirtualIP = lvsVirtualIP;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java
index 9504d53..0124206 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java
@@ -52,18 +52,6 @@ public class AutoscalerCloudControllerClient {
 
     private static CloudControllerServiceStub stub;
 
-    /* An instance of a CloudControllerClient is created when the class is loaded. 
-     * Since the class is loaded only once, it is guaranteed that an object of 
-     * CloudControllerClient is created only once. Hence it is singleton.
-     */
-    private static class InstanceHolder {
-        private static final AutoscalerCloudControllerClient INSTANCE = new AutoscalerCloudControllerClient();
-    }
-
-    public static AutoscalerCloudControllerClient getInstance() {
-        return InstanceHolder.INSTANCE;
-    }
-
     private AutoscalerCloudControllerClient() {
         try {
             XMLConfiguration conf = ConfUtil.getInstance(null).getConfiguration();
@@ -81,6 +69,10 @@ public class AutoscalerCloudControllerClient {
         }
     }
 
+    public static AutoscalerCloudControllerClient getInstance() {
+        return InstanceHolder.INSTANCE;
+    }
+
     public synchronized MemberContext startInstance(PartitionRef partition,
                                                     String clusterId, String clusterInstanceId,
                                                     String networkPartitionId,
@@ -182,7 +174,6 @@ public class AutoscalerCloudControllerClient {
         }
     }
 
-
     private Volume[] convertVolumesToStubVolumes(VolumeContext[] volumeContexts) {
 
         ArrayList<Volume> volumes = new ArrayList<Volume>();
@@ -233,4 +224,12 @@ public class AutoscalerCloudControllerClient {
             log.debug(String.format("Service call terminateInstances() returned in %dms", (endTime - startTime)));
         }
     }
+
+    /* An instance of a CloudControllerClient is created when the class is loaded.
+     * Since the class is loaded only once, it is guaranteed that an object of
+     * CloudControllerClient is created only once. Hence it is singleton.
+     */
+    private static class InstanceHolder {
+        private static final AutoscalerCloudControllerClient INSTANCE = new AutoscalerCloudControllerClient();
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
index 3a988e6..0af9b56 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
@@ -49,12 +49,10 @@ public class AutoscalerContext {
     private static final String AS_APPLICATION_ID_TO_APPLICATION_MONITOR_MAP = "AS_APPLICATION_ID_TO_APPLICATION_MONITOR_MAP";
     private static final String AS_PENDING_APPLICATION_MONITOR_LIST = "AS_PENDING_APPLICATION_MONITOR_LIST";
     private static final String AS_APPLICATIOIN_ID_TO_NETWORK_PARTITION_ALGO_CTX_MAP = "AS_APPLICATIOIN_ID_TO_NETWORK_PARTITION_ALGO_CTX_MAP";
-    private boolean clustered;
-    private boolean coordinator;
-
     private static volatile AutoscalerContext instance;
     private final transient DistributedObjectProvider distributedObjectProvider;
-
+    private boolean clustered;
+    private boolean coordinator;
     // Map<ApplicationId, ApplicationContext>
     private Map<String, ApplicationContext> applicationContextMap;
     // Map<ClusterId, AbstractClusterMonitor>

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/application/ParentInstanceContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/application/ParentInstanceContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/application/ParentInstanceContext.java
index 5d7b626..53adbcc 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/application/ParentInstanceContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/application/ParentInstanceContext.java
@@ -33,14 +33,14 @@ import java.util.concurrent.ConcurrentHashMap;
  * This will hold the application instance related info.
  */
 public class ParentInstanceContext extends InstanceContext {
+    //partitions of this network partition
+    private final List<ParentLevelPartitionContext> partitionCtxts;
     //key=id of the child, value=ScalingEvent
     private Map<String, ScalingEvent> idToScalingEvent;
     //key=id of the child, value=ScalingUpBeyondMaxEvent
     private Map<String, ScalingUpBeyondMaxEvent> idToScalingOverMaxEvent;
     //key=id of the child, value=ScalingDownBeyondMinEvent
     private Map<String, ScalingDownBeyondMinEvent> idToScalingDownBeyondMinEvent;
-    //partitions of this network partition
-    private final List<ParentLevelPartitionContext> partitionCtxts;
 
     public ParentInstanceContext(String id) {
         super(id);

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/AbstractClusterContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/AbstractClusterContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/AbstractClusterContext.java
index ae12c7e..43608f5 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/AbstractClusterContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/AbstractClusterContext.java
@@ -36,8 +36,8 @@ public class AbstractClusterContext implements Serializable {
 
     // cluster id
     protected String clusterId;
-    private String serviceId;
     protected Map<String, ClusterInstance> clusterInstanceMap;
+    private String serviceId;
 
 
     public AbstractClusterContext(String clusterId, String serviceId) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java
index 3c87e3e..5ee45ae 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java
@@ -507,15 +507,15 @@ public class ClusterInstanceContext extends InstanceContext {
         return minCheckKnowledgeSession;
     }
 
-    public StatefulKnowledgeSession getMaxCheckKnowledgeSession() {
-        return maxCheckKnowledgeSession;
-    }
-
     public void setMinCheckKnowledgeSession(
             StatefulKnowledgeSession minCheckKnowledgeSession) {
         this.minCheckKnowledgeSession = minCheckKnowledgeSession;
     }
 
+    public StatefulKnowledgeSession getMaxCheckKnowledgeSession() {
+        return maxCheckKnowledgeSession;
+    }
+
     public StatefulKnowledgeSession getObsoleteCheckKnowledgeSession() {
         return obsoleteCheckKnowledgeSession;
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/member/MemberStatsContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/member/MemberStatsContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/member/MemberStatsContext.java
index 6981095..4f89f79 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/member/MemberStatsContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/member/MemberStatsContext.java
@@ -54,54 +54,54 @@ public class MemberStatsContext {
         return memoryConsumption;
     }
 
-    public void setAverageLoadAverage(float value) {
-        loadAverage.setAverage(value);
-    }
-
-    public void setAverageMemoryConsumption(float value) {
-        memoryConsumption.setAverage(value);
-    }
-
-    public void setGradientOfLoadAverage(float value) {
-        loadAverage.setGradient(value);
-    }
-
-    public void setGradientOfMemoryConsumption(float value) {
-        memoryConsumption.setGradient(value);
-    }
-
-    public void setSecondDerivativeOfLoadAverage(float value) {
-        loadAverage.setSecondDerivative(value);
-    }
-
-    public void setSecondDerivativeOfMemoryConsumption(float value) {
-        memoryConsumption.setSecondDerivative(value);
-    }
-
     public float getAverageLoadAverage() {
         return loadAverage.getAverage();
     }
 
+    public void setAverageLoadAverage(float value) {
+        loadAverage.setAverage(value);
+    }
+
     public float getAverageMemoryConsumption() {
         return memoryConsumption.getAverage();
     }
 
+    public void setAverageMemoryConsumption(float value) {
+        memoryConsumption.setAverage(value);
+    }
+
     public float getGradientOfLoadAverage() {
         return loadAverage.getGradient();
     }
 
+    public void setGradientOfLoadAverage(float value) {
+        loadAverage.setGradient(value);
+    }
+
     public float getGradientOfMemoryConsumption() {
         return memoryConsumption.getGradient();
     }
 
+    public void setGradientOfMemoryConsumption(float value) {
+        memoryConsumption.setGradient(value);
+    }
+
     public float getSecondDerivativeOfLoadAverage() {
         return loadAverage.getSecondDerivative();
     }
 
+    public void setSecondDerivativeOfLoadAverage(float value) {
+        loadAverage.setSecondDerivative(value);
+    }
+
     public float getSecondDerivativeOfMemoryConsumption() {
         return memoryConsumption.getSecondDerivative();
     }
 
+    public void setSecondDerivativeOfMemoryConsumption(float value) {
+        memoryConsumption.setSecondDerivative(value);
+    }
+
     public String getInstanceId() {
         return instanceId;
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
index 3ef2e45..69dba49 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
@@ -93,6 +93,36 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
         this.pendingMembers = new ArrayList<MemberContext>();
     }
 
+    public ClusterLevelPartitionContext(PartitionRef partition, String networkPartitionId, String deploymentPolicyId) {
+
+        super(partition, networkPartitionId, deploymentPolicyId);
+        this.pendingMembers = new ArrayList<MemberContext>();
+        this.activeMembers = new ArrayList<MemberContext>();
+        this.terminationPendingMembers = new ArrayList<MemberContext>();
+        this.obsoletedMembers = new ConcurrentHashMap<String, MemberContext>();
+        memberStatsContexts = new ConcurrentHashMap<String, MemberStatsContext>();
+
+        terminationPendingStartedTime = new HashMap<String, Long>();
+        // check if a different value has been set for expiryTime
+        XMLConfiguration conf = ConfUtil.getInstance(null).getConfiguration();
+        pendingMemberExpiryTime = conf.getLong(StratosConstants.PENDING_MEMBER_EXPIRY_TIMEOUT, 900000);
+        obsoltedMemberExpiryTime = conf.getLong(StratosConstants.OBSOLETED_MEMBER_EXPIRY_TIMEOUT, 86400000);
+        spinTerminateParallel = conf.getBoolean(StratosConstants.SPIN_TERMINATE_PARALLEL, false);
+        terminationPendingMemberExpiryTime = conf.getLong(StratosConstants.PENDING_TERMINATION_MEMBER_EXPIRY_TIMEOUT, 1800000);
+        if (log.isDebugEnabled()) {
+            log.debug("Member expiry time is set to: " + pendingMemberExpiryTime);
+            log.debug("Member obsoleted expiry time is set to: " + obsoltedMemberExpiryTime);
+            log.debug("Member pending termination expiry time is set to: " + terminationPendingMemberExpiryTime);
+        }
+
+        Thread th = new Thread(new PendingMemberWatcher(this));
+        th.start();
+        Thread th2 = new Thread(new ObsoletedMemberWatcher(this));
+        th2.start();
+        Thread th3 = new Thread(new TerminationPendingMemberWatcher(this));
+        th3.start();
+    }
+
     public void terminateAllRemainingInstances() {
 
         // Forcefully deleting remaining active members
@@ -137,36 +167,6 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
         }
     }
 
-    public ClusterLevelPartitionContext(PartitionRef partition, String networkPartitionId, String deploymentPolicyId) {
-
-        super(partition, networkPartitionId, deploymentPolicyId);
-        this.pendingMembers = new ArrayList<MemberContext>();
-        this.activeMembers = new ArrayList<MemberContext>();
-        this.terminationPendingMembers = new ArrayList<MemberContext>();
-        this.obsoletedMembers = new ConcurrentHashMap<String, MemberContext>();
-        memberStatsContexts = new ConcurrentHashMap<String, MemberStatsContext>();
-
-        terminationPendingStartedTime = new HashMap<String, Long>();
-        // check if a different value has been set for expiryTime
-        XMLConfiguration conf = ConfUtil.getInstance(null).getConfiguration();
-        pendingMemberExpiryTime = conf.getLong(StratosConstants.PENDING_MEMBER_EXPIRY_TIMEOUT, 900000);
-        obsoltedMemberExpiryTime = conf.getLong(StratosConstants.OBSOLETED_MEMBER_EXPIRY_TIMEOUT, 86400000);
-        spinTerminateParallel = conf.getBoolean(StratosConstants.SPIN_TERMINATE_PARALLEL, false);
-        terminationPendingMemberExpiryTime = conf.getLong(StratosConstants.PENDING_TERMINATION_MEMBER_EXPIRY_TIMEOUT, 1800000);
-        if (log.isDebugEnabled()) {
-            log.debug("Member expiry time is set to: " + pendingMemberExpiryTime);
-            log.debug("Member obsoleted expiry time is set to: " + obsoltedMemberExpiryTime);
-            log.debug("Member pending termination expiry time is set to: " + terminationPendingMemberExpiryTime);
-        }
-
-        Thread th = new Thread(new PendingMemberWatcher(this));
-        th.start();
-        Thread th2 = new Thread(new ObsoletedMemberWatcher(this));
-        th2.start();
-        Thread th3 = new Thread(new TerminationPendingMemberWatcher(this));
-        th3.start();
-    }
-
     public long getTerminationPendingStartedTimeOfMember(String memberId) {
         return terminationPendingStartedTime.get(memberId);
     }
@@ -488,7 +488,7 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
 
     public int getNonTerminatedMemberCount() {
         int nonTerminatedMemberCount = 0;
-        if(spinTerminateParallel) {
+        if (spinTerminateParallel) {
             // Returning all the pending members as there shouldn't be a spawning
             // before complete termination.
             // Will be applicable only when having min1*max1 situation
@@ -653,8 +653,8 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
     }
 
     private class PendingMemberWatcher implements Runnable {
-        private ClusterLevelPartitionContext ctxt;
         private final Log log = LogFactory.getLog(PendingMemberWatcher.class);
+        private ClusterLevelPartitionContext ctxt;
 
         public PendingMemberWatcher(ClusterLevelPartitionContext ctxt) {
             this.ctxt = ctxt;
@@ -675,16 +675,16 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
                         String clusterInstanceId = pendingMember.getClusterInstanceId();
                         String clusterId = pendingMember.getClusterId();
                         String serviceName = pendingMember.getCartridgeType();
-                         Service service = TopologyManager.getTopology().
+                        Service service = TopologyManager.getTopology().
                                 getService(serviceName);
 
                         ClusterStatus status = ClusterStatus.Terminated;
-                        if(service != null) {
+                        if (service != null) {
                             Cluster cluster = service.getCluster(clusterId);
-                            if(cluster != null) {
+                            if (cluster != null) {
                                 ClusterInstance instance = cluster.
                                         getInstanceContexts(clusterInstanceId);
-                                if(instance!= null) {
+                                if (instance != null) {
                                     status = instance.getStatus();
                                 }
                             }
@@ -725,8 +725,8 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
     }
 
     private class ObsoletedMemberWatcher implements Runnable {
-        private ClusterLevelPartitionContext ctxt;
         private final Log log = LogFactory.getLog(ObsoletedMemberWatcher.class);
+        private ClusterLevelPartitionContext ctxt;
 
         public ObsoletedMemberWatcher(ClusterLevelPartitionContext ctxt) {
             this.ctxt = ctxt;
@@ -792,8 +792,8 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
      * This thread is responsible for moving member to obsolete list if pending termination timeout happens
      */
     private class TerminationPendingMemberWatcher implements Runnable {
-        private ClusterLevelPartitionContext ctxt;
         private final Log log = LogFactory.getLog(TerminationPendingMemberWatcher.class);
+        private ClusterLevelPartitionContext ctxt;
 
         public TerminationPendingMemberWatcher(ClusterLevelPartitionContext ctxt) {
             this.ctxt = ctxt;

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/NetworkPartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/NetworkPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/NetworkPartitionContext.java
index 678e898..0e79647 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/NetworkPartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/NetworkPartitionContext.java
@@ -121,8 +121,8 @@ public class NetworkPartitionContext {
 
     public List<InstanceContext> getInstanceIdToInstanceContextMap(String parentInstanceId) {
         List<InstanceContext> instanceContexts = new ArrayList<InstanceContext>();
-        for(InstanceContext instanceContext : instanceIdToInstanceContextMap.values()) {
-            if(instanceContext.getParentInstanceId().equals(parentInstanceId)) {
+        for (InstanceContext instanceContext : instanceIdToInstanceContextMap.values()) {
+            if (instanceContext.getParentInstanceId().equals(parentInstanceId)) {
                 instanceContexts.add(instanceContext);
             }
         }
@@ -160,8 +160,8 @@ public class NetworkPartitionContext {
 
     public List<InstanceContext> getActiveInstances(String parentInstanceId) {
         List<InstanceContext> instanceContexts = new ArrayList<InstanceContext>();
-        for(InstanceContext instanceContext : activeInstances) {
-            if(instanceContext.getParentInstanceId().equals(parentInstanceId)) {
+        for (InstanceContext instanceContext : activeInstances) {
+            if (instanceContext.getParentInstanceId().equals(parentInstanceId)) {
                 instanceContexts.add(instanceContext);
             }
         }
@@ -170,8 +170,8 @@ public class NetworkPartitionContext {
 
     public List<InstanceContext> getPendingInstances(String parentInstanceId) {
         List<InstanceContext> instanceContexts = new ArrayList<InstanceContext>();
-        for(InstanceContext instanceContext : pendingInstances) {
-            if(instanceContext.getParentInstanceId().equals(parentInstanceId)) {
+        for (InstanceContext instanceContext : pendingInstances) {
+            if (instanceContext.getParentInstanceId().equals(parentInstanceId)) {
                 instanceContexts.add(instanceContext);
             }
         }
@@ -188,8 +188,8 @@ public class NetworkPartitionContext {
 
     public int getPendingInstancesCount(String parentInstanceId) {
         List<InstanceContext> instanceContexts = new ArrayList<InstanceContext>();
-        for(InstanceContext instanceContext : pendingInstances) {
-            if(instanceContext.getParentInstanceId().equals(parentInstanceId)) {
+        for (InstanceContext instanceContext : pendingInstances) {
+            if (instanceContext.getParentInstanceId().equals(parentInstanceId)) {
                 instanceContexts.add(instanceContext);
             }
         }
@@ -203,8 +203,8 @@ public class NetworkPartitionContext {
 
     public int getActiveInstancesCount(String parentInstanceId) {
         List<InstanceContext> instanceContexts = new ArrayList<InstanceContext>();
-        for(InstanceContext instanceContext : activeInstances) {
-            if(instanceContext.getParentInstanceId().equals(parentInstanceId)) {
+        for (InstanceContext instanceContext : activeInstances) {
+            if (instanceContext.getParentInstanceId().equals(parentInstanceId)) {
                 instanceContexts.add(instanceContext);
             }
         }
@@ -321,14 +321,14 @@ public class NetworkPartitionContext {
     public int getNonTerminatedInstancesCount(String parentInstanceId) {
         List<InstanceContext> instanceContexts = new ArrayList<InstanceContext>();
 
-        for(InstanceContext instanceContext : activeInstances) {
-            if(instanceContext.getParentInstanceId().equals(parentInstanceId)) {
+        for (InstanceContext instanceContext : activeInstances) {
+            if (instanceContext.getParentInstanceId().equals(parentInstanceId)) {
                 instanceContexts.add(instanceContext);
             }
         }
 
-        for(InstanceContext instanceContext : pendingInstances) {
-            if(instanceContext.getParentInstanceId().equals(parentInstanceId)) {
+        for (InstanceContext instanceContext : pendingInstances) {
+            if (instanceContext.getParentInstanceId().equals(parentInstanceId)) {
                 instanceContexts.add(instanceContext);
             }
         }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/InstanceNotificationPublisher.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/InstanceNotificationPublisher.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/InstanceNotificationPublisher.java
index a33329a..52d3af1 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/InstanceNotificationPublisher.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/InstanceNotificationPublisher.java
@@ -31,14 +31,6 @@ import org.apache.stratos.messaging.util.MessagingUtil;
 public class InstanceNotificationPublisher {
     private static final Log log = LogFactory.getLog(InstanceNotificationPublisher.class);
 
-    /* An instance of InstanceNotificationPublisher is created when the class is loaded.
-     * Since the class is loaded only once, it is guaranteed that an object of
-     * InstanceNotificationPublisher is created only once. Hence it is singleton.
-     */
-    private static class InstanceHolder {
-        private static final InstanceNotificationPublisher INSTANCE = new InstanceNotificationPublisher();
-    }
-
     public static InstanceNotificationPublisher getInstance() {
         return InstanceHolder.INSTANCE;
     }
@@ -66,4 +58,12 @@ public class InstanceNotificationPublisher {
         log.info(String.format("Publishing Instance Cleanup Event: [member] %s", memberId));
         publish(new InstanceCleanupMemberEvent(memberId));
     }
+
+    /* An instance of InstanceNotificationPublisher is created when the class is loaded.
+     * Since the class is loaded only once, it is guaranteed that an object of
+     * InstanceNotificationPublisher is created only once. Hence it is singleton.
+     */
+    private static class InstanceHolder {
+        private static final InstanceNotificationPublisher INSTANCE = new InstanceNotificationPublisher();
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
index 119c9c6..3a8c457 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
@@ -93,7 +93,7 @@ public class AutoscalerTopologyEventReceiver {
                                     getApplications().values()) {
                                 ApplicationContext applicationContext =
                                         AutoscalerContext.getInstance().
-                                        getApplicationContext(application.getUniqueIdentifier());
+                                                getApplicationContext(application.getUniqueIdentifier());
                                 if (applicationContext != null && applicationContext.getStatus().
                                         equals(ApplicationContext.STATUS_DEPLOYED)) {
                                     if (AutoscalerUtil.allClustersInitialized(application)) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java
index a32e024..170d99f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java
@@ -27,11 +27,6 @@ import java.util.*;
  * Abstract class for the monitoring functionality in Autoscaler.
  */
 public abstract class Monitor implements EventHandler, Runnable {
-    //Monitor types
-    public enum MonitorType {
-        Application, Group, Cluster
-    }
-
     //Id of the monitor, cluster=clusterId, group=group-alias, application=app-alias
     protected String id;
     //The parent app which this monitor relates to
@@ -42,7 +37,6 @@ public abstract class Monitor implements EventHandler, Runnable {
     protected boolean hasStartupDependents;
     //monitors map, key=InstanceId and value=ClusterInstance/GroupInstance/ApplicationInstance
     protected Map<String, Instance> instanceIdToInstanceMap;
-
     public Monitor() {
         this.instanceIdToInstanceMap = new HashMap<String, Instance>();
     }
@@ -75,13 +69,6 @@ public abstract class Monitor implements EventHandler, Runnable {
     }
 
     /**
-     * Return the type of the monitor.
-     *
-     * @return monitor type
-     */
-    public abstract MonitorType getMonitorType();
-
-    /**
      * Set the id of the monitor
      *
      * @param id id of the monitor
@@ -91,6 +78,13 @@ public abstract class Monitor implements EventHandler, Runnable {
     }
 
     /**
+     * Return the type of the monitor.
+     *
+     * @return monitor type
+     */
+    public abstract MonitorType getMonitorType();
+
+    /**
      * To get the appId of the monitor
      *
      * @return application id of the monitor
@@ -216,4 +210,9 @@ public abstract class Monitor implements EventHandler, Runnable {
     public boolean hasInstance() {
         return !instanceIdToInstanceMap.isEmpty();
     }
+
+    //Monitor types
+    public enum MonitorType {
+        Application, Group, Cluster
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java
index 0b265e6..cf7e06e 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java
@@ -148,10 +148,10 @@ public class MonitorFactory {
         //Find whether any other instances exists in group
         // which has not been added to in-memory model in the restart
         ApplicationMonitor applicationMonitor = AutoscalerContext.getInstance().getAppMonitor(appId);
-        if(applicationMonitor != null && applicationMonitor.isRestarting()) {
+        if (applicationMonitor != null && applicationMonitor.isRestarting()) {
             Collection<Instance> instances = parentMonitor.getInstances();
-            for(Instance instance : instances) {
-                if(!instanceIds.contains(instance.getInstanceId())) {
+            for (Instance instance : instances) {
+                if (!instanceIds.contains(instance.getInstanceId())) {
                     instanceIds.add(instance.getInstanceId());
                 }
             }
@@ -241,8 +241,8 @@ public class MonitorFactory {
             //Find whether any other instances exists in group
             // which has not been added to in-memory model in the restart
             Collection<Instance> instances = parentMonitor.getInstances();
-            for(Instance instance : instances) {
-                if(!parentInstanceIds.contains(instance.getInstanceId())) {
+            for (Instance instance : instances) {
+                if (!parentInstanceIds.contains(instance.getInstanceId())) {
                     parentInstanceIds.add(instance.getInstanceId());
                 }
             }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
index d4a2746..43493bd 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
@@ -84,23 +84,21 @@ import java.util.concurrent.atomic.AtomicBoolean;
  */
 public class ClusterMonitor extends Monitor {
 
+    private static final Log log = LogFactory.getLog(ClusterMonitor.class);
     private final ScheduledExecutorService scheduler;
     private final ExecutorService executorService;
-
     protected boolean hasFaultyMember = false;
     protected ClusterContext clusterContext;
+    protected String serviceType;
+    protected String clusterId;
     // future to cancel it when destroying monitors
     private ScheduledFuture<?> schedulerFuture;
-    protected String serviceType;
     private AtomicBoolean monitoringStarted;
-    protected String clusterId;
     private Cluster cluster;
     private int monitoringIntervalMilliseconds;
     //has scaling dependents
     private boolean hasScalingDependents;
     private boolean groupScalingEnabledSubtree;
-
-    private static final Log log = LogFactory.getLog(ClusterMonitor.class);
     private String deploymentPolicyId;
 
 
@@ -121,6 +119,27 @@ public class ClusterMonitor extends Monitor {
         this.deploymentPolicyId = deploymentPolicyId;
     }
 
+    private static void createClusterInstance(String serviceType,
+                                              String clusterId, String alias, String instanceId,
+                                              String partitionId, String networkPartitionId) {
+
+        try {
+            CloudControllerServiceClient.getInstance().createClusterInstance(
+                    serviceType, clusterId, alias, instanceId, partitionId,
+                    networkPartitionId);
+        } catch (RemoteException e) {
+            String msg = " Exception occurred in creating cluster instance with cluster-id [" + clusterId
+                    + "] instance-id [" + instanceId + "] service-type [" + serviceType + "]"
+                    + "] alias [" + alias + "] partition-id [" + partitionId + "]"
+                    + "] network-parition-id [" + networkPartitionId + "]"
+                    + " .Reason [" + e.getMessage() + "]";
+            log.error(msg);
+            throw new RuntimeException(msg, e);
+        }
+
+
+    }
+
     @Override
     public MonitorType getMonitorType() {
         return MonitorType.Cluster;
@@ -246,27 +265,6 @@ public class ClusterMonitor extends Monitor {
         return groupScalingEnabledSubtree;
     }
 
-    private static void createClusterInstance(String serviceType,
-                                              String clusterId, String alias, String instanceId,
-                                              String partitionId, String networkPartitionId) {
-
-        try {
-            CloudControllerServiceClient.getInstance().createClusterInstance(
-                    serviceType, clusterId, alias, instanceId, partitionId,
-                    networkPartitionId);
-        } catch (RemoteException e) {
-            String msg = " Exception occurred in creating cluster instance with cluster-id [" + clusterId
-                    + "] instance-id [" + instanceId + "] service-type [" + serviceType + "]"
-                    + "] alias [" + alias + "] partition-id [" + partitionId + "]"
-                    + "] network-parition-id [" + networkPartitionId + "]"
-                    + " .Reason [" + e.getMessage() + "]";
-            log.error(msg);
-            throw new RuntimeException(msg, e);
-        }
-
-
-    }
-
     public void handleAverageLoadAverageEvent(
             AverageLoadAverageEvent averageLoadAverageEvent) {
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
index c917f2d..41b6e1f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
@@ -120,7 +120,7 @@ public class ApplicationMonitor extends ParentComponentMonitor {
                             getInstanceIdToInstanceContextMap().values()) {
                         ApplicationInstance instance = (ApplicationInstance) instanceIdToInstanceMap.
                                 get(instanceContext.getId());
-                        ParentInstanceContext parentInstanceContext = (ParentInstanceContext)instanceContext;
+                        ParentInstanceContext parentInstanceContext = (ParentInstanceContext) instanceContext;
                         //stopping the monitoring when the group is inactive/Terminating/Terminated
                         if (instance.getStatus().getCode() <= ApplicationStatus.Active.getCode()) {
                             //Gives priority to scaling max out rather than dependency scaling
@@ -152,7 +152,7 @@ public class ApplicationMonitor extends ParentComponentMonitor {
                 if (application != null) {
                     List<String> defaultNetworkPartitions = getDefaultNetworkPartitions(application);
                     //Checking for whether minimum application instances are there.
-                    if(defaultNetworkPartitions != null) {
+                    if (defaultNetworkPartitions != null) {
                         checkForMinimumApplicationInstances(application, defaultNetworkPartitions);
                     }
 
@@ -328,7 +328,7 @@ public class ApplicationMonitor extends ParentComponentMonitor {
             }
         }
         //Starting the dependencies
-        if(!instanceIds.isEmpty()) {
+        if (!instanceIds.isEmpty()) {
             startDependency(application, instanceIds);
         }
 
@@ -339,10 +339,10 @@ public class ApplicationMonitor extends ParentComponentMonitor {
 
         for (NetworkPartitionContext networkPartitionContext : networkPartitionContextsMap.values()) {
             String nPartitionId = networkPartitionContext.getId();
-            if(!defaultNetworkPartitions.contains(nPartitionId)) {
+            if (!defaultNetworkPartitions.contains(nPartitionId)) {
                 log.info("The [application] " + appId + " runtime cannot be in [network-partition] "
                         + nPartitionId + " as it is removed from the [application-policy]...!");
-                for(InstanceContext instanceContext:  networkPartitionContext.
+                for (InstanceContext instanceContext : networkPartitionContext.
                         getInstanceIdToInstanceContextMap().values()) {
                     //Handling application instance termination
                     ApplicationBuilder.handleApplicationInstanceTerminatingEvent(this.appId,
@@ -554,7 +554,7 @@ public class ApplicationMonitor extends ParentComponentMonitor {
                         getInstanceByNetworkPartitionId(context.getId());
                 if (appInstance != null) {
                     //use the existing instance in the Topology to create the data
-                    if(!isRestarting) {
+                    if (!isRestarting) {
                         this.setRestarting(true);
                     }
                     instanceId = handleApplicationInstanceCreation(application, context, appInstance);
@@ -588,7 +588,7 @@ public class ApplicationMonitor extends ParentComponentMonitor {
                             " [appInstanceId] " + instance.getInstanceId());
                 }
             }
-            if(!instanceIds.isEmpty()) {
+            if (!instanceIds.isEmpty()) {
                 startDependency(application, instanceIds);
             }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
index eee0a3a..c3e89ee 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
@@ -125,7 +125,7 @@ public class GroupMonitor extends ParentComponentMonitor {
 
                     for (InstanceContext instanceContext : networkPartitionContext.
                             getInstanceIdToInstanceContextMap().values()) {
-                        ParentInstanceContext parentInstanceContext = (ParentInstanceContext)instanceContext;
+                        ParentInstanceContext parentInstanceContext = (ParentInstanceContext) instanceContext;
                         GroupInstance instance = (GroupInstance) instanceIdToInstanceMap.
                                 get(instanceContext.getId());
                         //stopping the monitoring when the group is inactive/Terminating/Terminated
@@ -158,7 +158,7 @@ public class GroupMonitor extends ParentComponentMonitor {
                     Collection<Instance> parentInstances = parent.getInstances();
 
                     for (Instance parentInstance : parentInstances) {
-                        if(parentInstance.getNetworkPartitionId().equals(networkPartitionContext.getId())) {
+                        if (parentInstance.getNetworkPartitionId().equals(networkPartitionContext.getId())) {
                             int nonTerminatedInstancesCount = networkPartitionContext.
                                     getNonTerminatedInstancesCount(parentInstance.getInstanceId());
                             int minInstances = networkPartitionContext.
@@ -183,8 +183,8 @@ public class GroupMonitor extends ParentComponentMonitor {
                                         if (activeAppInstances > 0) {
                                             //Creating new group instance based on the existing parent instances
                                             log.info("Creating a group instance of [application] "
-                                                        + appId + " [group] " + id +
-                                                        " as the the minimum required instances are not met");
+                                                    + appId + " [group] " + id +
+                                                    " as the the minimum required instances are not met");
 
                                             createInstanceOnDemand(parentInstanceContext.getId());
                                         }
@@ -204,10 +204,10 @@ public class GroupMonitor extends ParentComponentMonitor {
                                     InstanceContext instanceContext = contextList.get(i);
                                     //scale down only when extra instances found
                                     log.info("Terminating a group instance of [application] "
-                                                + appId + " [group] " + id + " as it exceeded the " +
-                                                "maximum no of instances by " + instancesToBeTerminated);
+                                            + appId + " [group] " + id + " as it exceeded the " +
+                                            "maximum no of instances by " + instancesToBeTerminated);
 
-                                    handleScalingDownBeyondMin((ParentInstanceContext)instanceContext,
+                                    handleScalingDownBeyondMin((ParentInstanceContext) instanceContext,
                                             networkPartitionContext, true);
 
                                 }
@@ -282,7 +282,7 @@ public class GroupMonitor extends ParentComponentMonitor {
             } else {
                 if (groupScalingEnabled) {
                     if (nwPartitionContext.getNonTerminatedInstancesCount() >
-                                            nwPartitionContext.getMinInstanceCount()) {
+                            nwPartitionContext.getMinInstanceCount()) {
                         //send terminating to the specific group instance in the scale down
                         ApplicationBuilder.handleGroupTerminatingEvent(this.appId, this.id,
                                 instanceContext.getId());
@@ -505,7 +505,7 @@ public class GroupMonitor extends ParentComponentMonitor {
                     getAppMonitor(appId);
             //In case if the group instance is not in terminating while application is
             // terminating, changing the status to terminating
-            if(applicationMonitor.isTerminating() && instance.getStatus().getCode() < 3) {
+            if (applicationMonitor.isTerminating() && instance.getStatus().getCode() < 3) {
                 //Sending group instance terminating event
                 ApplicationBuilder.handleGroupTerminatingEvent(appId, id, instanceId);
             }
@@ -672,8 +672,8 @@ public class GroupMonitor extends ParentComponentMonitor {
      * @return the group level network partition context
      */
     private NetworkPartitionContext getGroupLevelNetworkPartitionContext(String groupAlias,
-                                                                                    String appId,
-                                                                                    Instance parentInstanceContext) {
+                                                                         String appId,
+                                                                         Instance parentInstanceContext) {
         NetworkPartitionContext parentLevelNetworkPartitionContext;
         String deploymentPolicyId = AutoscalerUtil.getDeploymentPolicyIdByAlias(appId, groupAlias);
         DeploymentPolicy deploymentPolicy = PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId);
@@ -780,7 +780,7 @@ public class GroupMonitor extends ParentComponentMonitor {
      * Creates the group instance and adds the required context objects
      *
      * @param group                              the group
-     * @param parentInstance              the parent instance context
+     * @param parentInstance                     the parent instance context
      * @param partitionContext                   partition-context used to create the group instance
      * @param parentLevelNetworkPartitionContext the group level network partition context
      */