You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2010/11/11 20:39:19 UTC

svn commit: r1034071 - /cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java

Author: sergeyb
Date: Thu Nov 11 19:39:19 2010
New Revision: 1034071

URL: http://svn.apache.org/viewvc?rev=1034071&view=rev
Log:
JAX-RS: another attempt on breaking the client dependency on the servlet api

Modified:
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java?rev=1034071&r1=1034070&r2=1034071&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java Thu Nov 11 19:39:19 2010
@@ -712,6 +712,7 @@ public final class InjectionUtils {
         return value;
     }
     
+    // TODO : investigate the possibility of using generic proxies only
     public static ThreadLocalProxy createThreadLocalProxy(Class<?> type) {
         ThreadLocalProxy proxy = null;
         if (UriInfo.class.isAssignableFrom(type)) {
@@ -728,18 +729,33 @@ public final class InjectionUtils {
             proxy = new ThreadLocalRequest();
         }  else if (Providers.class.isAssignableFrom(type)) {
             proxy = new ThreadLocalProviders();
-        } else if (HttpServletRequest.class.isAssignableFrom(type)) {
+        } else if (SearchContext.class.isAssignableFrom(type)) {
+            proxy = new ThreadLocalSearchContext();
+        } else if (MessageContext.class.isAssignableFrom(type)) {
+            proxy = new ThreadLocalMessageContext();
+        }
+        
+        if (proxy == null && isServletApiContext(type.getName())) {
+            proxy = createThreadLocalServletApiContext(type);  
+        }
+        
+        return proxy;
+    }
+    
+    private static boolean isServletApiContext(String name) { 
+        return name.startsWith("javax.servlet.");
+    }
+    
+    private static ThreadLocalProxy createThreadLocalServletApiContext(Class<?> type) {
+        ThreadLocalProxy proxy = null;
+        if (HttpServletRequest.class.isAssignableFrom(type)) {
             proxy = new ThreadLocalHttpServletRequest();
         } else if (ServletContext.class.isAssignableFrom(type)) {
             proxy = new ThreadLocalServletContext();
         } else if (HttpServletResponse.class.isAssignableFrom(type)) {
             proxy = new ThreadLocalHttpServletResponse();
-        } else if (MessageContext.class.isAssignableFrom(type)) {
-            proxy = new ThreadLocalMessageContext();
         } else if (ServletConfig.class.isAssignableFrom(type)) {
             proxy = new ThreadLocalServletConfig();
-        } else if (SearchContext.class.isAssignableFrom(type)) {
-            proxy = new ThreadLocalSearchContext();
         }
         return proxy;
     }