view flys-client/src/main/java/de/intevation/flys/client/server/filter/NoCacheFilter.java @ 5818:a4ff4167be1e

Request feature info on all layers and show it as html if the server does not return valid gml. Non queryable layers produce an error message when the request fails. This is good enough
author Andre Heinecke <aheinecke@intevation.de>
date Wed, 24 Apr 2013 17:33:27 +0200
parents 8af500d62098
children
line wrap: on
line source
package de.intevation.flys.client.server.filter;

import java.io.IOException;
import java.util.Date;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

/** ServletFilter to avoid caching for GWTs *.nocache.* files. */
public class NoCacheFilter implements Filter {

    private static final long DAY = 86400000L;

    private static final String NO_CACHE = ".nocache.";

    private static Logger log = Logger.getLogger(NoCacheFilter.class);

    /**
     * Initialize.
     */
    @Override
    public void init(FilterConfig config)
    throws ServletException
    {
    }


    /**
     * Called when filter in chain invoked.
     * @param req request to servlet
     * @param resp response of servlet
     * @param chain the filter chain
     */
    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
    throws IOException, ServletException
    {
        HttpServletRequest httpreq = (HttpServletRequest)req;
        String uri = httpreq.getRequestURI();

        if (uri.contains(NO_CACHE)) {
            log.debug("Set no-cache for " + uri);

            Date now = new Date();
            HttpServletResponse httpresp = (HttpServletResponse)resp;
            httpresp.setDateHeader("Date", now.getTime());
            httpresp.setDateHeader("Expires", now.getTime() - DAY);
            httpresp.setHeader("Pragma", "no-cache");
            httpresp.setHeader("Cache-control",
                    "no-cache, no-store, must-revalidate");
        }

        chain.doFilter(req, resp);
    }


    /**
     * Do nothing at destruction.
     */
    @Override
    public void destroy() {
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org