1 package org.kohsuke.stapler; 2 3 import javax.servlet.RequestDispatcher ; 4 import javax.servlet.ServletException ; 5 import javax.servlet.ServletRequest ; 6 import javax.servlet.ServletResponse ; 7 import java.io.IOException ; 8 9 14 final class RequestDispatcherWrapper implements RequestDispatcher { 15 private final RequestDispatcher core; 16 private final Object it; 17 18 public RequestDispatcherWrapper(RequestDispatcher core, Object it) { 19 this.core = core; 20 this.it = it; 21 } 22 23 public void forward(ServletRequest req, ServletResponse rsp) throws ServletException , IOException { 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 req, ServletResponse rsp) throws ServletException , IOException { 31 Object oldIt = push(req, "it", it); 32 Object oldRq = push(req, "staplerRequest", req); 33 Object 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 push(ServletRequest req, String paramName, Object value) { 44 Object old = req.getAttribute(paramName); 45 req.setAttribute(paramName,value); 46 return old; 47 } 48 } 49 | Popular Tags |