KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > displaytag > filter > MockFilterSupport


1 package org.displaytag.filter;
2
3 import java.io.IOException JavaDoc;
4
5 import javax.servlet.Filter JavaDoc;
6 import javax.servlet.FilterChain JavaDoc;
7 import javax.servlet.RequestDispatcher JavaDoc;
8 import javax.servlet.ServletException JavaDoc;
9 import javax.servlet.ServletRequest JavaDoc;
10 import javax.servlet.ServletResponse JavaDoc;
11 import javax.servlet.http.HttpServlet JavaDoc;
12 import javax.servlet.http.HttpServletRequest JavaDoc;
13 import javax.servlet.http.HttpServletResponse JavaDoc;
14
15 import org.apache.commons.lang.StringUtils;
16 import org.apache.commons.logging.Log;
17 import org.apache.commons.logging.LogFactory;
18
19
20 /**
21  * Simulates the behaviour of a filter using a simple servlet. The servlet must be mapped to the "*.filtered" extension;
22  * request include this extension after the name of the tested jsp. Since servletunit doesn't support filter testing, we
23  * are passing the request to this servlet which calls the filter and then forward the request to the given path without
24  * ".filtered". <strong>Replaced by native filter support in ServletUnit 1.6. </strong>
25  * @author Fabrizio Giustina
26  * @version $Revision: 643 $ ($Author: fgiust $)
27  */

28 public class MockFilterSupport extends HttpServlet JavaDoc
29 {
30
31     /**
32      * extension mapped to this servlet.
33      */

34     public static final String JavaDoc FILTERED_EXTENSION = ".filtered";
35
36     /**
37      * logger.
38      */

39     protected static Log log = LogFactory.getLog(MockFilterSupport.class);
40
41     /**
42      * D1597A17A6.
43      */

44     private static final long serialVersionUID = 899149338534L;
45
46     /**
47      * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest, HttpServletResponse)
48      */

49     protected void doGet(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws ServletException JavaDoc, IOException JavaDoc
50     {
51         log.debug("Mock servlet called, simulating filter");
52         Filter JavaDoc filter = new ResponseOverrideFilter();
53         filter.init(null);
54         filter.doFilter(request, response, new MockFilterChain());
55     }
56
57     /**
58      * Simple FilterChain used to test Filters.
59      */

60     public static class MockFilterChain implements FilterChain JavaDoc
61     {
62
63         /**
64          * @see javax.servlet.FilterChain#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
65          */

66         public void doFilter(ServletRequest JavaDoc request, ServletResponse JavaDoc response) throws IOException JavaDoc, ServletException JavaDoc
67         {
68             String JavaDoc uri = ((HttpServletRequest JavaDoc) request).getRequestURI();
69             String JavaDoc requestContext = ((HttpServletRequest JavaDoc) request).getContextPath();
70
71             if (StringUtils.isNotEmpty(requestContext) && uri.startsWith(requestContext))
72             {
73                 uri = uri.substring(requestContext.length());
74             }
75
76             uri = StringUtils.replace(uri, FILTERED_EXTENSION, "");
77
78             if (log.isDebugEnabled())
79             {
80                 log.debug("Redirecting to [" + uri + "]");
81             }
82             RequestDispatcher JavaDoc dispatcher = request.getRequestDispatcher(uri);
83             dispatcher.forward(request, response);
84         }
85
86     }
87
88 }
Popular Tags