1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.huihoo.jfox.soaf.util.filter;
18
19 import javax.servlet.RequestDispatcher;
20 import javax.servlet.ServletRequest;
21 import javax.servlet.ServletResponse;
22
23 import org.apache.commons.logging.Log;
24 import org.apache.commons.logging.LogFactory;
25
26 /***
27 * Mock implementation of the RequestDispatcher interface.
28 *
29 * <p>Used for testing the web framework; typically not
30 * necessary for testing application controllers.
31 *
32 * @author Rod Johnson
33 * @author Juergen Hoeller
34 * @since 1.0.2
35 */
36 public class MockRequestDispatcher implements RequestDispatcher {
37
38 private final Log logger = LogFactory.getLog(getClass());
39
40 private final String url;
41
42 public MockRequestDispatcher(String url) {
43 this.url = url;
44 }
45
46 public void forward(ServletRequest servletRequest, ServletResponse servletResponse) {
47 if (servletResponse.isCommitted()) {
48 throw new IllegalStateException("Cannot perform forward - response is already committed");
49 }
50 if (!(servletResponse instanceof MockHttpServletResponse)) {
51 throw new IllegalArgumentException("MockRequestDispatcher requires MockHttpServletResponse");
52 }
53 ((MockHttpServletResponse) servletResponse).setForwardedUrl(this.url);
54 if (logger.isDebugEnabled()) {
55 logger.debug("MockRequestDispatcher: forwarding to URL [" + this.url + "]");
56 }
57 }
58
59 public void include(ServletRequest servletRequest, ServletResponse servletResponse) {
60 if (!(servletResponse instanceof MockHttpServletResponse)) {
61 throw new IllegalArgumentException("MockRequestDispatcher requires MockHttpServletResponse");
62 }
63 ((MockHttpServletResponse) servletResponse).setIncludedUrl(this.url);
64 if (logger.isDebugEnabled()) {
65 logger.debug("MockRequestDispatcher: including URL [" + this.url + "]");
66 }
67 }
68
69 }