1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.web.servlet.handler;
18
19 import javax.servlet.http.HttpServletRequest;
20 import javax.servlet.http.HttpServletResponse;
21
22 import org.springframework.util.Assert;
23 import org.springframework.web.context.request.AsyncWebRequestInterceptor;
24 import org.springframework.web.context.request.WebRequestInterceptor;
25 import org.springframework.web.servlet.AsyncHandlerInterceptor;
26 import org.springframework.web.servlet.ModelAndView;
27
28
29
30
31
32
33
34
35
36
37 public class WebRequestHandlerInterceptorAdapter implements AsyncHandlerInterceptor {
38
39 private final WebRequestInterceptor requestInterceptor;
40
41
42
43
44
45
46 public WebRequestHandlerInterceptorAdapter(WebRequestInterceptor requestInterceptor) {
47 Assert.notNull(requestInterceptor, "WebRequestInterceptor must not be null");
48 this.requestInterceptor = requestInterceptor;
49 }
50
51
52 @Override
53 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
54 throws Exception {
55
56 this.requestInterceptor.preHandle(new DispatcherServletWebRequest(request, response));
57 return true;
58 }
59
60 @Override
61 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
62 throws Exception {
63
64 this.requestInterceptor.postHandle(new DispatcherServletWebRequest(request, response),
65 (modelAndView != null && !modelAndView.wasCleared() ? modelAndView.getModelMap() : null));
66 }
67
68 @Override
69 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
70 throws Exception {
71
72 this.requestInterceptor.afterCompletion(new DispatcherServletWebRequest(request, response), ex);
73 }
74
75 @Override
76 public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) {
77 if (this.requestInterceptor instanceof AsyncWebRequestInterceptor) {
78 AsyncWebRequestInterceptor asyncInterceptor = (AsyncWebRequestInterceptor) this.requestInterceptor;
79 DispatcherServletWebRequest webRequest = new DispatcherServletWebRequest(request, response);
80 asyncInterceptor.afterConcurrentHandlingStarted(webRequest);
81 }
82 }
83
84 }