Author: sergeyb
Date: Thu Nov 11 22:02:03 2010
New Revision: 1034170
URL: http://svn.apache.org/viewvc?rev=1034170&view=rev
Log:
Merged revisions 1034165 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1034165 | sergeyb | 2010-11-11 21:56:57 +0000 (Thu, 11 Nov 2010) | 1 line
JAX-RS : finally making the servlet api dependency optional on the client,
some good refactoring of util silos will be needed in time
........
Modified:
cxf/branches/2.3.x-fixes/ (props changed)
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
Propchange: cxf/branches/2.3.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Nov 11 22:02:03 2010
@@ -1 +1 @@
-/cxf/trunk:1031210,1034113
+/cxf/trunk:1031210,1034113,1034165
Propchange: cxf/branches/2.3.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified:
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java?rev=1034170&r1=1034169&r2=1034170&view=diff
==============================================================================
---
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
(original)
+++
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
Thu Nov 11 22:02:03 2010
@@ -47,10 +47,6 @@ import java.util.SortedSet;
import java.util.TreeSet;
import java.util.logging.Logger;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
@@ -63,6 +59,7 @@ import javax.ws.rs.core.UriInfo;
import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Providers;
+import org.apache.cxf.common.classloader.ClassLoaderUtils;
import org.apache.cxf.common.i18n.BundleUtils;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.common.util.PrimitiveUtils;
@@ -75,8 +72,6 @@ import org.apache.cxf.jaxrs.impl.Metadat
import org.apache.cxf.jaxrs.impl.PathSegmentImpl;
import org.apache.cxf.jaxrs.impl.tl.ThreadLocalContextResolver;
import org.apache.cxf.jaxrs.impl.tl.ThreadLocalHttpHeaders;
-import org.apache.cxf.jaxrs.impl.tl.ThreadLocalHttpServletRequest;
-import org.apache.cxf.jaxrs.impl.tl.ThreadLocalHttpServletResponse;
import org.apache.cxf.jaxrs.impl.tl.ThreadLocalMessageContext;
import org.apache.cxf.jaxrs.impl.tl.ThreadLocalProtocolHeaders;
import org.apache.cxf.jaxrs.impl.tl.ThreadLocalProviders;
@@ -84,8 +79,6 @@ import org.apache.cxf.jaxrs.impl.tl.Thre
import org.apache.cxf.jaxrs.impl.tl.ThreadLocalRequest;
import org.apache.cxf.jaxrs.impl.tl.ThreadLocalSearchContext;
import org.apache.cxf.jaxrs.impl.tl.ThreadLocalSecurityContext;
-import org.apache.cxf.jaxrs.impl.tl.ThreadLocalServletConfig;
-import org.apache.cxf.jaxrs.impl.tl.ThreadLocalServletContext;
import org.apache.cxf.jaxrs.impl.tl.ThreadLocalUriInfo;
import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
import org.apache.cxf.jaxrs.model.Parameter;
@@ -97,7 +90,12 @@ public final class InjectionUtils {
private static final Logger LOG =
LogUtils.getL7dLogger(InjectionUtils.class);
private static final ResourceBundle BUNDLE =
BundleUtils.getBundle(InjectionUtils.class);
-
+
+ private static final String SERVLET_CONFIG_CLASS_NAME =
"javax.servlet.ServletConfig";
+ private static final String SERVLET_CONTEXT_CLASS_NAME =
"javax.servlet.ServletContext";
+ private static final String HTTP_SERVLET_REQUEST_CLASS_NAME =
"javax.servlet.http.HttpServletRequest";
+ private static final String HTTP_SERVLET_RESPONSE_CLASS_NAME =
"javax.servlet.http.HttpServletResponse";
+
private InjectionUtils() {
}
@@ -736,7 +734,7 @@ public final class InjectionUtils {
}
if (proxy == null && isServletApiContext(type.getName())) {
- proxy = createThreadLocalServletApiContext(type);
+ proxy = createThreadLocalServletApiContext(type.getName());
}
return proxy;
@@ -746,18 +744,23 @@ public final class InjectionUtils {
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 (ServletConfig.class.isAssignableFrom(type)) {
- proxy = new ThreadLocalServletConfig();
+ private static ThreadLocalProxy createThreadLocalServletApiContext(String
name) {
+ String proxyClassName = null;
+ if (HTTP_SERVLET_REQUEST_CLASS_NAME.equals(name)) {
+ proxyClassName =
"org.apache.cxf.jaxrs.impl.tl.ThreadLocalHttpServletRequest";
+ } else if (HTTP_SERVLET_RESPONSE_CLASS_NAME.equals(name)) {
+ proxyClassName =
"org.apache.cxf.jaxrs.impl.tl.ThreadLocalHttpServletResponse";
+ } else if (SERVLET_CONTEXT_CLASS_NAME.equals(name)) {
+ proxyClassName =
"org.apache.cxf.jaxrs.impl.tl.ThreadLocalServletContext";
+ } else if (SERVLET_CONFIG_CLASS_NAME.equals(name)) {
+ proxyClassName =
"org.apache.cxf.jaxrs.impl.tl.ThreadLocalServletConfig";
+ }
+ try {
+ return
(ThreadLocalProxy)ClassLoaderUtils.loadClass(proxyClassName,
InjectionUtils.class)
+ .newInstance();
+ } catch (Throwable t) {
+ throw new RuntimeException(t);
}
- return proxy;
}
public static void injectContextProxies(AbstractResourceInfo cri, Object
instance) {
Modified:
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java?rev=1034170&r1=1034169&r2=1034170&view=diff
==============================================================================
---
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
(original)
+++
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
Thu Nov 11 22:02:03 2010
@@ -807,8 +807,9 @@ public final class JAXRSUtils {
} else if (SearchContext.class.isAssignableFrom(clazz)) {
o = new SearchContextImpl(m);
}
-
- o = o == null ? createServletResourceValue(contextMessage, clazz) : o;
+ if (o == null && contextMessage != null &&
!MessageUtils.isRequestor(contextMessage)) {
+ o = createServletResourceValue(contextMessage, clazz);
+ }
return clazz.cast(o);
}