1 13 package info.magnolia.cms; 14 15 import java.io.IOException ; 16 import java.text.MessageFormat ; 17 18 import javax.servlet.RequestDispatcher ; 19 import javax.servlet.ServletContext ; 20 import javax.servlet.ServletException ; 21 import javax.servlet.http.HttpServletRequest ; 22 import javax.servlet.http.HttpServletResponse ; 23 24 import org.apache.log4j.Logger; 25 26 27 31 public final class Dispatcher { 32 33 36 private static Logger log = Logger.getLogger(Dispatcher.class); 37 38 41 private Dispatcher() { 42 } 44 45 53 public static void dispatch(HttpServletRequest req, HttpServletResponse res, ServletContext sc) 54 throws ServletException , IOException { 55 if (sc == null) { 56 log.error("null ServletContext received - aborting request"); return; 58 } 59 String requestReceiver = (String ) req.getAttribute(Aggregator.REQUEST_RECEIVER); 60 61 if (requestReceiver == null) { 62 log.error("requestReceiver is missing, returning a 404 error"); res.sendError(404); 64 return; 65 } 66 67 if (log.isDebugEnabled()) { 68 log.debug(MessageFormat.format("Dispatching request for [{0}] - forward to [{1}]", new Object []{req.getRequestURL(), requestReceiver})); 70 } 71 72 if (res.isCommitted()) { 73 log.error(MessageFormat.format("Can''t forward to [{0}] for request [{1}]. Response is already committed.", new Object []{requestReceiver, req.getRequestURL()})); 75 return; 76 } 77 78 RequestDispatcher rd = sc.getRequestDispatcher(requestReceiver); 79 rd.forward(req, res); 80 rd = null; 81 } 82 } 83 | Popular Tags |