package org.geoserver.printing; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.Properties; import java.util.logging.Logger; import org.springframework.web.servlet.mvc.ServletWrappingController; import org.vfny.geoserver.global.GeoserverDataDirectory; import org.geoserver.data.util.IOUtils; /** * Wrapper for Spring's ServletWrappingController to allow use of GeoServer's config dir. * * @author Alan Gerber, The Open Planning Project * */ public class PrintingServletWrappingController extends ServletWrappingController { private Logger LOG = org.geotools.util.logging.Logging.getLogger("org.geoserver.printing"); public void setInitParameters(Properties initParameters) { // find the config parameter and update it so it points to // $GEOSERVER_DATA_DIR/printing/$CONFIG String configProp = initParameters.getProperty("config"); try { File dir = GeoserverDataDirectory.findCreateConfigDir("printing"); File qualifiedConfig = new File(dir, configProp); if (!qualifiedConfig.exists()) { InputStream conf = getClass().getResourceAsStream("default-config.yaml"); IOUtils.copy(conf, qualifiedConfig); } if (!qualifiedConfig.canRead()) { LOG.warning("Printing module missing its configuration. Any actions it takes will fail."); return; } initParameters.setProperty("config", qualifiedConfig.getCanonicalPath()); } catch(org.vfny.geoserver.global.ConfigurationException e){ LOG.warning("Explosion while attempting to access/create config directory for MapFish " + "printing module. Module will fail when run. Config exception is: " + e); } catch(java.io.IOException e){ LOG.warning("Explosion while calculating canonical path for MapFish printing servlet. " + "Module will fail when run. IO Exception is: " + e); } super.setInitParameters(initParameters); } }