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 2011/02/04 17:29:39 UTC
svn commit: r1067214 - in /cxf/trunk/rt/frontend:
jaxws/src/main/java/org/apache/cxf/jaxws/
jaxws/src/main/java/org/apache/cxf/jaxws/spring/
jaxws/src/test/java/org/apache/cxf/jaxws/spring/
simple/src/main/java/org/apache/cxf/frontend/ simple/src/main/...
Author: dkulp
Date: Fri Feb 4 16:29:38 2011
New Revision: 1067214
URL: http://svn.apache.org/viewvc?rev=1067214&view=rev
Log:
[CXF-3310] Move the configureObject call for the ProxyFactory into the
proxy factory so the ProxyFactory api's can be used with configured
objects.
Modified:
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientFactoryBean.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsProxyFactoryBean.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/JaxWsProxyFactoryBeanDefinitionParser.java
cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java
cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/clients.xml
cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxyFactoryBean.java
cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ClientProxyFactoryBeanDefinitionParser.java
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientFactoryBean.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientFactoryBean.java?rev=1067214&r1=1067213&r2=1067214&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientFactoryBean.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientFactoryBean.java Fri Feb 4 16:29:38 2011
@@ -25,6 +25,7 @@ import javax.xml.ws.soap.SOAPBinding;
import org.apache.cxf.binding.soap.SoapBindingConfiguration;
import org.apache.cxf.frontend.ClientFactoryBean;
import org.apache.cxf.jaxws.binding.soap.JaxWsSoapBindingConfiguration;
+import org.apache.cxf.jaxws.support.JaxWsImplementorInfo;
import org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean;
/**
@@ -36,7 +37,14 @@ public class JaxWsClientFactoryBean exte
public JaxWsClientFactoryBean() {
super(new JaxWsServiceFactoryBean());
}
-
+ public void setServiceClass(Class serviceClass) {
+ super.setServiceClass(serviceClass);
+ if (((JaxWsServiceFactoryBean)getServiceFactory()).getJaxWsImplementorInfo() == null) {
+ JaxWsImplementorInfo implInfo = new JaxWsImplementorInfo(serviceClass);
+ ((JaxWsServiceFactoryBean)getServiceFactory()).setJaxWsImplementorInfo(implInfo);
+ }
+ }
+
protected SoapBindingConfiguration createSoapBindingConfig() {
JaxWsSoapBindingConfiguration bc
= new JaxWsSoapBindingConfiguration((JaxWsServiceFactoryBean)getServiceFactory());
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=1067214&r1=1067213&r2=1067214&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 Feb 4 16:29:38 2011
@@ -22,6 +22,7 @@ import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.List;
+import javax.xml.namespace.QName;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.handler.Handler;
@@ -65,6 +66,14 @@ public class JaxWsProxyFactoryBean exten
public JaxWsProxyFactoryBean(ClientFactoryBean fact) {
super(fact);
}
+ protected String getConfiguredName() {
+ QName name = getEndpointName();
+ if (name == null) {
+ JaxWsServiceFactoryBean sfb = (JaxWsServiceFactoryBean)getClientFactoryBean().getServiceFactory();
+ name = sfb.getJaxWsImplementorInfo().getEndpointName();
+ }
+ return name + ".jaxws-client.proxyFactory";
+ }
/**
* Specifies a list of JAX-WS Handler implementations that are to be
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java?rev=1067214&r1=1067213&r2=1067214&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java Fri Feb 4 16:29:38 2011
@@ -456,7 +456,7 @@ public class ServiceImpl extends Service
clientFac.setBindingId(portInfo.getBindingID());
clientFac.setAddress(portInfo.getAddress());
}
- configureObject(portName.toString() + ".jaxws-client.proxyFactory", proxyFac);
+ //configureObject(portName.toString() + ".jaxws-client.proxyFactory", proxyFac);
if (clazz != ServiceImpl.class) {
// handlerchain should be on the generated Service object
proxyFac.setLoadHandlers(false);
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/JaxWsProxyFactoryBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/JaxWsProxyFactoryBeanDefinitionParser.java?rev=1067214&r1=1067213&r2=1067214&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/JaxWsProxyFactoryBeanDefinitionParser.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/JaxWsProxyFactoryBeanDefinitionParser.java Fri Feb 4 16:29:38 2011
@@ -73,6 +73,10 @@ public class JaxWsProxyFactoryBeanDefini
setBus(bus);
}
}
+ public Object create() {
+ configured = true;
+ return super.create();
+ }
public synchronized Object getObject() throws Exception {
if (obj == null) {
obj = create();
Modified: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java?rev=1067214&r1=1067213&r2=1067214&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java Fri Feb 4 16:29:38 2011
@@ -43,6 +43,7 @@ import org.apache.cxf.configuration.spri
import org.apache.cxf.databinding.DataBinding;
import org.apache.cxf.databinding.source.SourceDataBinding;
import org.apache.cxf.endpoint.Client;
+import org.apache.cxf.endpoint.ClientImpl;
import org.apache.cxf.endpoint.NullConduitSelector;
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.interceptor.Interceptor;
@@ -369,5 +370,25 @@ public class SpringBeansTest extends Ass
Greeter g2 = greeters.getGreet2();
assertNotSame(g1, g2);
}
+ @Test
+ public void testClientFromFactory() throws Exception {
+ AbstractFactoryBeanDefinitionParser.setFactoriesAreAbstract(false);
+ ClassPathXmlApplicationContext ctx =
+ new ClassPathXmlApplicationContext(new String[] {"/org/apache/cxf/jaxws/spring/clients.xml"});
+
+
+ JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
+
+ Greeter g = factory.create(Greeter.class);
+ ClientImpl c = (ClientImpl)ClientProxy.getClient(g);
+ for (Interceptor<? extends Message> i : c.getInInterceptors()) {
+ if (i instanceof LoggingInInterceptor) {
+ ctx.close();
+ return;
+ }
+ }
+ fail("Did not configure the client");
+ }
}
+
Modified: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/clients.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/clients.xml?rev=1067214&r1=1067213&r2=1067214&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/clients.xml (original)
+++ cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/clients.xml Fri Feb 4 16:29:38 2011
@@ -88,4 +88,14 @@ http://cxf.apache.org/jaxws http://cxf.a
<soap:soapBinding mtomEnabled="true" version="1.2" />
</jaxws:binding>
</jaxws:client>
+
+ <jaxws:client name="{http://apache.org/hello_world_soap_http}GreeterPort"
+ serviceClass="org.apache.hello_world_soap_http.Greeter" serviceName="s:SOAPService"
+ endpointName="s:SoapPort" xmlns:s="http://apache.org/hello_world_soap_http"
+ address="http://localhost:8080/simpleWithAddress" wsdlLocation="wsdl/hello_world.wsdl"
+ createdFromAPI="true">
+ <jaxws:inInterceptors>
+ <bean class="org.apache.cxf.interceptor.LoggingInInterceptor" />
+ </jaxws:inInterceptors>
+ </jaxws:client>
</beans>
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=1067214&r1=1067213&r2=1067214&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 Feb 4 16:29:38 2011
@@ -27,8 +27,10 @@ import java.util.Map;
import javax.xml.namespace.QName;
import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
import org.apache.cxf.binding.BindingConfiguration;
import org.apache.cxf.common.injection.NoJSR250Annotations;
+import org.apache.cxf.configuration.Configurer;
import org.apache.cxf.configuration.security.AuthorizationPolicy;
import org.apache.cxf.databinding.DataBinding;
import org.apache.cxf.endpoint.Client;
@@ -53,6 +55,7 @@ import org.apache.cxf.service.factory.Re
*/
@NoJSR250Annotations
public class ClientProxyFactoryBean extends AbstractBasicInterceptorProvider {
+ protected boolean configured;
private ClientFactoryBean clientFactoryBean;
private String username;
private String password;
@@ -85,6 +88,28 @@ public class ClientProxyFactoryBean exte
setServiceClass(serviceClass);
return serviceClass.cast(create());
}
+ private void configureObject() {
+ if (configured) {
+ return;
+ }
+ if (bus == null) {
+ bus = BusFactory.getThreadDefaultBus();
+ }
+ Configurer configurer = bus.getExtension(Configurer.class);
+ String name = getConfiguredName();
+ if (null != configurer && name != null) {
+ configurer.configureBean(name, this);
+ }
+ configured = true;
+ }
+
+ protected String getConfiguredName() {
+ QName name = getEndpointName();
+ if (name == null) {
+ return null;
+ }
+ return name.toString() + ".client.proxyFactory";
+ }
/**
* Creates a proxy object that can be used to make remote invocations.
@@ -92,6 +117,8 @@ public class ClientProxyFactoryBean exte
* @return the proxy. You must cast the returned object to the appropriate class before using it.
*/
public Object create() {
+ configureObject();
+
if (properties == null) {
properties = new HashMap<String, Object>();
}
@@ -215,7 +242,11 @@ public class ClientProxyFactoryBean exte
}
public QName getEndpointName() {
- return clientFactoryBean.getEndpointName();
+ QName qn = clientFactoryBean.getEndpointName();
+ if (qn == null) {
+ qn = clientFactoryBean.getServiceFactory().getEndpointName(false);
+ }
+ return qn;
}
public void setEndpointName(QName endpointName) {
Modified: cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ClientProxyFactoryBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ClientProxyFactoryBeanDefinitionParser.java?rev=1067214&r1=1067213&r2=1067214&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ClientProxyFactoryBeanDefinitionParser.java (original)
+++ cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ClientProxyFactoryBeanDefinitionParser.java Fri Feb 4 16:29:38 2011
@@ -111,6 +111,10 @@ public class ClientProxyFactoryBeanDefin
setBus(bus);
}
}
+ public Object create() {
+ configured = true;
+ return super.create();
+ }
public synchronized Object getObject() throws Exception {
if (obj == null) {
obj = create();