package org.ow2.choreos.ee.bus.selector; import org.apache.log4j.Logger; import org.ow2.choreos.ee.config.ChoreographyDeployerConfiguration; import org.ow2.choreos.utils.Configuration; import org.ow2.choreos.utils.SingletonsFactory; public class ESBNodeSelectorFactory extends SingletonsFactory<ESBNodeSelector> { private static final String BUS_POLICY_PROPERTY = "BUS_POLICY"; private static final String CLASS_MAP_FILE_PATH = "bus_policies.properties"; private static ESBNodeSelectorFactory INSTANCE; private static Logger logger = Logger.getLogger(ESBNodeSelectorFactory.class); public static ESBNodeSelectorFactory getFactoryInstance() { if (INSTANCE == null) { synchronized (ESBNodeSelectorFactory.class) { if (INSTANCE == null) createNewInstance(); } } return INSTANCE; } private static void createNewInstance() { Configuration conf = new Configuration(CLASS_MAP_FILE_PATH); INSTANCE = new ESBNodeSelectorFactory(conf); } private ESBNodeSelectorFactory(Configuration classMap) { super(classMap); } public ESBNodeSelector getNodeSelectorInstance() { String selectorType = ChoreographyDeployerConfiguration.get(BUS_POLICY_PROPERTY); if (selectorType == null) { logger.error(BUS_POLICY_PROPERTY + " property not set on properties file!"); throw new IllegalArgumentException(); } return getInstance(selectorType); } }