Author: ningjiang Date: Thu Jan 8 20:23:05 2009 New Revision: 732923 URL: http://svn.apache.org/viewvc?rev=732923&view=rev Log: CAMEL-1238 using the CXFEndpoint's bus instead of creating a new one.
Modified: activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBean.java activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java activemq/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java Modified: activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java?rev=732923&r1=732922&r2=732923&view=diff ============================================================================== --- activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java (original) +++ activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java Thu Jan 8 20:23:05 2009 @@ -46,15 +46,14 @@ Bus bus = null; this.endpoint = endpoint; boolean isWebServiceProvider = false; - if (endpoint.getApplicationContext() != null) { - SpringBusFactory bf = new SpringBusFactory(endpoint.getApplicationContext()); - bus = bf.createBus(); + if (endpoint.getApplicationContext() != null) { + bus = endpoint.getCxfEndpointBean().getBus(); if (CxfEndpointUtils.getSetDefaultBus(endpoint)) { - BusFactory.setDefaultBus(bus); + BusFactory.setThreadDefaultBus(bus); } } else { // now we just use the default bus here - bus = BusFactory.getDefaultBus(); + bus = BusFactory.getThreadDefaultBus(); } ServerFactoryBean svrBean = null; Modified: activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java?rev=732923&r1=732922&r2=732923&view=diff ============================================================================== --- activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java (original) +++ activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java Thu Jan 8 20:23:05 2009 @@ -100,15 +100,14 @@ // If cfb is null, we will try to find the right cfb to use. private Client createClientFromClientFactoryBean(ClientProxyFactoryBean cfb) throws CamelException { Bus bus = null; - if (endpoint.getApplicationContext() != null) { - SpringBusFactory bf = new SpringBusFactory(endpoint.getApplicationContext()); - bus = bf.createBus(); + if (endpoint.getApplicationContext() != null) { + bus = endpoint.getCxfEndpointBean().getBus(); if (CxfEndpointUtils.getSetDefaultBus(endpoint)) { - BusFactory.setDefaultBus(bus); + BusFactory.setThreadDefaultBus(bus); } } else { // now we just use the default bus here - bus = BusFactory.getDefaultBus(); + bus = BusFactory.getThreadDefaultBus(); } if (endpoint.isSpringContextEndpoint()) { CxfEndpointBean cxfEndpointBean = endpoint.getCxfEndpointBean(); Modified: activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBean.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBean.java?rev=732923&r1=732922&r2=732923&view=diff ============================================================================== --- activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBean.java (original) +++ activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBean.java Thu Jan 8 20:23:05 2009 @@ -29,7 +29,11 @@ private List handlers; public CxfEndpointBean() { - setServiceFactory(new ReflectionServiceFactoryBean()); + this(new ReflectionServiceFactoryBean()); + } + + public CxfEndpointBean(ReflectionServiceFactoryBean factory) { + setServiceFactory(factory); } public List getHandlers() { Modified: activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java?rev=732923&r1=732922&r2=732923&view=diff ============================================================================== --- activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java (original) +++ activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java Thu Jan 8 20:23:05 2009 @@ -20,12 +20,19 @@ import javax.xml.namespace.QName; import org.w3c.dom.Element; +import org.apache.cxf.Bus; +import org.apache.cxf.BusFactory; +import org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor; import org.apache.cxf.common.util.StringUtils; import org.apache.cxf.configuration.spring.AbstractBeanDefinitionParser; +import org.apache.cxf.service.factory.ReflectionServiceFactoryBean; +import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanDefinitionStoreException; import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.ParserContext; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; @@ -88,6 +95,25 @@ protected boolean hasBusProperty() { return true; } + + public static class CxfSpringEndpointBean extends CxfEndpointBean implements ApplicationContextAware { + public CxfSpringEndpointBean() { + super(); + } + + public CxfSpringEndpointBean(ReflectionServiceFactoryBean factory) { + super(factory); + } + + public void setApplicationContext(ApplicationContext ctx) throws BeansException { + if (getBus() == null) { + Bus bus = BusFactory.getThreadDefaultBus(); + BusWiringBeanFactoryPostProcessor.updateBusReferencesInContext(bus, ctx); + setBus(bus); + } + } + + } } Modified: activemq/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java?rev=732923&r1=732922&r2=732923&view=diff ============================================================================== --- activemq/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java (original) +++ activemq/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java Thu Jan 8 20:23:05 2009 @@ -17,9 +17,7 @@ package org.apache.camel.component.cxf.spring; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import junit.framework.TestCase; import org.apache.camel.CamelContext; @@ -28,9 +26,6 @@ import org.apache.camel.ProducerTemplate; import org.apache.camel.RuntimeCamelException; import org.apache.camel.component.cxf.CxfConstants; -import org.apache.cxf.endpoint.Client; -import org.apache.cxf.message.Message; -import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; @@ -57,7 +52,7 @@ CamelContext camelContext = (CamelContext) ctx.getBean("camel"); ProducerTemplate template = camelContext.createProducerTemplate(); try { - Exchange exchange = template.send("cxf:bean:routerEndpoint", new Processor() { + template.send("cxf:bean:serviceEndpoint", new Processor() { public void process(final Exchange exchange) { final List<String> params = new ArrayList<String>(); params.add("hello"); @@ -67,7 +62,8 @@ }); fail("should get the exception here"); } catch (RuntimeCamelException ex) { - // do nothing here + assertTrue("Should get the fault here ", ex.getCause() instanceof org.apache.cxf.interceptor.Fault); + // do nothing here; } }