package jeffaschenk.commons.environment; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.parsing.BeanDefinitionParsingException; import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.io.ClassPathResource; /** * SetUpSpringContainerBootStrap Utility Class. Provides Spring+AOP+Hibernate * configuration and setup as underlying Persistence Manager via Injection for a * non-container Environment only. * * @author jeffaschenk@gmail.com * @version $Id: SetUpSpringContainerBootStrap.java 8201 2011-05-17 19:58:21Z jschenk $ */ public class SetUpSpringContainerBootStrap { /** * Logging */ private final static org.slf4j.Logger logger = LoggerFactory.getLogger(SetUpSpringContainerBootStrap.class); // ******************************************* // Spring+AOP+Hibernate Default configurations private static final String defaultEnvironmentProperties = "TouchPointEnvironmentProperties.xml"; private static final String defaultDAOBeans = "TouchPointDAOBeans.xml"; private static final String defaultSecurity = "TouchPointSecurity.xml"; private static final String defaultJMXContext = "TouchPointJMX.xml"; private static final String[] defaultBeanDefinitionsToLoad = new String[]{defaultEnvironmentProperties, defaultDAOBeans, defaultSecurity, defaultJMXContext}; private static String[] beanDefinitionsToLoad = defaultBeanDefinitionsToLoad; /** * Provides an Initialization point for the Spring Framework container. A * benign constructor which provides us away to allow our static definition * to be instantiated. */ public static AbstractApplicationContext init() { return buildContext(); } public static void setBeanDefinitionsToLoad(String[] beanDefinitionsToLoad) { if (beanDefinitionsToLoad == null) throw new IllegalArgumentException("Null not acceptable"); SetUpSpringContainerBootStrap.beanDefinitionsToLoad = beanDefinitionsToLoad; } public static void restoreDefaultBeansToLoad() { beanDefinitionsToLoad = defaultBeanDefinitionsToLoad; } // ****************************************** // Private Helper Method. // ****************************************** /** * Build Context */ private static AbstractApplicationContext buildContext() { // ************************************* // Build our Initial Application Context AbstractApplicationContext ctx = null; try { ctx = new ClassPathXmlApplicationContext(beanDefinitionsToLoad); } catch (final Exception e) { logger .error( "Application Context Initialization Failed!", e); throw new RuntimeException( "Unable to initialize due to possible Spring configuration Issue!"); } // End of Exception Processing. logger.info("Application Context Bootstrapped Successfully."); return ctx; } /** * Wrapper for Load Bean Definitions * * @param xmlReader * @param resourceName */ private static void loadBeanDefinitions(XmlBeanDefinitionReader xmlReader, String resourceName) throws RuntimeException { try { xmlReader.loadBeanDefinitions(new ClassPathResource(resourceName)); } catch (final BeanDefinitionParsingException bdpe) { if (resourceName.equalsIgnoreCase(defaultSecurity)) { return; } else { throw bdpe; } } } } // /:> End of SetUpSpringContainerBootStrap class.