You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2013/11/05 11:06:08 UTC

[2/2] git commit: Cleaned load balancer common component

Cleaned load balancer common component


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

Branch: refs/heads/master
Commit: b975aa3c1dad3de01e4953860ad3d8ecc204f6d8
Parents: 812c115
Author: Imesh Gunaratne <im...@apache.org>
Authored: Tue Nov 5 15:35:55 2013 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Tue Nov 5 15:35:55 2013 +0530

----------------------------------------------------------------------
 .../load/balancer/common/cache/LRUCache.java    |  103 --
 .../balancer/common/cache/URLMappingCache.java  |   47 -
 .../common/conf/LoadBalancerConfiguration.java  | 1202 ------------------
 .../LoadBalancerConfigurationDSComponent.java   |   47 -
 .../balancer/common/conf/structure/Node.java    |  356 ------
 .../common/conf/structure/NodeBuilder.java      |  140 --
 .../balancer/common/conf/util/Constants.java    |   50 -
 .../balancer/common/conf/util/HostContext.java  |  161 ---
 .../conf/util/LoadBalancerConfigUtil.java       |  305 -----
 .../common/conf/util/TenantDomainContext.java   |   80 --
 .../mgt/SubDomainAwareGroupManagementAgent.java |   58 -
 .../LoadBalancerCommonServiceComponent.java     |   41 +
 .../common/mb/connect/TopicConnector.java       |  103 --
 .../common/mb/heartbeat/TopicHealthChecker.java |   81 --
 .../common/mb/publish/TopicPublisher.java       |  109 --
 .../common/mb/subscribe/TopicSubscriber.java    |  119 --
 .../RequestTokenReplicationCommand.java         |   73 --
 .../LoadBalancerConfigurationService.java       |   79 --
 .../LoadBalancerConfigurationServiceImpl.java   |   48 -
 .../balancer/common/util/DomainMapping.java     |   45 -
 .../stratos/load/balancer/common/util/Util.java |   54 -
 .../src/main/resources/META-INF/services.xml    |   31 -
 .../common/test/LoadBalancerConfigUtilTest.java |   48 -
 .../test/LoadBalancerConfigurationTest.java     |  169 ---
 .../balancer/common/test/NodeBuilderTest.java   |  123 --
 .../src/test/resources/loadbalancer.conf        |   84 --
 .../src/test/resources/loadbalancer1.conf       |   60 -
 .../src/test/resources/loadbalancer2.conf       |   50 -
 .../src/test/resources/testng.xml               |   36 -
 29 files changed, 41 insertions(+), 3861 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b975aa3c/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/cache/LRUCache.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/cache/LRUCache.java b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/cache/LRUCache.java
deleted file mode 100644
index a8eed1c..0000000
--- a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/cache/LRUCache.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
-
- *  http://www.apache.org/licenses/LICENSE-2.0
-
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.stratos.load.balancer.common.cache;
-
-
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-/**
- * A simple, thread-safe LRU cache implementation. This cache allows concurrent reads.
- * Concurrent write attempts are synchronized using an exclusive lock.
- */
-public class LRUCache<K,V> extends LinkedHashMap<K,V> {
-
-    private static final long serialVersionUID = 5901026458782787628L;
-    private int maxEntries;
-    private ReadWriteLock lock;
-
-    public LRUCache(int maxEntries) {
-        super(maxEntries + 1, 1, false);
-        this.maxEntries = maxEntries;
-        this.lock = new ReentrantReadWriteLock();
-    }
-
-    @Override
-    public V get(Object key) {
-        lock.readLock().lock();
-        try {
-            return super.get(key);
-        } finally {
-            lock.readLock().unlock();
-        }
-    }
-
-    @Override
-    public V put(K key, V value) {
-        lock.writeLock().lock();
-        try {
-            return super.put(key, value);
-        } finally {
-            lock.writeLock().unlock();
-        }
-    }
-
-    @Override
-    public V remove(Object key) {
-        lock.writeLock().lock();
-        try {
-            return super.remove(key);
-        } finally {
-            lock.writeLock().unlock();
-        }
-    }
-
-    @Override
-    public void clear() {
-        lock.writeLock().lock();
-        try {
-            super.clear();
-        } finally {
-            lock.writeLock().unlock();
-        }
-    }
-
-    @Override
-    protected boolean removeEldestEntry(Map.Entry<K,V> eldest) {
-        boolean remove = size() > maxEntries;
-        if (remove) {
-            handleRemovableEntry(eldest);
-        }
-        return remove;
-    }
-
-    protected void handleRemovableEntry(Map.Entry<K,V> entry) {
-
-    }
-
-    public void exclusiveLock() {
-        lock.writeLock().lock();
-    }
-
-    public void release() {
-        lock.writeLock().unlock();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b975aa3c/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/cache/URLMappingCache.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/cache/URLMappingCache.java b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/cache/URLMappingCache.java
deleted file mode 100644
index e08a5d3..0000000
--- a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/cache/URLMappingCache.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
-
- *  http://www.apache.org/licenses/LICENSE-2.0
-
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.stratos.load.balancer.common.cache;
-
-import org.apache.stratos.load.balancer.common.util.DomainMapping;
-import java.util.Map;
-
-public class URLMappingCache {
-    private Map<String,DomainMapping> validMappings;
-
-    private static URLMappingCache instance = null;
-    protected URLMappingCache(int maxValidKeys) {
-        validMappings = new LRUCache<String, DomainMapping>(maxValidKeys);
-    }
-
-    public void addValidMapping(String hostName, DomainMapping mapping) {
-        validMappings.put(hostName, mapping);
-    }
-
-    public DomainMapping getMapping(String hostName) {
-        return validMappings.get(hostName);
-    }
-
-    public static URLMappingCache getInstance(int maxValidKeys) {
-      if(instance == null) {
-
-         instance = new URLMappingCache(maxValidKeys);
-      }
-      return instance;
-   }
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b975aa3c/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/LoadBalancerConfiguration.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/LoadBalancerConfiguration.java b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/LoadBalancerConfiguration.java
deleted file mode 100644
index 952c651..0000000
--- a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/LoadBalancerConfiguration.java
+++ /dev/null
@@ -1,1202 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
-
- *  http://www.apache.org/licenses/LICENSE-2.0
-
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.stratos.load.balancer.common.conf;
-
-import org.apache.commons.lang.builder.HashCodeBuilder;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.synapse.commons.util.PropertyHelper;
-import org.apache.stratos.load.balancer.common.conf.structure.Node;
-import org.apache.stratos.load.balancer.common.conf.structure.NodeBuilder;
-import org.apache.stratos.load.balancer.common.conf.util.Constants;
-import org.apache.stratos.load.balancer.common.conf.util.HostContext;
-import org.apache.stratos.load.balancer.common.conf.util.LoadBalancerConfigUtil;
-
-import java.io.*;
-import java.net.URL;
-import java.util.*;
-
-/**
- * Data object which hold configuration data of the load analyzer task
- */
-@SuppressWarnings("unused")
-public class LoadBalancerConfiguration implements Serializable {
-
-    protected static final long serialVersionUID = -5553545217542808233L;
-
-    private static final Log log = LogFactory.getLog(LoadBalancerConfiguration.class);
-
-    /**
-     * This map is there to speed up the lookup time.
-     * Key: domain
-     * <p/>
-     * Value: A map whose key is sub domain and value is ServiceConfiguration
-     */
-    private Map<String, Map<String, ServiceConfiguration>> serviceConfigurations =
-            new HashMap<String, Map<String, ServiceConfiguration>>();
-    
-    /**
-     * Key - host name
-     * Value - {@link HostContext}
-     */
-    private transient Map<String, HostContext> hostCtxt = new HashMap<String, HostContext>();
-    
-    /**
-     * This map is there to speed up the lookup time.
-     * Key: service name/cartridge type (Stratos2). NOTE: that this is not the service cluster domain.
-     * Value: list of {@link ServiceConfiguration} - corresponding objects under a service name.
-     */
-	private Map<String, List<ServiceConfiguration>> serviceNameToServiceConfigurations =
-			new HashMap<String, List<ServiceConfiguration>>();
-
-    /**
-     * This list will be used to identify host name duplications among different services.
-     * Within a service there can be duplications, but among different services you can't have duplications.
-     * Key - service name
-     * Value - hosts under the respective service.
-     */
-    private Map<String, Set<String>> hostNamesTracker = new HashMap<String, Set<String>>();
-
-    protected ServiceConfiguration defaultServiceConfig;
-    protected LBConfiguration lbConfig;
-
-    /**
-     * LBConfig file as a String
-     */
-    protected String lbConfigString;
-
-    /**
-     * Root node object for loadbalancer.conf
-     */
-    protected Node rootNode;
-
-    private LoadBalancerConfiguration(){
-        init(System.getProperty("loadbalancer.conf"));
-    }
-
-    private static LoadBalancerConfiguration instance ;
-    
-    public static LoadBalancerConfiguration getInstance(){
-        if(instance == null){
-            instance = new LoadBalancerConfiguration();
-        }
-        return instance;
-    }
-
-    /**
-     * Sample loadbalancer.conf:
-     * <p/>
-     * loadbalancer {
-     * # minimum number of load balancer instances
-     * instances           1;
-     * # whether autoscaling enable or not
-     * enable_autoscaler   true;
-     * # End point reference of the Autoscaler Service
-     * autoscaler_service_epr  https://10.100.3.81:9443/services/AutoscalerService/;
-     * # interval between two task executions in milliseconds
-     * autoscaler_task_interval 1000;
-     * # after an instance booted up, task will wait till this much of time and let the server started up
-     * server_startup_delay 15000;
-     * }
-     * <p/>
-     * services {
-     * defaults {
-     * min_app_instances       1;
-     * max_app_instances       5;
-     * queue_length_per_node   400;
-     * rounds_to_average       10;
-     * instances_per_scale_up  1;
-     * message_expiry_time     60000;
-     * }
-     * <p/>
-     * appserver {
-     * hosts                   appserver.cloud-test.wso2.com,as.cloud-test.wso2.com;
-     * domains   {
-     * wso2.as1.domain {
-     * tenant_range    1-100;
-     * }
-     * wso2.as2.domain {
-     * tenant_range    101-200;
-     * }
-     * wso2.as3.domain {
-     * tenant_range    *;
-     * }
-     * }
-     * }
-     * }
-     *
-     * @param configURL URL of the load balancer config
-     */
-    public void init(String configURL) {
-
-        if(configURL == null){
-            String msg = "Cannot locate the location of the loadbalancer.conf file." +
-                   " You need to set the 'loadbalancer.conf' system property.";
-            log.error(msg);
-            throw new RuntimeException(msg);
-        }
-        
-        if (configURL.startsWith("$system:")) {
-            configURL = System.getProperty(configURL.substring("$system:".length()));
-        }
-
-        try {
-
-            // get loadbalancer.conf file as a String
-            if (configURL.startsWith(File.separator)) {
-                lbConfigString = createLBConfigString(configURL);
-            } else {
-                lbConfigString = createLBConfigString(new URL(configURL).openStream());
-            }
-
-        } catch (Exception e) {
-            String msg = "Cannot read configuration file from " + configURL;
-            log.error(msg, e);
-            throw new RuntimeException(msg, e);
-        }
-
-        // build a Node object for whole loadbalancer.conf
-        rootNode = new Node();
-        rootNode.setName("root");
-        rootNode = NodeBuilder.buildNode(rootNode, lbConfigString);
-
-        // load 'loadbalancer' node
-        Node lbConfigNode = rootNode.findChildNodeByName(Constants.LOAD_BALANCER_ELEMENT);
-
-        if(lbConfigNode != null){
-        	createConfiguration(lbConfig = new LBConfiguration(), lbConfigNode);
-        }
-
-        // load services node
-        Node servicesConfigNode = rootNode.findChildNodeByName(Constants.SERVICES_ELEMENT);
-
-        if (servicesConfigNode == null) {
-            String msg = "Mandatory " + Constants.SERVICES_ELEMENT +
-                    " element can not be found in the configuration file.";
-            log.error(msg);
-            throw new RuntimeException(msg);
-        }
-
-        // Set services configuration
-        createServicesConfig(servicesConfigNode);
-
-    }
-
-
-    /**
-     * Process the content of the following 'services' element
-     * <p/>
-     * services {
-     * defaults {
-     * min_app_instances       1;
-     * max_app_instances       5;
-     * queue_length_per_node   400;
-     * rounds_to_average       10;
-     * instances_per_scale_up  1;
-     * message_expiry_time     60000;
-     * }
-     * <p/>
-     * appserver {
-     * hosts                   appserver.cloud-test.wso2.com,as.cloud-test.wso2.com;
-     * domains   {
-     * wso2.as1.domain {
-     * tenant_range    1-100;
-     * }
-     * wso2.as2.domain {
-     * tenant_range    101-200;
-     * }
-     * wso2.as3.domain {
-     * tenant_range    *;
-     * }
-     * }
-     * }
-     * }
-     *
-     * @param servicesConfigNode services element's Node
-     */
-    public List<ServiceConfiguration> createServicesConfig(Node servicesConfigNode) {
-
-        // current list of service configs
-        List<ServiceConfiguration> currentServiceConfigs = new ArrayList<ServiceConfiguration>();
-        
-        // Building default configuration
-        Node defaultNode = servicesConfigNode.findChildNodeByName(Constants.DEFAULTS_ELEMENT);
-
-        if (defaultNode != null) {
-
-            createConfiguration(defaultServiceConfig = new ServiceConfiguration(), defaultNode);
-        }
-
-        // Building custom services configuration
-        for (Node serviceNode : servicesConfigNode.getChildNodes()) {
-            //skip default node
-            if (serviceNode != defaultNode) {
-
-                String serviceName = serviceNode.getName();
-
-                // reading domains
-
-                Node domainsNode;
-
-                if (serviceNode.getChildNodes().isEmpty() ||
-                        !(domainsNode = serviceNode.getChildNodes().get(0)).getName().equals(
-                                Constants.DOMAIN_ELEMENT)) {
-
-                    String msg = "The mandatory domains element, child of the " + serviceName +
-                            " element is not specified in the configuration file. \n"+
-                            serviceNode.toString();
-                    log.error(msg);
-                    throw new RuntimeException(msg);
-                }
-
-                if (domainsNode.getChildNodes().isEmpty()) {
-                    // this is probably a mistake, so we don't proceed
-                    String msg = "No domain is specified under " + Constants.DOMAIN_ELEMENT +
-                            " of " + serviceName + " element.";
-                    log.error(msg);
-                    throw new RuntimeException(msg);
-                }
-
-                ServiceConfiguration serviceConfig;
-
-                // iterates through all the service domain specified in this service element. 
-                for (Node domain : domainsNode.getChildNodes()) {
-
-                    // create a new service configuration
-                    serviceConfig = new ServiceConfiguration();
-
-                    // set service name
-                    serviceConfig.setServiceName(serviceName);
-                    
-                    // set domain name
-                    serviceConfig.setDomain(domain.getName());
-
-                    // let's set properties common to all domains specified in this service element.
-                    createConfiguration(serviceConfig, serviceNode);
-
-                    // load properties specified under this service domain element.
-                    createConfiguration(serviceConfig, domain);
-
-                    // check host name duplication 
-                    if(isDuplicatedHost(serviceNode.getName(), serviceConfig)){
-                        // this is probably a mistake, so we don't proceed
-                        String msg = "Duplicated host names detected for different service domains.\n" +
-                                "Element: \n"+serviceNode.toString();
-                        log.error(msg);
-                        throw new RuntimeException(msg);
-                    }
-                    
-                    currentServiceConfigs.add(serviceConfig);
-
-                }
-            }
-        }
-
-        for (ServiceConfiguration serviceConfiguration : currentServiceConfigs) {
-            
-            // add the built ServiceConfiguration, to the map
-            addServiceConfiguration(serviceConfiguration);
-            
-        }
-        
-        return currentServiceConfigs;
-
-    }
-
-
-    public boolean addServiceConfiguration(ServiceConfiguration serviceConfig) {
-
-        Map<String, ServiceConfiguration> map;
-        String domain = serviceConfig.getDomain();
-        
-        if(domain == null){
-            String msg = "Domain of a Service Configuration cannot be null. Hence this " +
-            		"Configuration will be neglected.";
-            log.error(msg);
-            return false;
-        }
-        
-        String subDomain = serviceConfig.getSubDomain();
-
-        if (serviceConfigurations.containsKey(domain)) {
-            map = serviceConfigurations.get(domain);
-        } else {
-            map = new HashMap<String, ServiceConfiguration>();
-        }
-        // put this serviceConfig
-        map.put(subDomain, serviceConfig);
-
-        // update the parent map
-        serviceConfigurations.put(domain, map);
-        
-        // add to serviceNameToServiceConfiguration map
-        List<ServiceConfiguration> configs;
-        if(serviceNameToServiceConfigurations.get(serviceConfig.getServiceName()) == null){
-        	configs = new ArrayList<ServiceConfiguration>();
-        	
-        }else{
-        	configs = serviceNameToServiceConfigurations.get(serviceConfig.getServiceName());
-        }
-        
-        if(!configs.contains(serviceConfig)){
-        	configs.add(serviceConfig);
-        }
-        serviceNameToServiceConfigurations.put(serviceConfig.getServiceName(), configs);
-        
-        return true;
-    }
-    
-    public ServiceConfiguration removeServiceConfiguration(String domain, String subDomain) {
-
-        Map<String, ServiceConfiguration> map;
-        ServiceConfiguration serviceConfig = null;
-        
-        if(domain == null){
-            String msg = "Domain of a Service Configuration cannot be null. Hence this " +
-            		"Configuration will be neglected.";
-            log.error(msg);
-            return null;
-        }
-
-        if (serviceConfigurations.containsKey(domain)) {
-            map = serviceConfigurations.get(domain);
-            
-            if(map != null){
-            	serviceConfig = map.remove(subDomain);
-            }
-        } 
-        
-        if(serviceConfig == null){
-        	String msg = "No matching service configuration found for domain: "+domain+
-        			", sub domain: "+subDomain;
-            log.error(msg);
-        	return null;
-        }
-        
-        String serviceName = serviceConfig.getServiceName();
-        
-        if (serviceName != null && serviceNameToServiceConfigurations.containsKey(serviceName)) {
-            if(serviceConfig != null){
-            	List<ServiceConfiguration> list = serviceNameToServiceConfigurations.get(serviceName);
-            	
-            	list.remove(serviceConfig);
-            	
-            	serviceNameToServiceConfigurations.put(serviceName, list);
-            }
-        } 
-        
-        Set<String> allHosts;
-
-        if (hostNamesTracker.containsKey(serviceName)) {
-            allHosts = hostNamesTracker.get(serviceName);
-            
-            for (String hostName : serviceConfig.getHosts()) {
-	            
-				if (hostName != null) {
-					
-					allHosts.remove(hostName);
-
-					hostCtxt.remove(hostName);
-				}
-            }
-        }
-        
-        return serviceConfig;
-    }
-    
-    public void resetData(){
-    	serviceConfigurations =
-                new HashMap<String, Map<String, ServiceConfiguration>>();
-    	
-    	serviceNameToServiceConfigurations =
-    			new HashMap<String, List<ServiceConfiguration>>();
-    	
-    }
-
-
-    /**
-     * Duplications can only be seen, when you traverse down the configuration file.
-     * 
-     */
-    public boolean isDuplicatedHost(String name, ServiceConfiguration serviceConfig) {
-
-        /**
-         * This will be populated with host names of all other services other than the
-         * service subjected to the test.
-         */
-        List<String> hostsOtherThanMine = new ArrayList<String>(hostNamesTracker.values().size());
-
-        for (Map.Entry<String, Set<String>> entry : hostNamesTracker.entrySet()) {
-            if (!entry.getKey().equals(name)) {
-                hostsOtherThanMine.addAll(entry.getValue());
-            }
-        }
-
-        for (String host : serviceConfig.getHosts()) {
-            if (!hostsOtherThanMine.isEmpty() && hostsOtherThanMine.contains(host)) {
-                return true;
-            }
-        }
-
-        addToHostNameTrackerMap(name, serviceConfig.getHosts());
-
-        return false;
-    }
-
-
-    public void addToHostNameTrackerMap(String name, List<String> hosts) {
-
-        Set<String> allHosts;
-
-        if (hostNamesTracker.containsKey(name)) {
-            allHosts = hostNamesTracker.get(name);
-            allHosts.addAll(hosts);
-        } else {
-            allHosts = new HashSet<String>(hosts);
-        }
-        hostNamesTracker.put(name, allHosts);
-    }
-    
-    public void addToHostContextMap(String hostName, HostContext ctxt) {
-
-        if (hostName != null && ctxt != null) {
-            hostCtxt.put(hostName, ctxt);
-        }
-    }
-    
-    /**
-     * Return a map of {@link HostContext}.
-     * @return
-     */
-    public Map<String, HostContext> getHostContextMap() {
-
-        List<Integer> tenantIds;
-        Map<String, String> URLSuffixes;
-
-        // FIXME if possible! I couldn't think of any other way to do this, at this moment.
-        // Note: some of these for-loops are pretty small, thus no considerable performance overhead.
-        // iterate through each service
-        for (Iterator<Set<String>> it = hostNamesTracker.values().iterator(); it.hasNext();) {
-
-            // iterate through host names of this service
-            for (String hostName : ((Set<String>) it.next())) {
-                                                                  
-                // building HostContext
-                HostContext ctxt = new HostContext(hostName);
-
-                // iterate through domains of this host
-                for (Map.Entry<String, Map<String, ServiceConfiguration>> parentMap : serviceConfigurations.entrySet()) {
-
-                    // iterate through sub domain of this domain
-                    for (Map.Entry<String, ServiceConfiguration> childMap : parentMap.getValue()
-                            .entrySet()) {
-                        // iterate through hosts of this
-                        for (String host : childMap.getValue().getHosts()) {
-                            // if a matching Service configuration is found.
-                            if (host.equals(hostName)) {
-                                
-                                String tenantRange = childMap.getValue().getTenantRange();
-                                String domain = parentMap.getKey();
-                                String subDomain = childMap.getKey();
-                                          
-                                ctxt.addTenantDomainContexts(LoadBalancerConfigUtil.getTenantDomainContexts(tenantRange, domain, subDomain));
-
-                                break;
-                            }
-                        }
-                        
-                        //iterate through URL suffixes
-                        for(Map.Entry<String, String> entry : childMap.getValue().getUrl_suffix().entrySet()) {
-                            if(entry.getKey().equals(hostName)) {
-                                
-                                ctxt.setUrlSuffix(entry.getValue());
-                                
-                                break;
-                            }
-
-                        }
-                    }
-                }
-
-                // add this hostCtxt
-                hostCtxt.put(hostName, ctxt);
-            }
-
-        }
-
-        return hostCtxt;
-
-    }
-
-    protected void createConfiguration(Configuration config, Node node) {
-
-        if (node == null) {
-            String msg = "The configuration element for " +
-                    config.getClass().getName() + " is null.";
-            throw new RuntimeException(msg);
-        }
-
-        try {
-            // load properties
-            for (Map.Entry<String, String> entry : node.getProperties().entrySet()) {
-                String key = entry.getKey();
-                String value = entry.getValue();
-
-                PropertyHelper.setInstanceProperty(key, value, config);
-            }
-
-        } catch (Exception e) {
-            String msg = "Error setting values to " + config.getClass().getName();
-            log.error(msg, e);
-            throw new RuntimeException(msg, e);
-        }
-    }
-
-    public LBConfiguration getLoadBalancerConfig() {
-        return lbConfig;
-    }
-
-    public String[] getServiceDomains() {
-
-        Object[] objs = serviceConfigurations.keySet().toArray();
-
-        return Arrays.copyOf(objs, objs.length, String[].class);
-
-    }
-
-    public String[] getServiceSubDomains(String domain) {
-
-        if (serviceConfigurations.get(domain) != null) {
-            Object[] objs = serviceConfigurations.get(domain).keySet().toArray();
-            return Arrays.copyOf(objs, objs.length, String[].class);
-        }
-
-        return new String[0];
-    }
-
-    public ServiceConfiguration getServiceConfig(String domain, String subDomain) {
-        if (serviceConfigurations.get(domain) != null) {
-            return serviceConfigurations.get(domain).get(subDomain);
-        }
-        return null;
-    }
-    
-    
-    public List<ServiceConfiguration> getServiceConfigs(String serviceName) {
-        return serviceNameToServiceConfigurations.get(serviceName);
-    }
-
-    /**
-     * Convert given configuration file to a single String
-     *
-     * @param configFileName - file name to convert
-     * @return String with complete lb configuration
-     * @throws FileNotFoundException
-     */
-    public String createLBConfigString(String configFileName) throws FileNotFoundException {
-        StringBuilder lbConfigString = new StringBuilder("");
-
-        File configFile = new File(configFileName);
-        Scanner scanner;
-
-        scanner = new Scanner(configFile);
-
-        while (scanner.hasNextLine()) {
-            lbConfigString.append(scanner.nextLine().trim() + "\n");
-        }
-
-        return lbConfigString.toString().trim();
-    }
-
-    public String createLBConfigString(InputStream configFileName) throws IOException {
-
-        // read the stream with BufferedReader
-        BufferedReader br = new BufferedReader(new InputStreamReader(configFileName));
-
-        StringBuilder sb = new StringBuilder();
-
-        String line;
-        while ((line = br.readLine()) != null) {
-            sb.append(line.trim() + "\n");
-        }
-
-        return sb.toString().trim();
-    }
-
-    public abstract class Configuration implements Serializable {
-
-        private static final long serialVersionUID = -5433889427746551250L;
-        protected String imageId = System.getenv("ami_id");
-        protected String payload;
-        protected boolean payloadSet;
-
-        protected String availability_zone = "us-east-1c";
-        protected boolean availabilityZoneSet;
-
-        protected String[] security_groups = new String[]{"default"};
-        protected boolean securityGroupsSet;
-
-        protected String instance_type = "m1.large";
-        protected boolean instanceTypeSet;
-
-        protected String additional_info;
-
-        public String getImageId() {
-            return imageId;
-        }
-
-        public String getAdditionalInfo() {
-            return additional_info;
-        }
-
-        public String getAvailability_zone() {
-            if (this instanceof LBConfiguration) {
-                return availability_zone;
-            }
-            if (availabilityZoneSet) {
-                return availability_zone;
-            } else if (defaultServiceConfig != null && defaultServiceConfig.availabilityZoneSet) {
-                return defaultServiceConfig.availability_zone;
-            }
-            return availability_zone;
-        }
-
-        public String[] getSecurityGroups() {
-            if (this instanceof LBConfiguration) {
-                return security_groups;
-            }
-            if (securityGroupsSet) {
-                return security_groups;
-            } else if (defaultServiceConfig != null && defaultServiceConfig.securityGroupsSet) {
-                return defaultServiceConfig.security_groups;
-            }
-            return security_groups;
-        }
-
-        public String getInstanceType() {
-            if (this instanceof LBConfiguration) {
-                return instance_type;
-            }
-            if (instanceTypeSet) {
-                return instance_type;
-            } else if (defaultServiceConfig != null && defaultServiceConfig.instanceTypeSet) {
-                return defaultServiceConfig.instance_type;
-            }
-            return instance_type;
-        }
-
-
-        public String getUserData() {
-            if (payload == null) {
-                payload = LoadBalancerConfigUtil.getUserData("resources/cluster_node.zip");
-            }
-            if (this instanceof LBConfiguration) {
-                return payload;
-            }
-            if (payloadSet) {
-                return payload;
-            } else if (defaultServiceConfig != null && defaultServiceConfig.payloadSet) {
-                return defaultServiceConfig.payload;
-            }
-            return payload;
-        }
-
-        public void setPayload(String payload) {
-            this.payload = LoadBalancerConfigUtil.getUserData(LoadBalancerConfigUtil.replaceVariables(payload));
-            this.payloadSet = true;
-        }
-
-        public void setAvailability_zone(String availabilityZone) {
-            this.availability_zone = LoadBalancerConfigUtil.replaceVariables(availabilityZone);
-            this.availabilityZoneSet = true;
-        }
-
-        public void setSecurity_groups(String securityGroups) {
-            this.security_groups = LoadBalancerConfigUtil.replaceVariables(securityGroups).split(",");
-            this.securityGroupsSet = true;
-        }
-
-        public void setInstance_type(String instanceType) {
-            this.instance_type = LoadBalancerConfigUtil.replaceVariables(instanceType);
-            this.instanceTypeSet = true;
-        }
-
-    }
-
-    public class LBConfiguration extends Configuration implements Serializable {
-
-        private static final long serialVersionUID = 1357143883932816418L;
-        private String elasticIP;//= LoadBalancerConfigUtil.replaceVariables("${ELASTIC_IP}");
-        private int instances = 1;
-        private boolean isAutoscaleEnabled;
-        private int autoscalerTaskInterval = 30000;
-        private String autoscalerServiceEpr;
-        private int serverStartupDelay = 60000;
-        private int sizeOfCache = 0 ;
-        private boolean failOver;
-        private int sessionTimeOut = -1;
-        private String groupManagementAgentClass;
-        private String autoscalerTaskClass;
-        private String mbServerUrl;
-        private boolean useEmbeddedAutoscaler = true;
-        private String algorithm = "org.apache.synapse.endpoints.algorithms.RoundRobin";
-
-        public String getElasticIP() {
-            return elasticIP;
-        }
-
-        public int getInstances() {
-            return instances;
-        }
-
-        public boolean isAutoscaleEnabled() {
-            return isAutoscaleEnabled;
-        }
-        
-        public boolean useEmbeddedAutoscaler() {
-            return useEmbeddedAutoscaler;
-        }
-        
-        public boolean getFailOver() {
-            return failOver;
-        }
-
-        public String getAutoscalerServiceEpr() {
-            return autoscalerServiceEpr;
-        }
-
-        public int getAutoscalerTaskInterval() {
-            return autoscalerTaskInterval;
-        }
-
-        public int getServerStartupDelay() {
-            return serverStartupDelay;
-        }
-        
-        public int getSessionTimeOut() {
-            return sessionTimeOut;
-        }
-
-        public void setElasticIP(String elasticIP) {
-            this.elasticIP = LoadBalancerConfigUtil.replaceVariables(elasticIP);
-        }
-
-        public void setInstances(int instances) {
-            this.instances = instances;
-        }
-
-        public void setEnable_autoscaler(String isEnabled) {
-            this.isAutoscaleEnabled = Boolean.parseBoolean(isEnabled);
-        }
-        
-        public void setUse_embedded_autoscaler(String use) {
-            this.useEmbeddedAutoscaler = Boolean.parseBoolean(use);
-        }
-        
-        public void setFail_over(String isEnabled) {
-            this.failOver = Boolean.parseBoolean(isEnabled);
-        }
-
-        public void setAutoscaler_service_epr(String epr) {
-            this.autoscalerServiceEpr = epr;
-        }
-
-        public void setMb_server_url(String url) {
-            this.mbServerUrl = url;
-        }
-        
-        public String getMbServerUrl() {
-        	return mbServerUrl;
-        }
-
-		public void setAutoscaler_task_interval(String interval) {
-            this.autoscalerTaskInterval = Integer.parseInt(interval);
-        }
-
-        public void setServer_startup_delay(String delay) {
-            this.serverStartupDelay = Integer.parseInt(delay);
-        }
-        
-        public void setSession_timeout(String timeout) {
-            this.sessionTimeOut = Integer.parseInt(timeout);
-        }
-
-        public String getAlgorithm() {
-            return algorithm;
-        }
-
-        public void setAlgorithm(String algorithm) {
-            if (algorithm != null) {
-                this.algorithm = algorithm;
-            }
-        }
-
-        public int getSizeOfCache() {
-            return sizeOfCache;
-        }
-
-        public void setSize_of_cache(int sizeOfCache) {
-            this.sizeOfCache = sizeOfCache;
-        }
-
-        public String getGroupManagementAgentClass() {
-            return groupManagementAgentClass;
-        }
-        
-        public String getAutoscalerTaskClass() {
-            return autoscalerTaskClass;
-        }
-
-        public void setGroup_mgt_agent(String groupManagementAgentClass){
-            this.groupManagementAgentClass = groupManagementAgentClass;
-        }
-        
-        public void setAutoscaler_task(String autoscalerTaskClass){
-            this.autoscalerTaskClass = autoscalerTaskClass;
-        }
-    }
-
-    public class ServiceConfiguration extends Configuration implements Serializable {
-
-    	private String serviceName;
-    	
-        public String getServiceName() {
-        	return serviceName;
-        }
-
-		public void setServiceName(String name) {
-        	this.serviceName = name;
-        }
-		
-		public String getPublicIp() {
-        	return publicIp;
-        }
-
-		public void setPublic_ip(String publicIp) {
-        	this.publicIp = publicIp;
-        }
-
-		private String publicIp;
-
-		private static final long serialVersionUID = 8707314702788040116L;
-        private int minAppInstances = 1;
-        private boolean minAppInstancesSet;
-
-        private int maxAppInstances = 3;
-        private boolean maxAppInstancesSet;
-
-        private int maxRequestsPerSecond = 100;
-        private boolean maxRequestsPerSecondSet;
-        
-        private double alarmingUpperRate = 0.7;
-        private boolean alarmingUpperRateSet;
-
-        private double alarmingLowerRate = 0.2;
-        private boolean alarmingLowerRateSet;
-        
-        private double scaleDownFactor = 0.25;
-        private boolean scaleDownFactorSet;
-        
-        private int roundsToAverage = 10;
-        private boolean roundsToAverageSet;
-
-        private int instancesPerScaleUp = 1;
-        private boolean instancesPerScaleUpSet;
-
-        private int messageExpiryTime = 60000; // milliseconds
-        private boolean messageExpiryTimeSet;
-
-        private List<String> hosts = new ArrayList<String>();
-        private Map<String, String> urlSuffixes = new HashMap<String, String>();
-        private boolean hostsSet;
-
-        private String domain;
-
-        private String tenantRange;
-        private boolean tenantRangeSet;
-
-        private String subDomain = Constants.DEFAULT_SUB_DOMAIN;
-        private boolean subDomainSet;
-
-        public String getTenantRange() {
-            if (tenantRangeSet) {
-                return tenantRange;
-            } else if (defaultServiceConfig != null && defaultServiceConfig.tenantRangeSet) {
-                return defaultServiceConfig.tenantRange;
-            }
-            return tenantRange;
-        }
-
-        public String getDomain() {
-            return domain;
-        }
-
-        public List<String> getHosts() {
-            if (hostsSet) {
-                return hosts;
-            } else if (defaultServiceConfig != null && defaultServiceConfig.hostsSet) {
-                return defaultServiceConfig.hosts;
-            }
-            return hosts;
-        }
-
-        public int getMinAppInstances() {
-            if (minAppInstancesSet) {
-                return minAppInstances;
-            } else if (defaultServiceConfig != null && defaultServiceConfig.minAppInstancesSet) {
-                return defaultServiceConfig.minAppInstances;
-            }
-            return minAppInstances;
-        }
-
-        public int getMaxAppInstances() {
-            if (maxAppInstancesSet) {
-                return maxAppInstances;
-            } else if (defaultServiceConfig != null && defaultServiceConfig.maxAppInstancesSet) {
-                return defaultServiceConfig.maxAppInstances;
-            }
-            return maxAppInstances;
-        }
-
-        public int getMaxRequestsPerSecond() {
-            if (maxRequestsPerSecondSet) {
-                return maxRequestsPerSecond;
-            } else if (defaultServiceConfig != null && defaultServiceConfig.maxRequestsPerSecondSet) {
-                return defaultServiceConfig.maxRequestsPerSecond;
-            }
-            return maxRequestsPerSecond;
-        }
-
-        public int getRoundsToAverage() {
-            if (roundsToAverageSet) {
-                return roundsToAverage;
-            } else if (defaultServiceConfig != null && defaultServiceConfig.roundsToAverageSet) {
-                return defaultServiceConfig.roundsToAverage;
-            }
-            return roundsToAverage;
-        }
-
-        public int getInstancesPerScaleUp() {
-            if (instancesPerScaleUpSet) {
-                return instancesPerScaleUp;
-            } else if (defaultServiceConfig != null && defaultServiceConfig.instancesPerScaleUpSet) {
-                return defaultServiceConfig.instancesPerScaleUp;
-            }
-            return instancesPerScaleUp;
-        }
-
-        public int getMessageExpiryTime() {
-            if (messageExpiryTimeSet) {
-                return messageExpiryTime;
-            } else if (defaultServiceConfig != null && defaultServiceConfig.messageExpiryTimeSet) {
-                return defaultServiceConfig.messageExpiryTime;
-            }
-            return messageExpiryTime;
-        }
-
-        public String getSubDomain() {
-            if (subDomainSet) {
-                return subDomain;
-            } else if (defaultServiceConfig != null && defaultServiceConfig.subDomainSet) {
-                return defaultServiceConfig.subDomain;
-            }
-            return subDomain;
-        }
-
-        public void setMin_app_instances(int minAppInstances) {
-            this.minAppInstances = minAppInstances;
-            this.minAppInstancesSet = true;
-        }
-
-        public void setMax_app_instances(int maxAppInstances) {
-            if (maxAppInstances < 1) {
-                LoadBalancerConfigUtil.handleException("maxAppInstances in the autoscaler task configuration " +
-                        "should be at least 1");
-            }
-            this.maxAppInstances = maxAppInstances;
-            this.maxAppInstancesSet = true;
-        }
-        
-		public void setAlarming_upper_rate(double rate) {
-			if (rate > 0 && rate <= 1) {
-				this.alarmingUpperRate = rate;
-				this.alarmingUpperRateSet = true;
-			}
-		}
-
-        public void setAlarming_lower_rate(double rate) {
-			if (rate > 0 && rate <= 1) {
-				this.alarmingLowerRate = rate;
-				this.alarmingLowerRateSet = true;
-			}
-        }
-        
-		public void setScale_down_factor(double factor) {
-			if (factor > 0 && factor <= 1) {
-				this.scaleDownFactor = factor;
-				this.scaleDownFactorSet = true;
-			}
-		}
-        
-        public void setMax_requests_per_second(int rps) {
-            this.maxRequestsPerSecond = rps;
-            this.maxRequestsPerSecondSet = true;
-        }
-
-        public void setRounds_to_average(int roundsToAverage) {
-            this.roundsToAverage = roundsToAverage;
-            this.roundsToAverageSet = true;
-        }
-
-        public void setInstances_per_scale_up(int instancesPerScaleUp) {
-            if (instancesPerScaleUp < 1) {
-                LoadBalancerConfigUtil.handleException("instancesPerScaleUp in the autoscaler task configuration " +
-                        "should be at least 1");
-            }
-            this.instancesPerScaleUp = instancesPerScaleUp;
-            this.instancesPerScaleUpSet = true;
-        }
-
-        public void setMessage_expiry_time(int messageExpiryTime) {
-            if (messageExpiryTime < 1) {
-                LoadBalancerConfigUtil.handleException("messageExpiryTime in the autoscaler task configuration " +
-                        "should be at least 1");
-            }
-            this.messageExpiryTime = messageExpiryTime;
-            this.messageExpiryTimeSet = true;
-        }
-
-        public void setHosts(String hostsStr) {
-            // clear all unnecessary values --> property will get overwritten
-            hosts = new ArrayList<String>();
-            // there can be multiple hosts, let's find out.
-            String[] host = hostsStr.split(Constants.HOSTS_DELIMITER);
-
-            for (String string : host) {
-                if (!string.isEmpty()) {
-                    this.hosts.add(string);
-                }
-            }
-
-        }
-
-        public void setUrl_suffix(String suffix) {
-            // clear all unnecessary values --> property will get overwritten
-            //hosts = new ArrayList<String>();
-            // there can be multiple hosts, let's find out.
-            String[] suffixes = suffix.split(Constants.HOSTS_DELIMITER);
-            int count = 0;
-            if(suffixes.length == this.hosts.size()) {
-                for (String string : suffixes) {
-                    if (!string.isEmpty()) {
-                        this.urlSuffixes.put(this.hosts.get(count), string);
-                        count++;
-                    }
-                }
-            
-            } else {
-                //Error
-            }
-        }
-
-        public Map<String, String> getUrl_suffix() {
-            return this.urlSuffixes;
-        }
-
-        public void setTenant_range(String range) {
-            this.tenantRange = range;
-        }
-
-        public void setSub_domain(String subDomain) {
-            this.subDomain = subDomain;
-            this.subDomainSet = true;
-        }
-
-        public void setDomain(String domain) {
-            this.domain = domain;
-        }
-        
-        public boolean equals(ServiceConfiguration config) {
-            return this.domain.equals(config.getDomain()) &&
-                    this.subDomain.equals(config.getSubDomain());
-        }
-        
-        public int hashCode() {
-            return new HashCodeBuilder(17, 31). // two randomly chosen prime numbers
-                    append(domain).
-                    append(subDomain).
-                    toHashCode();
-        }
-
-        public double getAlarmingUpperRate() {
-            if (alarmingUpperRateSet) {
-                return alarmingUpperRate;
-            } else if (defaultServiceConfig != null && defaultServiceConfig.alarmingUpperRateSet) {
-                return defaultServiceConfig.alarmingUpperRate;
-            }
-            return alarmingUpperRate;
-        }
-
-        public double getAlarmingLowerRate() {
-            if (alarmingLowerRateSet) {
-                return alarmingLowerRate;
-            } else if (defaultServiceConfig != null && defaultServiceConfig.alarmingLowerRateSet) {
-                return defaultServiceConfig.alarmingLowerRate;
-            }
-            return alarmingLowerRate;
-        }
-
-        public double getScaleDownFactor() {
-            if (scaleDownFactorSet) {
-                return scaleDownFactor;
-            } else if (defaultServiceConfig != null && defaultServiceConfig.scaleDownFactorSet) {
-                return defaultServiceConfig.scaleDownFactor;
-            }
-            return scaleDownFactor;
-        }
-    }
-
-    public Map<String, Set<String>> getHostNamesTracker() {
-        return hostNamesTracker;
-    }
-
-
-    public Map<String, Map<String, ServiceConfiguration>> getServiceConfigurations() {
-        return serviceConfigurations;
-    }
-
-
-    public Node getRootNode() {
-        return rootNode;
-    }
-
-
-    public void setRootNode(Node rootNode) {
-        this.rootNode = rootNode;
-    }
-
-    public static void setInstance(LoadBalancerConfiguration instance) {
-        LoadBalancerConfiguration.instance = instance;
-    }
-
-	public Map<String, List<ServiceConfiguration>> getServiceNameToServiceConfigurations() {
-    	return serviceNameToServiceConfigurations;
-    }
-	
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b975aa3c/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/internal/LoadBalancerConfigurationDSComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/internal/LoadBalancerConfigurationDSComponent.java b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/internal/LoadBalancerConfigurationDSComponent.java
deleted file mode 100644
index c0f9aea..0000000
--- a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/internal/LoadBalancerConfigurationDSComponent.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
-
- *  http://www.apache.org/licenses/LICENSE-2.0
-
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.stratos.load.balancer.common.conf.internal;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.load.balancer.common.service.LoadBalancerConfigurationService;
-import org.apache.stratos.load.balancer.common.service.impl.LoadBalancerConfigurationServiceImpl;
-import org.osgi.framework.BundleContext;
-import org.osgi.service.component.ComponentContext;
-
-/**
- * Registering {@link org.apache.stratos.load.balancer.common.service.LoadBalancerConfigurationService} .
- * @scr.component name="org.wso2.carbon.lb.common" immediate="true"
- */
-public class LoadBalancerConfigurationDSComponent {
-
-    private static final Log log = LogFactory.getLog(LoadBalancerConfigurationDSComponent.class);
-
-    protected void activate(ComponentContext context) {
-        try {
-            BundleContext bundleContext = context.getBundleContext();
-            bundleContext.registerService(LoadBalancerConfigurationService.class.getName(),
-                                          new LoadBalancerConfigurationServiceImpl(), null);
-
-            log.debug("******* Load Balancer Configuration Service bundle is activated ******* ");
-        } catch (Exception e) {
-            log.error("******* Load Balancer Configuration Service bundle is failed to activate ****", e);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b975aa3c/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/structure/Node.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/structure/Node.java b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/structure/Node.java
deleted file mode 100644
index 2707612..0000000
--- a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/structure/Node.java
+++ /dev/null
@@ -1,356 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
-
- *  http://www.apache.org/licenses/LICENSE-2.0
-
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.stratos.load.balancer.common.conf.structure;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.apache.commons.lang.builder.HashCodeBuilder;
-
-/**
- * This is the basic data structure which holds a <i>Nginx</i> formatted configuration file.
- * 
- */
-public class Node implements Serializable{
-
-    private static final long serialVersionUID = 4071569903421115370L;
-
-    /**
-     * Name of this Node element
-     */
-    private String name;
-
-    /**
-     * Every node can have 0..n child nodes. 
-     * They are kept in a List.
-     */
-    private List<Node> childNodes = new ArrayList<Node>();
-
-    /**
-     * Every node can have 0..n properties. 
-     * They are kept in a Map, in the order they appear.
-     * Key: property name
-     * Value: property value
-     */
-    private Map<String, String> properties = new LinkedHashMap<String, String>();
-
-    public void setChildNodes(List<Node> childNodes) {
-        this.childNodes = childNodes;
-    }
-
-    public void setProperties(Map<String, String> properties) {
-        this.properties = properties;
-    }
-
-    /**
-     * This will convert each child Node of this Node to a String.
-     * @return a string which represents child nodes of this node.
-     */
-    public String childNodesToString(int indentation) {
-        StringBuilder childNodesString = new StringBuilder();
-        indentation++;
-        
-        for (Node node : childNodes) {
-            childNodesString.append(node.toString(indentation)+"\n");
-        }
-        
-        return childNodesString.toString();
-    }
-
-    /**
-     * This will try to find a child Node of this Node, which has the given name.
-     * @param name name of the child node to find.
-     * @return child Node object if found or else <code>null</code>.
-     */
-    public Node findChildNodeByName(String name) {
-        for (Node aNode : childNodes) {
-            if (aNode.getName().equals(name)) {
-                return aNode;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Returns the name of this Node. 
-     * @return name of the node.
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Returns child nodes List of this Node.
-     * @return List of Node
-     */
-    public List<Node> getChildNodes() {
-        return childNodes;
-    }
-
-    /**
-     * Returns properties Map of this Node.
-     * @return Map whose keys and values are String.  
-     */
-    public Map<String, String> getProperties() {
-        return properties;
-    }
-
-    /**
-     * Returns the value of a given property.
-     * @param key name of a property.
-     * @return trimmed value if the property is found in this Node, or else <code>null</code>. 
-     */
-    public String getProperty(String key) {
-        if (properties.get(key) == null) {
-            return null;
-        }
-        return properties.get(key).trim();
-    }
-
-    /**
-     * Returns all the properties of this Node as a String.
-     * Key and value of the property is separated by a tab (\t) character and
-     * each property is separated by a new line character.
-     * @param indentation relative number of tabs 
-     * @return properties of this node as a String.
-     */
-    public String propertiesToString(int indentation) {
-        
-        String indent = getIndentation(indentation);
-        
-        StringBuilder sb = new StringBuilder();
-        for (Map.Entry<String, String> entry : properties.entrySet()) {
-            // hack to get a quick fix in.
-            if (!"tenant_id".equals(entry.getKey()) && !"alias".equals(entry.getKey())) {
-                sb.append(indent + entry.getKey() + "\t" + entry.getValue() + ";\n");
-            }
-        }
-        return sb.toString();
-    }
-    
-    /**
-     * Removes the first occurrence of a node having the given name
-     * and returns the removed {@link Node}.
-     * @param name name of the child node to be removed.
-     * @return removed {@link Node} or else <code>null</code>.
-     */
-    public Node removeChildNode(String name) {
-        Node aNode = findChildNodeByName(name);
-        
-        if(aNode != null){
-            if(childNodes.remove(aNode)){
-                return aNode;
-            }
-        }
-        
-        return null;
-    }
-
-    /**
-     * Removes the first occurrence of a node equals to the given node.
-     * @param node {@link Node} to be removed.
-     * @return whether the removal is successful or not.
-     */
-    public boolean removeChildNode(Node node){
-
-        return childNodes.remove(node);
-    }
-    
-    /**
-     * Sets the name of this Node.
-     * @param name String to be set as the name.
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Appends a child node at the end of the List of child nodes of this Node, if 
-     * a similar node is not already present as a child node.
-     * @param aNode child Node to be appended.
-     */
-    public void appendChild(Node aNode) {
-        if (aNode != null && !nodeAlreadyPresent(aNode)) {
-            childNodes.add(aNode);
-        }
-    }
-    
-    /**
-     * Adds a new property to properties Map of this Node if and only if 
-     * key is not <code>null</code>.
-     * @param key name of the property to be added.
-     * @param value value of the property to be added.
-     */
-    public void addProperty(String key, String value) {
-        if (key != null) {
-            properties.put(key, value);
-        }
-    }
-    
-    /**
-     * Convert this Node to a String which is in <i>Nginx</i> format.
-     * <br/>
-     * Sample:
-     * <br></br>
-     * <code>
-     * ij {
-     * <br/>
-     * klm n;
-     * <br/>
-     * pq {
-     * <br/>
-     * rst u;
-     * <br/>
-     * }
-     * <br/>
-     * }
-     * <br/>
-     * </code>
-     */
-    public String toString() {
-        
-        String nodeString = 
-                getName()+" {\n" +
-                (propertiesToString(1)) +
-                (childNodesToString(1)) +
-                "}";
-        
-        return nodeString;
-    }
-    
-    public boolean equals(Object node) {
-        
-        if(node instanceof Node){
-            return this.getName().equals(((Node) node).getName()) &&
-                    isIdenticalProperties(this.getProperties(), ((Node) node).getProperties()) &&
-                    isIdenticalChildren(this.getChildNodes(), ((Node) node).getChildNodes());
-        }
-        
-        return false;
-        
-    }
-    
-    public int hashCode() {
-        return new HashCodeBuilder(17, 31). // two randomly chosen prime numbers
-            append(name).
-            append(properties).
-            append(childNodes).
-            toHashCode();
-    }
-    
-    private boolean isIdenticalChildren(List<Node> childNodes1, List<Node> childNodes2) {
-        
-        if(childNodes1.size() != childNodes2.size()){
-            return false;
-        }
-        
-        for (Node node1 : childNodes1) {
-            int i=0;
-            for (Node node2 : childNodes2) {
-                
-                i++;
-                if(node1.equals(node2)){
-                    break;
-                }
-                
-                if(i == childNodes1.size()){
-                    return false;
-                }
-                
-            }
-        }
-        
-        return true;
-    }
-    
-    private boolean nodeAlreadyPresent(Node aNode){
-        
-        for(Node node : this.childNodes){
-            if(node.equals(aNode)){
-                return true;
-            }
-        }
-        
-        return false;
-    }
-
-    private boolean isIdenticalProperties(Map<String, String> map1,
-        Map<String, String> map2) {
-        
-        if(map1.size() != map2.size()){
-            return false;
-        }
-        
-        for (Iterator<Entry<String, String>> iterator1 = map1.entrySet().iterator(); iterator1.hasNext();) {
-            Map.Entry<String, String> entry1 = (Map.Entry<String, String>) iterator1.next();
-            
-            int i=0;
-            
-            for(Iterator<Entry<String, String>> iterator2 = map2.entrySet().iterator(); iterator2.hasNext();) {
-                Map.Entry<String, String> entry2 = (Map.Entry<String, String>) iterator2.next();
-                
-                i++;
-                
-                if((entry1.getKey().equals(entry2.getKey()) &&
-                        entry1.getValue().equals(entry2.getValue()))){
-                    
-                    break;
-                }
-                
-                if(i == map1.size()){
-                    return false;
-                }
-                
-            }
-        }
-        
-        return true;
-    }
-
-    private String toString(int indentation){
-        
-        String indent = getIndentation(indentation-1);
-        
-        String nodeString = 
-                indent + getName()+" {\n" +
-                (propertiesToString(indentation)) +
-                (childNodesToString(indentation)) +
-                indent + "}";
-        
-        return nodeString;
-    }
-    
-    private String getIndentation(int tabs){
-        
-        StringBuilder indent = new StringBuilder("");
-        
-        for (int i = 0; i < tabs; i++) {
-            indent.append("\t");
-        }
-                
-        return indent.toString();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b975aa3c/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/structure/NodeBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/structure/NodeBuilder.java b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/structure/NodeBuilder.java
deleted file mode 100644
index 7cfbc1e..0000000
--- a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/structure/NodeBuilder.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
-
- *  http://www.apache.org/licenses/LICENSE-2.0
-
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.stratos.load.balancer.common.conf.structure;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.load.balancer.common.conf.util.Constants;
-
-/**
- * This responsible for build up a Node object from a given content.
- * Every closing brace should be in a new line.
- */
-public class NodeBuilder {
-    
-    private static final Log log = LogFactory.getLog(NodeBuilder.class);
-
-    /**
-     * This method is useful when you do not have a root node in your content.
-     * @param aNode
-     *            Node object whose name set.
-     * @param content
-     *            should be something similar to following.
-     * 
-     *            abc d;
-     *            efg h;
-     *            # comment 
-     *            ij { # comment
-     *              klm n;
-     * 
-     *              pq {
-     *                  rst u;
-     *              }
-     *            }
-     * 
-     * @return fully constructed Node
-     */
-    public static Node buildNode(Node aNode, String content) {
-
-    	if(content == null || content.isEmpty()){
-    		return aNode;
-    	}
-    	
-        String[] lines = content.split("\n");
-
-        for (int i = 0; i < lines.length; i++) {
-            String line = lines[i].trim();
-
-            // avoid line comments
-            if (!line.startsWith(Constants.NGINX_COMMENT)) {
-                
-                // skip comments in-line 
-                if(line.contains(Constants.NGINX_COMMENT)){
-                    line = line.substring(0, line.indexOf(Constants.NGINX_COMMENT));
-                }
-                
-                // another node is detected and it is not a variable starting from $
-                if (line.contains(Constants.NGINX_NODE_START_BRACE) && 
-                        !line.contains(Constants.NGINX_VARIABLE)) {
-                    
-                    try {
-                        Node childNode = new Node();
-                        childNode.setName(line.substring(0, line.indexOf(Constants.NGINX_NODE_START_BRACE)).trim());
-
-                        StringBuilder sb = new StringBuilder();
-
-                        int matchingBraceTracker = 1;
-
-                        while (!line.contains(Constants.NGINX_NODE_END_BRACE) || matchingBraceTracker != 0) {
-                            i++;
-                            if (i == lines.length) {
-                                break;
-                            }
-                            line = lines[i];
-                            if (line.contains(Constants.NGINX_NODE_START_BRACE)) {
-                                matchingBraceTracker++;
-                            }
-                            if (line.contains(Constants.NGINX_NODE_END_BRACE)) {
-                                matchingBraceTracker--;
-                            }
-                            sb.append(line + "\n");
-                        }
-
-                        childNode = buildNode(childNode, sb.toString());
-						if (aNode == null) {
-							aNode = childNode;
-						} else {
-							aNode.appendChild(childNode);
-						}
-
-                    } catch (Exception e) {
-                        String msg = "Malformatted element is defined in the configuration file. [" +
-                                i + "] \n";
-                        log.error(msg , e);
-                        throw new RuntimeException(msg + line, e);
-                    }
-
-                }
-                // this is a property
-                else {
-                    if (!line.isEmpty() && !Constants.NGINX_NODE_END_BRACE.equals(line)) {
-                        String[] prop = line.split(Constants.NGINX_SPACE_REGEX);
-                        String value = line.substring(prop[0].length(), line.indexOf(Constants.NGINX_LINE_DELIMITER)).trim();
-                        try {
-                            aNode.addProperty(prop[0], value);
-                        } catch (Exception e) {
-                            String msg = "Malformatted property is defined in the configuration file. [" +
-                                    i + "] \n";
-                            log.error(msg, e);
-                            throw new RuntimeException(msg + line, e);
-                        }
-                    }
-                }
-            
-            }
-        }
-
-        return aNode;
-
-    }
-    
-    public static Node buildNode(String content) {
-	    return buildNode(null, content);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b975aa3c/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/util/Constants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/util/Constants.java b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/util/Constants.java
deleted file mode 100644
index 61d6bb7..0000000
--- a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/util/Constants.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
-
- *  http://www.apache.org/licenses/LICENSE-2.0
-
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.stratos.load.balancer.common.conf.util;
-
-/**
- * This keeps the element names used in loadbalancer.conf file
- */
-public class Constants {
-    
-    public static final String LOAD_BALANCER_ELEMENT = "loadbalancer";
-    public static final String SERVICES_ELEMENT = "services";
-    public static final String DEFAULTS_ELEMENT = "defaults";
-    public static final String HOSTS_ELEMENT = "hosts";
-    public static final String HOSTS_DELIMITER = ",";
-    public static final String DOMAIN_ELEMENT = "domains";
-    public static final String TENANT_RANGE_ELEMENT = "tenant_range";
-    public static final String SUB_DOMAIN_ELEMENT = "sub_domain";
-    public static final String TENANT_RANGE_DELIMITER = "-";
-    public static final String UNLIMITED_TENANT_RANGE = "*";
-    public static final String AUTOSCALER_ENABLE_ELEMENT = "enable_autoscaler";
-    public static final String SUB_DOMAIN_DELIMITER = "#";
-    public static final String DEFAULT_SUB_DOMAIN = "__$default";
-    
-    /* Nginx format related constants */
-    
-    public static final String NGINX_COMMENT = "#";
-    public static final String NGINX_NODE_START_BRACE = "{";
-    public static final String NGINX_NODE_END_BRACE = "}";
-    public static final String NGINX_VARIABLE = "${";
-    public static final String NGINX_LINE_DELIMITER = ";";
-    public static final String NGINX_SPACE_REGEX = "[\\s]+";
-    
-    
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b975aa3c/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/util/HostContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/util/HostContext.java b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/util/HostContext.java
deleted file mode 100644
index f7322b1..0000000
--- a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/conf/util/HostContext.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
-
- *  http://www.apache.org/licenses/LICENSE-2.0
-
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.stratos.load.balancer.common.conf.util;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.synapse.endpoints.algorithms.AlgorithmContext;
-import org.apache.synapse.endpoints.algorithms.LoadbalanceAlgorithm;
-
-/**
- * For each unique host name defined in loadbalancer configuration, we'll generate
- * this object. 
- */
-public class HostContext {
-    
-    /**
-     * A unique identifier to identify this {@link #HostContext()}
-     */
-    private String hostName;
-    
-    /**
-     * Key - tenant id
-     * Value - <code>TenantDomainContext</code> of the corresponding tenant
-     */
-    private Map<Integer, TenantDomainContext> tenantIdToTenantDomainContextMap = new HashMap<Integer, TenantDomainContext>();
-    
-    /**
-     * AlgorithmContext of this host
-     */
-    private AlgorithmContext algorithmContext;
-    
-    /**
-     * Load balance algorithm of this host
-     */
-    private LoadbalanceAlgorithm algorithm;
-    
-    private String urlSuffix;
-    
-    public HostContext(String hostName) {
-        this.hostName = hostName;
-    }
-    
-    public void addTenantDomainContexts(List<TenantDomainContext> ctxts) {
-        
-        for (TenantDomainContext tenantDomainContext : ctxts) {
-            tenantIdToTenantDomainContextMap.put(tenantDomainContext.getTenantId(), tenantDomainContext);
-        }
-    }
-    
-    @Deprecated
-    public void addTenantDomainContext(TenantDomainContext ctxt) {
-        tenantIdToTenantDomainContextMap.put(ctxt.getTenantId(), ctxt);
-    }
-    
-    public TenantDomainContext getTenantDomainContext(int tenantId) {
-        return tenantIdToTenantDomainContextMap.get(tenantId);
-    }
-    
-    /**
-     * Returns all the {@link TenantDomainContext} entries.
-     */
-    public Collection<TenantDomainContext> getTenantDomainContexts() {
-        return tenantIdToTenantDomainContextMap.values();
-    }
-    
-    /**
-     * Given a tenant id, this will return its domain.
-     * @param tenantId 
-     * @return domain if this tenant has a dedicated one, it will be returned.
-     * If not, and there's a default (*) domain, it will be returned.
-     * If neither of the above is defined, null will be returned.
-     */
-    public String getDomainFromTenantId(int tenantId) {
-        if (tenantIdToTenantDomainContextMap.get(tenantId) == null) {
-            // if there's no specific domain for this tenant, we will redirect it to the default
-            // cluster
-            
-            if(tenantIdToTenantDomainContextMap.get(0) == null){
-                return null;
-            }
-            
-            return tenantIdToTenantDomainContextMap.get(0).getDomain();
-        }
-
-        return tenantIdToTenantDomainContextMap.get(tenantId).getDomain();
-    }
-    
-    /**
-     * Given a tenant id, this will return its sub domain.
-     * @param tenantId 
-     * @return sub_domain if this tenant has a dedicated one, it will be returned.
-     * If not, and there's a default (*) sub domain, it will be returned.
-     * If neither of the above is defined, null will be returned.
-     */
-    public String getSubDomainFromTenantId(int tenantId) {
-        if (tenantIdToTenantDomainContextMap.get(tenantId) == null) {
-            // if there's no specific domain for this tenant, we will redirect it to the default
-            // cluster
-            
-            if(tenantIdToTenantDomainContextMap.get(0) == null){
-                return null;
-            }
-            
-            return tenantIdToTenantDomainContextMap.get(0).getSubDomain();
-        }
-
-        return tenantIdToTenantDomainContextMap.get(tenantId).getSubDomain();
-    }
-
-    public String getHostName() {
-        return hostName;
-    }
-    
-    public LoadbalanceAlgorithm getAlgorithm() {
-        return algorithm;
-    }
-
-    public AlgorithmContext getAlgorithmContext() {
-        return algorithmContext;
-    }
-
-    public void setAlgorithmContext(AlgorithmContext algorithmContext) {
-        this.algorithmContext = algorithmContext;
-    }
-
-    public void setAlgorithm(LoadbalanceAlgorithm algorithm) {
-        this.algorithm = algorithm;
-    }
-
-    public Map<Integer, TenantDomainContext> getTenantIdToTenantDomainContextMap() {
-        return tenantIdToTenantDomainContextMap;
-    }
-    
-    public void setUrlSuffix(String suffix)  {
-        this.urlSuffix = suffix;
-    }
-
-    public String getUrlSuffix() {
-        return this.urlSuffix;
-    }
-
-}