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