1 package de.halbekunst.juplo.cachecontrol;
3 import de.halbekunst.juplo.cachecontrol.annotations.Cacheable;
4 import javax.servlet.http.HttpServletRequest;
5 import javax.servlet.http.HttpServletResponse;
6 import org.slf4j.Logger;
7 import org.slf4j.LoggerFactory;
8 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.web.servlet.HandlerInterceptor;
10 import org.springframework.web.servlet.ModelAndView;
16 public class CacheControlInterceptor implements HandlerInterceptor {
17 private final static Logger log = LoggerFactory.getLogger(CacheControlInterceptor.class);
20 private CacheControl cacheControl;
24 public boolean preHandle(
25 HttpServletRequest request,
26 HttpServletResponse response,
30 Cacheable cacheable = handler.getClass().getAnnotation(Cacheable.class);
31 if (cacheable == null) {
32 /** Der Handler ist nicht mit @Cacheable annotiert: keine Dekorationen anbringen! */
36 /** CacheControll initialisieren (Handler nach annotierte Methoden scannen etc.) */
37 cacheControl.init(handler);
39 if (cacheable.eager()) {
40 return cacheControl.decorate(request, response, handler);
48 public void postHandle(
49 HttpServletRequest request,
50 HttpServletResponse response,
52 ModelAndView modelAndView
55 cacheControl.decorate(request, response, handler);
59 public void afterCompletion(
60 HttpServletRequest request,
61 HttpServletResponse response,
62 Object handler, Exception ex
65 cacheControl.release();
70 public void setCacheControl(CacheControl cacheControl) {
71 this.cacheControl = cacheControl;