view gwt-client/src/main/java/org/dive4elements/river/client/server/filter/NoCacheFilter.java @ 5838:5aa05a7a34b7

Rename modules to more fitting names.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 15:23:37 +0200
parents flys-client/src/main/java/org/dive4elements/river/client/server/filter/NoCacheFilter.java@821a02bbfb4e
children 172338b1407f
line wrap: on
line source
package org.dive4elements.river.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