Package org.geoserver.printing

Source Code of org.geoserver.printing.PrintingServletWrappingController

/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
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.geoserver.data.util.IOUtils;
import org.geoserver.platform.GeoServerExtensions;
import org.geoserver.platform.GeoServerResourceLoader;
import org.geoserver.platform.resource.Paths;
import org.geoserver.platform.resource.Resource;
import org.geoserver.platform.resource.Resource.Type;

/**
* 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 {
            GeoServerResourceLoader loader = GeoServerExtensions.bean(GeoServerResourceLoader.class);
            String configPath = Paths.path("printing", Paths.convert(configProp));
            Resource config = loader.get(configPath);

            if (config.getType() == Type.UNDEFINED) {
                InputStream conf = getClass().getResourceAsStream("default-config.yaml");
                IOUtils.copy(conf, config.file());
            }
            File qualifiedConfig = config.file();
            if (!qualifiedConfig.canRead()) {
                LOG.warning("Printing module missing its configuration.  Any actions it takes will fail.");
                return;
            }
            initParameters.setProperty("config", qualifiedConfig.getCanonicalPath());
        } catch (java.io.IOException e) {
            LOG.warning("Unable to calcule canonical path for MapFish printing servlet. "
                    + "Module will fail when run.  IO Exception is: " + e);
        } catch (Exception e) {
            LOG.warning("Unable to access/create config directory for MapFish printing module."
                    + "Module will fail when run. Config exception is: " + e);
        }
        super.setInitParameters(initParameters);
    }
}
TOP

Related Classes of org.geoserver.printing.PrintingServletWrappingController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.