Repository: cxf
Updated Branches:
  refs/heads/master 159089a4c -> cf76f94d7


In osgi, the bundle that uses a client MAY have imports for some of the cxf 
stuff (like the Client interface), but not all the params and return types.  
That causes client creation failures.


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/cf76f94d
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/cf76f94d
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/cf76f94d

Branch: refs/heads/master
Commit: cf76f94d75a2a56173df9f7917ce3a011253f620
Parents: 159089a
Author: Daniel Kulp <[email protected]>
Authored: Fri May 8 14:05:08 2015 -0400
Committer: Daniel Kulp <[email protected]>
Committed: Fri May 8 14:05:08 2015 -0400

----------------------------------------------------------------------
 .../main/java/org/apache/cxf/common/util/ProxyHelper.java | 10 ++++++++++
 1 file changed, 10 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/cf76f94d/core/src/main/java/org/apache/cxf/common/util/ProxyHelper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/common/util/ProxyHelper.java 
b/core/src/main/java/org/apache/cxf/common/util/ProxyHelper.java
index 27f2c56..89bdad3 100644
--- a/core/src/main/java/org/apache/cxf/common/util/ProxyHelper.java
+++ b/core/src/main/java/org/apache/cxf/common/util/ProxyHelper.java
@@ -20,6 +20,7 @@
 package org.apache.cxf.common.util;
 
 import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 
 /**
@@ -73,6 +74,15 @@ public class ProxyHelper {
                 if (ifClass != currentInterface) {
                     return false;
                 }
+                //we need to check all the params/returns as well as the Proxy 
creation 
+                //will try to create methods for all of this even if they 
aren't used
+                //by the client and not available in the clients classloader
+                for (Method m : ifClass.getMethods()) {
+                    Class.forName(m.getReturnType().getName(), true, loader);
+                    for (Class<?> p : m.getParameterTypes()) {
+                        Class.forName(p.getName(), true, loader);
+                    }
+                }
             } catch (NoClassDefFoundError e) {
                 return false;
             } catch (ClassNotFoundException e) {

Reply via email to