use of org.apache.cxf.jaxrs.impl.tl.ThreadLocalMessageContext in project tomee by apache.
the class InjectionUtils method createThreadLocalProxy.
// TODO : investigate the possibility of using generic proxies only
@SuppressWarnings("unchecked")
public static <T> ThreadLocalProxy<T> createThreadLocalProxy(Class<T> type) {
ThreadLocalProxy<?> proxy = null;
if (UriInfo.class.isAssignableFrom(type)) {
proxy = new ThreadLocalUriInfo();
} else if (HttpHeaders.class.isAssignableFrom(type)) {
proxy = new ThreadLocalHttpHeaders();
} else if (ProtocolHeaders.class.isAssignableFrom(type)) {
proxy = new ThreadLocalProtocolHeaders();
} else if (SecurityContext.class.isAssignableFrom(type)) {
proxy = new ThreadLocalSecurityContext();
} else if (ContextResolver.class.isAssignableFrom(type)) {
proxy = new ThreadLocalContextResolver<>();
} else if (Request.class.isAssignableFrom(type)) {
proxy = new ThreadLocalRequest();
} else if (Providers.class.isAssignableFrom(type)) {
proxy = new ThreadLocalProviders();
} else if (MessageContext.class.isAssignableFrom(type)) {
proxy = new ThreadLocalMessageContext();
}
if (proxy == null && isServletApiContext(type.getName())) {
proxy = createThreadLocalServletApiContext(type.getName());
}
if (proxy == null) {
ClassLoader loader = proxyClassLoaderCache.getProxyClassLoader(Proxy.class.getClassLoader(), new Class<?>[] { Proxy.class, ThreadLocalProxy.class, type });
if (!canSeeAllClasses(loader, new Class<?>[] { Proxy.class, ThreadLocalProxy.class, type })) {
LOG.log(Level.FINE, "find a loader from ProxyClassLoader cache," + " but can't see all interfaces");
LOG.log(Level.FINE, "create a new one with parent " + Proxy.class.getClassLoader());
proxyClassLoaderCache.removeStaleProxyClassLoader(type);
proxyClassLoaderCache.getProxyClassLoader(Proxy.class.getClassLoader(), new Class<?>[] { Proxy.class, ThreadLocalProxy.class, type });
}
return (ThreadLocalProxy<T>) Proxy.newProxyInstance(loader, new Class[] { type, ThreadLocalProxy.class }, new ThreadLocalInvocationHandler<T>());
}
return (ThreadLocalProxy<T>) proxy;
}
use of org.apache.cxf.jaxrs.impl.tl.ThreadLocalMessageContext in project cxf by apache.
the class InjectionUtils method createThreadLocalProxy.
// TODO : investigate the possibility of using generic proxies only
@SuppressWarnings("unchecked")
public static <T> ThreadLocalProxy<T> createThreadLocalProxy(Class<T> type) {
ThreadLocalProxy<?> proxy = null;
if (UriInfo.class.isAssignableFrom(type)) {
proxy = new ThreadLocalUriInfo();
} else if (HttpHeaders.class.isAssignableFrom(type)) {
proxy = new ThreadLocalHttpHeaders();
} else if (ProtocolHeaders.class.isAssignableFrom(type)) {
proxy = new ThreadLocalProtocolHeaders();
} else if (SecurityContext.class.isAssignableFrom(type)) {
proxy = new ThreadLocalSecurityContext();
} else if (ContextResolver.class.isAssignableFrom(type)) {
proxy = new ThreadLocalContextResolver<>();
} else if (Request.class.isAssignableFrom(type)) {
proxy = new ThreadLocalRequest();
} else if (Providers.class.isAssignableFrom(type)) {
proxy = new ThreadLocalProviders();
} else if (MessageContext.class.isAssignableFrom(type)) {
proxy = new ThreadLocalMessageContext();
}
if (proxy == null && isServletApiContext(type.getName())) {
proxy = createThreadLocalServletApiContext(type.getName());
}
if (proxy == null) {
ClassLoader loader = proxyClassLoaderCache.getProxyClassLoader(Proxy.class.getClassLoader(), new Class<?>[] { Proxy.class, ThreadLocalProxy.class, type });
if (!canSeeAllClasses(loader, new Class<?>[] { Proxy.class, ThreadLocalProxy.class, type })) {
LOG.log(Level.FINE, "find a loader from ProxyClassLoader cache," + " but can't see all interfaces");
LOG.log(Level.FINE, "create a new one with parent " + Proxy.class.getClassLoader());
proxyClassLoaderCache.removeStaleProxyClassLoader(type);
proxyClassLoaderCache.getProxyClassLoader(Proxy.class.getClassLoader(), new Class<?>[] { Proxy.class, ThreadLocalProxy.class, type });
}
return (ThreadLocalProxy<T>) Proxy.newProxyInstance(loader, new Class[] { type, ThreadLocalProxy.class }, new ThreadLocalInvocationHandler<T>());
}
return (ThreadLocalProxy<T>) proxy;
}
Aggregations