/* Copyright (c) 2011 GeoSolutions - http://www.geo-solutions.it/. All rights reserved. * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package it.geosolutions.geoserver.jms.impl.utils; import it.geosolutions.geoserver.jms.configuration.EmbeddedBrokerConfiguration; import it.geosolutions.geoserver.jms.configuration.JMSConfiguration; import java.io.File; import java.io.IOException; import java.util.Properties; import org.geoserver.data.util.IOUtils; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import org.springframework.util.PropertiesPersister; public class JMSPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer implements InitializingBean { private final JMSConfiguration config; private final Resource defaults; public JMSPropertyPlaceholderConfigurer(Resource defaultFile, JMSConfiguration config) throws IOException { if (!defaultFile.exists()) { throw new IOException( "Unable to locate the default properties file at:" + defaultFile); } this.defaults = defaultFile; this.config = config; } public Properties[] getProperties() { return localProperties; } @Override public void afterPropertiesSet() throws Exception { File properties = new File(config.getConfiguration(EmbeddedBrokerConfiguration.EMBEDDED_BROKER_PROPERTIES_KEY).toString()); if (!properties.isAbsolute() && !properties.isFile()) { // try to resolve as absolute properties = new File(JMSConfiguration.getConfigPathDir(),properties.getPath()); if (!properties.isFile()) { // copy the defaults IOUtils.copy(defaults.getFile(), properties); } } final Resource res = new FileSystemResource(properties); super.setLocation(res); // make sure the activemq.base is set to a valuable default final Properties props=new Properties(); props.setProperty("activemq.base", (String)config.getConfiguration("CLUSTER_CONFIG_DIR")); props.setProperty("instanceName", (String)config.getConfiguration("instanceName")); setProperties(props); } @Override protected String resolvePlaceholder(String placeholder, Properties props, int systemPropertiesMode) { // TODO Auto-generated method stub return super.resolvePlaceholder(placeholder, props, systemPropertiesMode); } @Override protected String resolvePlaceholder(String placeholder, Properties props) { // TODO Auto-generated method stub return super.resolvePlaceholder(placeholder, props); } @Override protected String resolveSystemProperty(String key) { // TODO Auto-generated method stub return super.resolveSystemProperty(key); } @Override protected void convertProperties(Properties props) { // TODO Auto-generated method stub super.convertProperties(props); } @Override protected String convertProperty(String propertyName, String propertyValue) { // TODO Auto-generated method stub return super.convertProperty(propertyName, propertyValue); } @Override protected String convertPropertyValue(String originalValue) { // TODO Auto-generated method stub return super.convertPropertyValue(originalValue); } @Override protected void loadProperties(Properties props) throws IOException { // TODO Auto-generated method stub super.loadProperties(props); } @Override protected Properties mergeProperties() throws IOException { // TODO Auto-generated method stub return super.mergeProperties(); } @Override public void setProperties(Properties properties) { // TODO Auto-generated method stub super.setProperties(properties); } @Override public void setPropertiesArray(Properties[] propertiesArray) { // TODO Auto-generated method stub super.setPropertiesArray(propertiesArray); } @Override public void setPropertiesPersister(PropertiesPersister propertiesPersister) { // TODO Auto-generated method stub super.setPropertiesPersister(propertiesPersister); } }