KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > kohsuke > stapler > RequestDispatcherWrapper


1 package org.kohsuke.stapler;
2
3 import javax.servlet.RequestDispatcher JavaDoc;
4 import javax.servlet.ServletException JavaDoc;
5 import javax.servlet.ServletRequest JavaDoc;
6 import javax.servlet.ServletResponse JavaDoc;
7 import java.io.IOException JavaDoc;
8
9 /**
10  * {@link RequestDispatcher} that sets "it" before the invocation.
11  *
12  * @author Kohsuke Kawaguchi
13  */

14 final class RequestDispatcherWrapper implements RequestDispatcher JavaDoc {
15     private final RequestDispatcher JavaDoc core;
16     private final Object JavaDoc it;
17
18     public RequestDispatcherWrapper(RequestDispatcher JavaDoc core, Object JavaDoc it) {
19         this.core = core;
20         this.it = it;
21     }
22
23     public void forward(ServletRequest JavaDoc req, ServletResponse JavaDoc rsp) throws ServletException JavaDoc, IOException JavaDoc {
24         req.setAttribute("it",it);
25         req.setAttribute("staplerRequest",req);
26         req.setAttribute("staplerResponse",rsp);
27         core.forward(req,rsp);
28     }
29
30     public void include(ServletRequest JavaDoc req, ServletResponse JavaDoc rsp) throws ServletException JavaDoc, IOException JavaDoc {
31         Object JavaDoc oldIt = push(req, "it", it);
32         Object JavaDoc oldRq = push(req, "staplerRequest", req);
33         Object JavaDoc oldRs = push(req, "staplerResponse",rsp);
34         try {
35             core.include(req,rsp);
36         } finally {
37             req.setAttribute("it",oldIt);
38             req.setAttribute("staplerRequest",oldRq);
39             req.setAttribute("staplerResponse",oldRs);
40         }
41     }
42
43     private Object JavaDoc push(ServletRequest JavaDoc req, String JavaDoc paramName, Object JavaDoc value) {
44         Object JavaDoc old = req.getAttribute(paramName);
45         req.setAttribute(paramName,value);
46         return old;
47     }
48 }
49
Popular Tags