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.lib;
21
22 import java.io.IOException;
23
24 import javax.servlet.Filter;
25 import javax.servlet.FilterChain;
26 import javax.servlet.FilterConfig;
27 import javax.servlet.ServletException;
28 import javax.servlet.ServletRequest;
29 import javax.servlet.ServletResponse;
30
31 /***
32 * Compose two filter objects together, as if filter2 is nested within filter1.
33 */
34 public abstract class CompoundFilter implements Filter
35 {
36 private final Filter filter1;
37 private final Filter filter2;
38
39 public CompoundFilter(Filter filter1, Filter filter2)
40 {
41 this.filter1 = filter1;
42 this.filter2 = filter2;
43 }
44
45 public void init(FilterConfig filterConfig) throws ServletException
46 {
47 filter1.init(filterConfig);
48 filter2.init(filterConfig);
49 }
50
51 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException
52 {
53 FilterChain chain = new FilterChain()
54 {
55 public void doFilter(ServletRequest req, ServletResponse rsp) throws IOException, ServletException
56 {
57 filter2.doFilter(req, rsp, filterChain);
58 }
59
60 };
61
62 filter1.doFilter(servletRequest, servletResponse, chain);
63 }
64
65 public void destroy()
66 {
67 filter2.destroy();
68 filter1.destroy();
69 }
70 }