teichmann@5835: package org.dive4elements.river.client.server.filter; bjoern@4423: bjoern@4423: import java.io.IOException; bjoern@4423: import java.util.Date; bjoern@4423: bjoern@4423: import javax.servlet.Filter; bjoern@4423: import javax.servlet.FilterChain; bjoern@4423: import javax.servlet.FilterConfig; bjoern@4423: import javax.servlet.ServletException; bjoern@4423: import javax.servlet.ServletRequest; bjoern@4423: import javax.servlet.ServletResponse; bjoern@4423: import javax.servlet.http.HttpServletRequest; bjoern@4423: import javax.servlet.http.HttpServletResponse; bjoern@4423: bjoern@4423: import org.apache.log4j.Logger; bjoern@4423: bjoern@4423: /** ServletFilter to avoid caching for GWTs *.nocache.* files. */ bjoern@4423: public class NoCacheFilter implements Filter { bjoern@4423: bjoern@4423: private static final long DAY = 86400000L; bjoern@4423: bjoern@4423: private static final String NO_CACHE = ".nocache."; bjoern@4423: bjoern@4423: private static Logger log = Logger.getLogger(NoCacheFilter.class); bjoern@4423: bjoern@4423: /** bjoern@4423: * Initialize. bjoern@4423: */ bjoern@4423: @Override bjoern@4423: public void init(FilterConfig config) bjoern@4423: throws ServletException bjoern@4423: { bjoern@4423: } bjoern@4423: bjoern@4423: bjoern@4423: /** bjoern@4423: * Called when filter in chain invoked. bjoern@4423: * @param req request to servlet bjoern@4423: * @param resp response of servlet bjoern@4423: * @param chain the filter chain bjoern@4423: */ bjoern@4423: @Override bjoern@4423: public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) bjoern@4423: throws IOException, ServletException bjoern@4423: { bjoern@4423: HttpServletRequest httpreq = (HttpServletRequest)req; bjoern@4423: String uri = httpreq.getRequestURI(); bjoern@4423: bjoern@4423: if (uri.contains(NO_CACHE)) { bjoern@4423: log.debug("Set no-cache for " + uri); bjoern@4423: bjoern@4423: Date now = new Date(); bjoern@4423: HttpServletResponse httpresp = (HttpServletResponse)resp; bjoern@4423: httpresp.setDateHeader("Date", now.getTime()); bjoern@4423: httpresp.setDateHeader("Expires", now.getTime() - DAY); bjoern@4423: httpresp.setHeader("Pragma", "no-cache"); bjoern@4423: httpresp.setHeader("Cache-control", bjoern@4423: "no-cache, no-store, must-revalidate"); bjoern@4423: } bjoern@4423: bjoern@4423: chain.doFilter(req, resp); bjoern@4423: } bjoern@4423: bjoern@4423: bjoern@4423: /** bjoern@4423: * Do nothing at destruction. bjoern@4423: */ bjoern@4423: @Override bjoern@4423: public void destroy() { bjoern@4423: } bjoern@4423: } bjoern@4423: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :