+++ /dev/null
-package de.juplo.accelerator;
-
-import de.juplo.accelerator.AcceleratorFilter.AccelerationWrapper;
-import de.juplo.accelerator.annotations.Cacheable;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.servlet.HandlerInterceptor;
-import org.springframework.web.servlet.ModelAndView;
-
-/**
- *
- * @author kai
- */
-public class CacheControlInterceptor implements HandlerInterceptor {
- private final static Logger log = LoggerFactory.getLogger(CacheControlInterceptor.class);
-
-
- private CacheControl cacheControl;
-
-
- @Override
- public boolean preHandle(
- HttpServletRequest request,
- HttpServletResponse response,
- Object handler
- ) throws Exception
- {
- Cacheable cacheable = handler.getClass().getAnnotation(Cacheable.class);
- if (cacheable == null) {
- /** Der Handler ist nicht mit @Cacheable annotiert: keine Dekorationen anbringen! */
- return true;
- }
-
- AccelerationWrapper wrapper = (AccelerationWrapper)request.getAttribute(AcceleratorFilter.RESPONSE_WRAPPER);
- if (wrapper != null)
- wrapper.supressGuessing();
-
- /** CacheControll initialisieren (Handler nach annotierte Methoden scannen etc.) */
- cacheControl.init(handler, wrapper);
-
- if (cacheable.eager()) {
- return cacheControl.decorate(request, response);
- }
- else {
- return true;
- }
- }
-
- @Override
- public void postHandle(
- HttpServletRequest request,
- HttpServletResponse response,
- Object handler,
- ModelAndView modelAndView
- ) throws Exception
- {
- /**
- * Dekoration nur dann anstossen, wenn sie nicht bereits von dem
- * AcceleratorFilter ausgelöst wird.
- */
- if (request.getAttribute(AcceleratorFilter.RESPONSE_WRAPPER) == null)
- cacheControl.decorate(request, response);
- }
-
- @Override
- public void afterCompletion(
- HttpServletRequest request,
- HttpServletResponse response,
- Object handler, Exception ex
- ) throws Exception
- {
- cacheControl.release();
- }
-
-
- @Autowired
- public void setCacheControl(CacheControl cacheControl) {
- this.cacheControl = cacheControl;
- }
-}