package com.hundsun.jresplus.web.adapter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.web.servlet.ModelAndView;
import com.hundsun.jresplus.beans.ObjectFactory;
import com.hundsun.jresplus.web.contain.Contain;
import com.hundsun.jresplus.web.interceptors.HandlerInterceptor;
import com.hundsun.jresplus.web.servlet.MediaTypesHandler;
/**
*
* @author LeoHu copy sagahl
*
*/
public class HandlerInterceptorAdapter extends
org.springframework.web.servlet.handler.HandlerInterceptorAdapter {
private MediaTypesHandler mediaTypesHandler;
@Value("${response.out.charset}")
private String outCharset;
public void setMediaTypesHandler(MediaTypesHandler mediaTypesHandler) {
this.mediaTypesHandler = mediaTypesHandler;
}
private List<HandlerInterceptor> interceptors = new ArrayList<HandlerInterceptor>();
public void setObjectFactory(ObjectFactory objectFactory) {
this.interceptors = objectFactory
.getBeansOfType4List(HandlerInterceptor.class);
}
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
if (Contain.isInContain(request) == false) {
List<MediaType> list = mediaTypesHandler.getMediaTypes(request);
response.setContentType(list.get(0).toString() + ";charset="
+ outCharset);
}
if (interceptors != null) {
for (HandlerInterceptor interceptor : interceptors) {
if (interceptor.preHandle(request, response, handler) == false) {
return false;
}
}
}
return super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
if (interceptors != null) {
for (HandlerInterceptor interceptor : interceptors) {
interceptor
.postHandle(request, response, handler, modelAndView);
}
}
}
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
if (interceptors != null) {
for (HandlerInterceptor interceptor : interceptors) {
interceptor.afterCompletion(request, response, handler, ex);
}
}
}
}