You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2013/05/24 20:19:20 UTC
svn commit: r1486147 - in /cxf/trunk/rt/frontend:
jaxws/src/main/java/org/apache/cxf/jaxws/
jaxws/src/test/java/org/apache/cxf/jaxws/
simple/src/main/java/org/apache/cxf/frontend/
Author: dkulp
Date: Fri May 24 18:19:20 2013
New Revision: 1486147
URL: http://svn.apache.org/r1486147
Log:
Make proxy's also implement the Client interface which can make it easier to use and configure.
ClientProxy.getClient can be deprecated and/or removed once all the usage of it is cleaned.
Modified:
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsProxyFactoryBean.java
cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JaxWsClientTest.java
cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java
cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxyFactoryBean.java
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java?rev=1486147&r1=1486146&r2=1486147&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java Fri May 24 18:19:20 2013
@@ -106,19 +106,21 @@ public class JaxWsClientProxy extends or
params = new Object[0];
}
- BindingOperationInfo oi = dispatcher.getBindingOperation(method, endpoint);
- if (oi == null) {
- // check for method on BindingProvider and Object
+
+ try {
if (method.getDeclaringClass().equals(BindingProvider.class)
|| method.getDeclaringClass().equals(Object.class)
|| method.getDeclaringClass().equals(Closeable.class)) {
- try {
- return method.invoke(this, params);
- } catch (InvocationTargetException e) {
- throw e.getCause();
- }
+ return method.invoke(this, params);
+ } else if (method.getDeclaringClass().isInstance(client)) {
+ return method.invoke(client, params);
}
-
+ } catch (InvocationTargetException e) {
+ throw e.getCause();
+ }
+
+ BindingOperationInfo oi = dispatcher.getBindingOperation(method, endpoint);
+ if (oi == null) {
Message msg = new Message("NO_BINDING_OPERATION_INFO", LOG, method.getName());
throw new WebServiceException(msg.toString());
}
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsProxyFactoryBean.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsProxyFactoryBean.java?rev=1486147&r1=1486146&r2=1486147&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsProxyFactoryBean.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsProxyFactoryBean.java Fri May 24 18:19:20 2013
@@ -119,15 +119,7 @@ public class JaxWsProxyFactoryBean exten
@Override
protected Class<?>[] getImplementingClasses() {
Class<?> cls = getClientFactoryBean().getServiceClass();
- Class<?> ret[] = new Class[] {cls, BindingProvider.class};
- try {
- cls.getMethod("close");
- } catch (Exception e) {
- //ignore - doesn't have a close method so we
- //can implement Closeable
- ret = new Class[] {cls, BindingProvider.class, Closeable.class};
- }
-
+ Class<?> ret[] = new Class[] {cls, BindingProvider.class, Closeable.class, Client.class};
try {
Proxy.getProxyClass(cls.getClassLoader(), ret);
} catch (Throwable t) {
Modified: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JaxWsClientTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JaxWsClientTest.java?rev=1486147&r1=1486146&r2=1486147&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JaxWsClientTest.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JaxWsClientTest.java Fri May 24 18:19:20 2013
@@ -33,7 +33,6 @@ import javax.xml.ws.WebServiceException;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.endpoint.ClientImpl;
-import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.jaxws.support.JaxWsEndpointImpl;
import org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean;
@@ -265,9 +264,9 @@ public class JaxWsClientTest extends Abs
Greeter greeter2 = (Greeter) cf.create();
Greeter greeter3 = (Greeter) cf.create();
- Client c = ClientProxy.getClient(greeter);
- Client c2 = ClientProxy.getClient(greeter2);
- Client c3 = ClientProxy.getClient(greeter3);
+ Client c = (Client)greeter;
+ Client c2 = (Client)greeter2;
+ Client c3 = (Client)greeter3;
assertNotSame(c, c2);
assertNotSame(c, c3);
assertNotSame(c3, c2);
@@ -275,6 +274,12 @@ public class JaxWsClientTest extends Abs
assertNotSame(c.getEndpoint(), c3.getEndpoint());
assertNotSame(c3.getEndpoint(), c2.getEndpoint());
+ c3.getInInterceptors();
+
+ System.out.println(c2.getRequestContext());
+ System.out.println(((BindingProvider)greeter2).getRequestContext());
+
+
((BindingProvider)greeter).getRequestContext().put("test", "manny");
((BindingProvider)greeter2).getRequestContext().put("test", "moe");
((BindingProvider)greeter3).getRequestContext().put("test", "jack");
Modified: cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java?rev=1486147&r1=1486146&r2=1486147&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java (original)
+++ cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java Fri May 24 18:19:20 2013
@@ -59,17 +59,17 @@ public class ClientProxy implements Invo
if (client == null) {
throw new IllegalStateException("The client has been closed.");
}
+ if (method.getDeclaringClass().equals(Object.class)
+ || method.getDeclaringClass().equals(Closeable.class)) {
+ return method.invoke(this);
+ } else if (method.getDeclaringClass().isInstance(client)) {
+ return method.invoke(client, args);
+ }
MethodDispatcher dispatcher = (MethodDispatcher)endpoint.getService().get(MethodDispatcher.class
.getName());
BindingOperationInfo oi = dispatcher.getBindingOperation(method, endpoint);
if (oi == null) {
- // check for method on BindingProvider and Object
- if (method.getDeclaringClass().equals(Object.class)
- || method.getDeclaringClass().equals(Closeable.class)) {
- return method.invoke(this);
- }
-
throw new Fault(new Message("NO_OPERATION_INFO", LOG, method.getName()));
}
Modified: cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxyFactoryBean.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxyFactoryBean.java?rev=1486147&r1=1486146&r2=1486147&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxyFactoryBean.java (original)
+++ cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxyFactoryBean.java Fri May 24 18:19:20 2013
@@ -187,15 +187,7 @@ public class ClientProxyFactoryBean exte
protected Class<?>[] getImplementingClasses() {
Class<?> cls = clientFactoryBean.getServiceClass();
- try {
- if (cls.getMethod("close") != null) {
- return new Class[] {cls};
- }
- } catch (Exception e) {
- //ignore - doesn't have a close method so we
- //can implement Closeable
- }
- return new Class[] {cls, Closeable.class};
+ return new Class[] {cls, Closeable.class, Client.class};
}
protected ClientProxy clientClientProxy(Client c) {