Open Source Repository

Home /jodd/jodd-3.3.2 | Repository Home



jodd/servlet/RequestContextListener.java
// Copyright (c) 2003-2012, Jodd Team (jodd.org). All Rights Reserved.

package jodd.servlet;

import javax.servlet.ServletRequestListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.http.HttpServletRequest;

/**
 * Store request in the current thread and all childs threads, so it can be easily accessible.
 */
public class RequestContextListener implements ServletRequestListener {

  private static final ThreadLocal<HttpServletRequest> requestHolder = new InheritableThreadLocal<HttpServletRequest>();

  public void requestInitialized(ServletRequestEvent requestEvent) {
    if ((requestEvent.getServletRequest() instanceof HttpServletRequest== false) {
      throw new IllegalArgumentException("Request is not an HttpServletRequest: " + requestEvent.getServletRequest());
    }
    HttpServletRequest request = (HttpServletRequestrequestEvent.getServletRequest();
    requestHolder.set(request);
  }

  public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
    requestHolder.set(null);
  }

  /**
   * Returns current http servlet request.
   */
  public static HttpServletRequest getRequest() {
    return requestHolder.get();
  }
}