1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.orchestra.requestParameterProvider;
21
22 import javax.servlet.Filter;
23 import javax.servlet.FilterChain;
24 import javax.servlet.FilterConfig;
25 import javax.servlet.ServletException;
26 import javax.servlet.ServletRequest;
27 import javax.servlet.ServletResponse;
28 import javax.servlet.http.HttpServletRequest;
29 import javax.servlet.http.HttpServletResponse;
30
31 import org.apache.myfaces.orchestra.lib._UrlMatcher;
32
33 import java.io.IOException;
34
35
36
37
38
39 public class RequestParameterServletFilter implements Filter
40 {
41 public final static String REQUEST_PARAM_FILTER_CALLED =
42 RequestParameterServletFilter.class.getName() + ".CALLED";
43 public final static String REQUEST_PARAM_RESPONSE_WRAPPED =
44 RequestParameterServletFilter.class.getName() + ".WRAPPED";
45
46 private _UrlMatcher urlMatcher;
47
48 public RequestParameterServletFilter()
49 {
50 }
51
52 public void init(FilterConfig filterConfig)
53 {
54 urlMatcher = new _UrlMatcher(filterConfig);
55 }
56
57 public void doFilter(ServletRequest servletRequest,
58 ServletResponse servletResponse,
59 FilterChain filterChain) throws IOException, ServletException
60 {
61 if (urlMatcher.accept(servletRequest) && servletResponse instanceof HttpServletResponse)
62 {
63 HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
64 if (!Boolean.TRUE.equals(httpServletRequest.getAttribute(REQUEST_PARAM_FILTER_CALLED)))
65 {
66 httpServletRequest.setAttribute(REQUEST_PARAM_FILTER_CALLED, Boolean.TRUE);
67 servletResponse = new RequestParameterResponseWrapper((HttpServletResponse) servletResponse);
68 }
69 }
70
71 filterChain.doFilter(servletRequest, servletResponse);
72 }
73
74 public void destroy()
75 {
76 }
77 }