/**
* Balero CMS Project: Proyecto 100% Mexicano de código libre.
*
* @author Anibal Gomez <anibalgomez@icloud.com>
* @copyright Copyright (C) 2015 Neblina Software. Derechos reservados.
* @license Licencia Pública GNU versión 3 o superior; vea LICENSE.txt
*/
package com.neblina.balero.interceptors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
/**
* Adapted for Spring Boot
* @author Anibal Gomez
*
* Based on:
* http://www.concretepage.com/spring/spring-mvc/spring-handlerinterceptor-annotation-example-webmvcconfigureradapter
* http://www.mkyong.com/spring-mvc/spring-mvc-handler-interceptors-example/
*/
public class ExecuteTimeInterceptor extends HandlerInterceptorAdapter{
private final Logger log = LoggerFactory.getLogger(ExecuteTimeInterceptor.class);
@Override
//before the actual handler will be executed
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) {
try {
long startTime = System.currentTimeMillis();
request.setAttribute("startTime", startTime);
} catch (Exception e) {
// View Layer Do Not Exists. Do Nothing
// Or Handle If You Want (Unnecessary)
}
return true;
}
@Override
//after the handler is executed
public void postHandle(
HttpServletRequest request, HttpServletResponse response,
Object handler, ModelAndView modelAndView) {
try {
long startTime = (Long)request.getAttribute("startTime");
long endTime = System.currentTimeMillis();
long executeTime = endTime - startTime;
//modified the exisitng modelAndView
modelAndView.addObject("executeTime", executeTime);
} catch (Exception e) {
// View Layer Do Not Exists. Do Nothing
// Or Handle If You Want (Unnecessary)
}
}
}