All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cloud.agileframework.mvc.container.CustomAsyncHandlerInterceptor Maven / Gradle / Ivy

package cloud.agileframework.mvc.container;

import cloud.agileframework.mvc.param.AgileReturn;
import cloud.agileframework.mvc.provider.HandlerProvider;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.AsyncHandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author 佟盟
 * 日期 2020/7/13 13:58
 * 描述 TODO
 * @version 1.0
 * @since 1.0
 */
public class CustomAsyncHandlerInterceptor implements AsyncHandlerInterceptor {
    @Autowired
    private ObjectProvider handlerProviders;

    @Override
    public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    }

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        if (!(handler instanceof HandlerMethod)) {
            return true;
        }
        List handlerProviderList = handlerProviders.orderedStream().collect(Collectors.toList());
        for (HandlerProvider handlerProvider : handlerProviderList) {
            handlerProvider.before(request, response, ((HandlerMethod) handler).getMethod());
        }
        return true;
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        AgileReturn.clear();
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy