1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.shiro.guice.web;
20
21 import javax.servlet.*;
22 import java.io.IOException;
23 import java.util.Iterator;
24
25 class SimpleFilterChain implements FilterChain {
26
27
28 private final FilterChain originalChain;
29 private final Iterator<? extends Filter> chain;
30
31 private boolean originalCalled = false;
32
33 public SimpleFilterChain(FilterChain originalChain, Iterator<? extends Filter> chain) {
34 this.originalChain = originalChain;
35 this.chain = chain;
36 }
37
38 public void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException {
39 if (chain.hasNext()) {
40 Filter filter = chain.next();
41 filter.doFilter(request, response, this);
42 } else if (!originalCalled) {
43 originalCalled = true;
44 originalChain.doFilter(request, response);
45 }
46 }
47
48
49
50
51
52 Iterator<? extends Filter> getFilters() {
53 return chain;
54 }
55
56 }