1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.module.blossom.support;
35
36 import java.io.IOException;
37
38 import javax.servlet.RequestDispatcher;
39 import javax.servlet.ServletException;
40 import javax.servlet.ServletRequest;
41 import javax.servlet.ServletResponse;
42 import javax.servlet.http.HttpServletRequest;
43
44 import org.springframework.web.util.WebUtils;
45
46
47
48
49
50
51 public class IncludeRequestWrapper extends SpecialAttributeRequestWrapper {
52
53 public IncludeRequestWrapper(HttpServletRequest request, String requestUri, String contextPath, String servletPath, Object pathInfo, String queryString) {
54 super(request);
55 setSpecialAttribute(WebUtils.INCLUDE_REQUEST_URI_ATTRIBUTE, requestUri);
56 setSpecialAttribute(WebUtils.INCLUDE_CONTEXT_PATH_ATTRIBUTE, contextPath);
57 setSpecialAttribute(WebUtils.INCLUDE_SERVLET_PATH_ATTRIBUTE, servletPath);
58 setSpecialAttribute(WebUtils.INCLUDE_PATH_INFO_ATTRIBUTE, pathInfo);
59 setSpecialAttribute(WebUtils.INCLUDE_QUERY_STRING_ATTRIBUTE, queryString);
60 }
61
62 @Override
63 public RequestDispatcher getRequestDispatcher(final String path) {
64
65 if (!isEnabled()) {
66 return super.getRequestDispatcher(path);
67 }
68
69 final RequestDispatcher dispatcher = super.getRequestDispatcher(path);
70
71 return new RequestDispatcher() {
72
73 @Override
74 public void forward(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
75 dispatcher.forward(servletRequest, servletResponse);
76 }
77
78 @Override
79 public void include(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
80 setEnabled(false);
81 try {
82 dispatcher.include(servletRequest, servletResponse);
83 } finally {
84 setEnabled(true);
85 }
86 }
87 };
88 }
89 }