1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.fatwire.gst.foundation.httpstatus;
18
19 import java.io.IOException;
20 import java.util.Enumeration;
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 import javax.servlet.http.HttpServletResponseWrapper;
31
32 import org.apache.commons.logging.Log;
33 import org.apache.commons.logging.LogFactory;
34
35
36
37
38
39
40
41
42
43
44
45 public class HttpResponseStatusFilter implements Filter {
46
47 private static Log log = LogFactory.getLog(HttpResponseStatusFilter.class.getPackage().getName());
48 private boolean sendError = false;
49
50
51
52
53
54
55 public void destroy() {
56
57 }
58
59
60
61
62
63
64
65
66
67
68
69
70 public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain filterChain)
71 throws IOException, ServletException {
72
73 final HttpServletResponse httpResponse = (HttpServletResponse) response;
74
75 if (log.isDebugEnabled()) {
76 printRequestHeaders(request);
77 }
78
79 final HttpServletResponseWrapper wrapper = new StatusFilterHttpResponseWrapper(httpResponse, sendError);
80
81 filterChain.doFilter(request, wrapper);
82
83 }
84
85 private void printRequestHeaders(final ServletRequest request) {
86 final HttpServletRequest httpRequest = (HttpServletRequest) request;
87
88 for (Enumeration<?> en = httpRequest.getHeaderNames(); en.hasMoreElements();) {
89 String headername = (String) en.nextElement();
90 log.debug(headername + ": " + httpRequest.getHeader(headername));
91 }
92 }
93
94
95
96
97
98
99
100
101
102 public void init(final FilterConfig filterConf) throws ServletException {
103 sendError = "true".equalsIgnoreCase(filterConf.getInitParameter("sendError"));
104 }
105 }