All Downloads are FREE. Search and download functionalities are using the official Maven repository.

webit.script.web.WebEngineManager Maven / Gradle / Ivy

There is a newer version: 1.5.2
Show newest version
// Copyright (c) 2013, Webit Team. All Rights Reserved.
package webit.script.web;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletResponse;
import webit.script.Engine;

/**
 *
 * @author Zqq
 */
public class WebEngineManager {

    private final static String DEFAULT_CONFIG = "/WEB-INF/webit-script-webpage.props";
    private String configPath = DEFAULT_CONFIG;
    private final ServletContextProvider servletContextProvider;
    private Map extraProperties;
    private Engine engine;

    public WebEngineManager(ServletContextProvider servletContextAware) {
        this.servletContextProvider = servletContextAware;
    }

    public WebEngineManager(ServletContext servletContext) {
        this.servletContextProvider = new DirectServletContextProvider(servletContext);
    }

    private void checkExtraProperties() {
        if (this.extraProperties == null) {
            this.extraProperties = new HashMap();
        }
    }

    public WebEngineManager setProperties(String key, Object value) {
        checkExtraProperties();
        this.extraProperties.put(key, value);
        return this;
    }

    public WebEngineManager setProperties(Map map) {
        checkExtraProperties();
        this.extraProperties.putAll(map);
        return this;
    }

    public WebEngineManager appendProperties(String key, Object value) {
        return setProperties(key.concat("+"), value);
    }

    public Object removeProperties(String key) {
        checkExtraProperties();
        return this.extraProperties.remove(key);
    }

    public void setConfigPath(String configPath) {
        this.configPath = configPath;
    }

    public void resetEngine() {
        this.engine = null;
    }

    public Engine getEngine() {
        Engine engine;
        if ((engine = this.engine) != null) {
            return engine;
        } else {
            return this.engine = ServletEngineUtil.createEngine(
                    this.servletContextProvider.getServletContext(),
                    this.configPath,
                    this.extraProperties);
        }
    }

    public void renderTemplate(final String name, final Map parameters, final HttpServletResponse response) throws IOException {
        getEngine()
                .getTemplate(name)
                .merge(parameters, response.getOutputStream());
    }

    public static interface ServletContextProvider {

        ServletContext getServletContext();
    }

    public static class DirectServletContextProvider implements ServletContextProvider {

        private final ServletContext servletContext;

        public DirectServletContextProvider(ServletContext servletContext) {
            this.servletContext = servletContext;
        }

        public ServletContext getServletContext() {
            return this.servletContext;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy