1 //========================================================================
2 //$Id: TestFilter.java,v 1.5 2005/11/01 11:42:53 gregwilkins Exp $
3 //Copyright 2004-2005 Mort Bay Consulting Pty. Ltd.
4 //------------------------------------------------------------------------
5 //Licensed under the Apache License, Version 2.0 (the "License");
6 //you may not use this file except in compliance with the License.
7 //You may obtain a copy of the License at
8 //http://www.apache.org/licenses/LICENSE-2.0
9 //Unless required by applicable law or agreed to in writing, software
10 //distributed under the License is distributed on an "AS IS" BASIS,
11 //WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 //See the License for the specific language governing permissions and
13 //limitations under the License.
14 //========================================================================
15
16 package com.acme;
17
18 import java.io.IOException;
19
20 import javax.servlet.Filter;
21 import javax.servlet.FilterChain;
22 import javax.servlet.FilterConfig;
23 import javax.servlet.ServletContext;
24 import javax.servlet.ServletException;
25 import javax.servlet.ServletRequest;
26 import javax.servlet.ServletRequestWrapper;
27 import javax.servlet.ServletResponse;
28 import javax.servlet.http.HttpServletRequest;
29 import javax.servlet.http.HttpServletRequestWrapper;
30
31 /* ------------------------------------------------------------ */
32 /** TestFilter.
33 * @author gregw
34 *
35 */
36 public class TestFilter implements Filter
37 {
38 private ServletContext _context;
39
40 /* ------------------------------------------------------------ */
41 /*
42 * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
43 */
44 public void init(FilterConfig filterConfig) throws ServletException
45 {
46 _context= filterConfig.getServletContext();
47 }
48
49 /* ------------------------------------------------------------ */
50 /*
51 * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
52 */
53 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
54 throws IOException, ServletException
55 {
56 Integer old_value=null;
57 ServletRequest r = request;
58 while (r instanceof ServletRequestWrapper)
59 r=((ServletRequestWrapper)r).getRequest();
60
61 try
62 {
63 old_value=(Integer)request.getAttribute("testFilter");
64
65 Integer value=(old_value==null)?new Integer(1):new Integer(old_value.intValue()+1);
66
67 request.setAttribute("testFilter", value);
68
69 String qString = ((HttpServletRequest)request).getQueryString();
70 if (qString != null && qString.indexOf("wrap")>0)
71 {
72 request=new HttpServletRequestWrapper((HttpServletRequest)request);
73 }
74 _context.setAttribute("request"+r.hashCode(),value);
75
76 chain.doFilter(request, response);
77 }
78 finally
79 {
80 request.setAttribute("testFilter", old_value);
81 _context.setAttribute("request"+r.hashCode(),old_value);
82 }
83 }
84
85 /* ------------------------------------------------------------ */
86 /*
87 * @see javax.servlet.Filter#destroy()
88 */
89 public void destroy()
90 {
91 }
92
93 }