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