package org.xmx0632.deliciousfruit.api.v1.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import org.xmx0632.deliciousfruit.api.v1.helper.ApiStatHelper;
import org.xmx0632.deliciousfruit.api.v1.helper.ApiStatService;
@Component
public class ApiStatInterceptor implements HandlerInterceptor {
private static Logger log = LoggerFactory
.getLogger(ApiStatInterceptor.class);
@Autowired
private ApiStatService apiStatService;
public void setApiStatService(ApiStatService apiStat) {
this.apiStatService = apiStat;
}
public ApiStatInterceptor() {
}
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
String handlerValue = handler.toString();
String[] methodStringArray = StringUtils.split(handlerValue);
String methodName = methodStringArray[methodStringArray.length - 1];
String apiName = ApiStatHelper.getShortMethodName(methodName);
int counter = apiStatService.increaseCounter(apiName);
log.debug("apiName:{} current:{}", apiName, counter);
return true;
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
}
}