Revision: 10212
Author:   [email protected]
Date:     Tue May 24 05:33:27 2011
Log:      Add a ServletContext ThreadLocal to RequestFactoryServlet.
http://gwt-code-reviews.appspot.com/1448804/
Patch by: larsenje
Review by: bobv

http://code.google.com/p/google-web-toolkit/source/detail?r=10212

Modified:
/trunk/user/src/com/google/web/bindery/requestfactory/server/RequestFactoryServlet.java

=======================================
--- /trunk/user/src/com/google/web/bindery/requestfactory/server/RequestFactoryServlet.java Tue Apr 5 10:47:39 2011 +++ /trunk/user/src/com/google/web/bindery/requestfactory/server/RequestFactoryServlet.java Tue May 24 05:33:27 2011
@@ -23,6 +23,7 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;

+import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
@@ -43,6 +44,7 @@
* These ThreadLocals are used to allow service objects to obtain access to
    * the HTTP transaction.
    */
+ private static final ThreadLocal<ServletContext> perThreadContext = new ThreadLocal<ServletContext>(); private static final ThreadLocal<HttpServletRequest> perThreadRequest = new ThreadLocal<HttpServletRequest>(); private static final ThreadLocal<HttpServletResponse> perThreadResponse = new ThreadLocal<HttpServletResponse>();

@@ -63,6 +65,15 @@
   public static HttpServletResponse getThreadLocalResponse() {
     return perThreadResponse.get();
   }
+
+  /**
+   * Returns the thread-local {@link ServletContext}
+   *
+   * @return the {@link ServletContext} associated with this servlet
+   */
+  public static ServletContext getThreadLocalServletContext() {
+    return perThreadContext.get();
+  }

   private final SimpleRequestProcessor processor;

@@ -102,6 +113,7 @@
protected void doPost(HttpServletRequest request, HttpServletResponse response)
       throws IOException, ServletException {

+    perThreadContext.set(getServletContext());
     perThreadRequest.set(request);
     perThreadResponse.set(response);

@@ -130,6 +142,7 @@
         log.log(Level.SEVERE, "Unexpected error", e);
       }
     } finally {
+      perThreadContext.set(null);
       perThreadRequest.set(null);
       perThreadResponse.set(null);
     }

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to