1 // Copyright (c) 2003-2007, Jodd Team (jodd.sf.net). All Rights Reserved.2 3 package jodd.servlet;4 5 import javax.servlet.ServletRequestListener ;6 import javax.servlet.ServletRequestEvent ;7 import javax.servlet.http.HttpServletRequest ;8 9 /**10 * Store request in current and all child threads, so it can be easily accessible.11 */12 public class RequestContextListener implements ServletRequestListener {13 14 private static final ThreadLocal requestHolder = new InheritableThreadLocal ();15 16 public void requestInitialized(ServletRequestEvent requestEvent) {17 if ((requestEvent.getServletRequest() instanceof HttpServletRequest ) == false) {18 throw new IllegalArgumentException ("Request is not an HttpServletRequest: " + requestEvent.getServletRequest());19 }20 HttpServletRequest request = (HttpServletRequest ) requestEvent.getServletRequest();21 requestHolder.set(request);22 }23 24 public void requestDestroyed(ServletRequestEvent servletRequestEvent) {25 requestHolder.set(null);26 }27 28 /**29 * Returns current http servlet request.30 */31 public static HttpServletRequest getRequest() {32 return (HttpServletRequest ) requestHolder.get();33 }34 }