You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by am...@apache.org on 2018/08/01 22:06:19 UTC
[cxf] 08/08: Avoid direct dependency on 1.1-specific APIs for 1.0
compat
This is an automated email from the ASF dual-hosted git repository.
amccright pushed a commit to branch 3.2.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 704dc75e76a97b96c7913a02e1401c5a70822708
Author: Andy McCright <j....@gmail.com>
AuthorDate: Mon Jul 30 11:42:54 2018 -0500
Avoid direct dependency on 1.1-specific APIs for 1.0 compat
---
.../client/MicroProfileClientProviderFactory.java | 22 ++++++++++++++--------
.../proxy/MPAsyncInvocationInterceptorImpl.java | 9 +++++----
2 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientProviderFactory.java b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientProviderFactory.java
index 031892c..f02739e 100644
--- a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientProviderFactory.java
+++ b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientProviderFactory.java
@@ -28,20 +28,18 @@ import javax.ws.rs.core.Configuration;
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
+import org.apache.cxf.common.classloader.ClassLoaderUtils;
import org.apache.cxf.common.util.ClassHelper;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.jaxrs.model.ProviderInfo;
import org.apache.cxf.jaxrs.provider.ProviderFactory;
import org.apache.cxf.message.Message;
-import org.eclipse.microprofile.rest.client.ext.AsyncInvocationInterceptorFactory;
import org.eclipse.microprofile.rest.client.ext.ResponseExceptionMapper;
public final class MicroProfileClientProviderFactory extends ProviderFactory {
static final String CLIENT_FACTORY_NAME = MicroProfileClientProviderFactory.class.getName();
- private List<ProviderInfo<ResponseExceptionMapper<?>>> responseExceptionMappers =
- new ArrayList<ProviderInfo<ResponseExceptionMapper<?>>>(1);
- private List<ProviderInfo<AsyncInvocationInterceptorFactory>> asyncInvocationInterceptorFactories =
- new ArrayList<ProviderInfo<AsyncInvocationInterceptorFactory>>();
+ private List<ProviderInfo<ResponseExceptionMapper<?>>> responseExceptionMappers = new ArrayList<>(1);
+ private List<ProviderInfo<Object>> asyncInvocationInterceptorFactories = new ArrayList<>();
private final Comparator<ProviderInfo<?>> comparator;
private MicroProfileClientProviderFactory(Bus bus, Comparator<ProviderInfo<?>> comparator) {
@@ -85,8 +83,16 @@ public final class MicroProfileClientProviderFactory extends ProviderFactory {
if (ResponseExceptionMapper.class.isAssignableFrom(providerCls)) {
addProviderToList(responseExceptionMappers, provider);
}
- if (AsyncInvocationInterceptorFactory.class.isAssignableFrom(providerCls)) {
- addProviderToList(asyncInvocationInterceptorFactories, provider);
+ String className = "org.eclipse.microprofile.rest.client.ext.AsyncInvocationInterceptorFactory";
+ try {
+
+ Class<?> asyncIIFactoryClass = ClassLoaderUtils.loadClass(className,
+ MicroProfileClientProviderFactory.class);
+ if (asyncIIFactoryClass.isAssignableFrom(providerCls)) {
+ addProviderToList(asyncInvocationInterceptorFactories, provider);
+ }
+ } catch (ClassNotFoundException ex) {
+ // expected if using the MP Rest Client 1.0 APIs
}
}
@@ -109,7 +115,7 @@ public final class MicroProfileClientProviderFactory extends ProviderFactory {
.collect(Collectors.toList()));
}
- public List<ProviderInfo<AsyncInvocationInterceptorFactory>> getAsyncInvocationInterceptorFactories() {
+ public List<ProviderInfo<Object>> getAsyncInvocationInterceptorFactories() {
return asyncInvocationInterceptorFactories;
}
diff --git a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/proxy/MPAsyncInvocationInterceptorImpl.java b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/proxy/MPAsyncInvocationInterceptorImpl.java
index cb8ad6e..13ecf18 100644
--- a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/proxy/MPAsyncInvocationInterceptorImpl.java
+++ b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/proxy/MPAsyncInvocationInterceptorImpl.java
@@ -53,11 +53,12 @@ public class MPAsyncInvocationInterceptorImpl extends AbstractPhaseInterceptor<M
@Override
public void handleMessage(Message message) throws Fault {
MicroProfileClientProviderFactory factory = MicroProfileClientProviderFactory.getInstance(message);
- List<ProviderInfo<AsyncInvocationInterceptorFactory>> aiiProviderList =
+ List<ProviderInfo<Object>> aiiProviderList =
factory.getAsyncInvocationInterceptorFactories();
- //interceptors.addAll(aiiProviderList.size());
- for (ProviderInfo<AsyncInvocationInterceptorFactory> providerInfo: aiiProviderList) {
- AsyncInvocationInterceptor aiInterceptor = providerInfo.getProvider().newInterceptor();
+
+ for (ProviderInfo<Object> providerInfo: aiiProviderList) {
+ AsyncInvocationInterceptor aiInterceptor =
+ ((AsyncInvocationInterceptorFactory) providerInfo.getProvider()).newInterceptor();
try {
aiInterceptor.prepareContext();
interceptors.add(0, aiInterceptor); // sort in reverse order