1 package ch.qos.logback.access.servlet;
2
3 import java.io.IOException;
4
5 import javax.servlet.Filter;
6 import javax.servlet.FilterChain;
7 import javax.servlet.FilterConfig;
8 import javax.servlet.ServletException;
9 import javax.servlet.ServletRequest;
10 import javax.servlet.ServletResponse;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13
14 import ch.qos.logback.access.AccessConstants;
15
16 public class TeeFilter implements Filter {
17
18 public void destroy() {
19
20 }
21
22 public void doFilter(ServletRequest request, ServletResponse response,
23 FilterChain filterChain) throws IOException, ServletException {
24
25 if (request instanceof HttpServletRequest) {
26 try {
27 TeeHttpServletRequest teeRequest = new TeeHttpServletRequest(
28 (HttpServletRequest) request);
29 TeeHttpServletResponse teeResponse = new TeeHttpServletResponse(
30 (HttpServletResponse) response);
31
32
33 filterChain.doFilter(teeRequest, teeResponse);
34
35
36 teeResponse.finish();
37
38
39 teeRequest.setAttribute(AccessConstants.LB_OUTPUT_BUFFER, teeResponse
40 .getOutputBuffer());
41 } catch (IOException e) {
42 e.printStackTrace();
43 throw e;
44 } catch (ServletException e) {
45 e.printStackTrace();
46 throw e;
47 }
48 } else {
49 filterChain.doFilter(request, response);
50 }
51
52 }
53
54 public void init(FilterConfig arg0) throws ServletException {
55
56 }
57
58 }