Author: ningjiang Date: Tue May 3 13:27:20 2011 New Revision: 1099050 URL: http://svn.apache.org/viewvc?rev=1099050&view=rev Log: CAMEL-3879 Applied patch of DanK with thanks
Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfRsClientFactoryBeanDefinitionParser.java camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfRsServerFactoryBeanDefinitionParser.java camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/transport/CamelTransportFactory.java camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFWsdlOnlyTest.java camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfSpringRouterTest.java camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanTest.java camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/SpringBusFactoryBeanTest.java Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java?rev=1099050&r1=1099049&r2=1099050&view=diff ============================================================================== --- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java (original) +++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java Tue May 3 13:27:20 2011 @@ -28,6 +28,7 @@ import org.apache.cxf.BusFactory; import org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor; import org.apache.cxf.bus.spring.SpringBusFactory; import org.apache.cxf.service.factory.ReflectionServiceFactoryBean; +import org.apache.cxf.version.Version; import org.springframework.beans.BeansException; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.ParserContext; @@ -87,15 +88,19 @@ public class CxfEndpointBeanDefinitionPa super(factory); } + @SuppressWarnings("deprecation") public void setApplicationContext(ApplicationContext ctx) throws BeansException { applicationContext = ctx; - if (getBus() == null) { - // Don't relate on the DefaultBus - BusFactory factory = new SpringBusFactory(ctx); - Bus bus = factory.createBus(); - setBus(bus); + if (bus == null) { + if (Version.getCurrentVersion().startsWith("2.3")) { + // Don't relate on the DefaultBus + BusFactory factory = new SpringBusFactory(ctx); + bus = factory.createBus(); + BusWiringBeanFactoryPostProcessor.updateBusReferencesInContext(bus, ctx); + } else { + bus = BusWiringBeanFactoryPostProcessor.addDefaultBus(ctx); + } } - BusWiringBeanFactoryPostProcessor.updateBusReferencesInContext(getBus(), ctx); } public ApplicationContext getApplicationContext() { Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfRsClientFactoryBeanDefinitionParser.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfRsClientFactoryBeanDefinitionParser.java?rev=1099050&r1=1099049&r2=1099050&view=diff ============================================================================== --- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfRsClientFactoryBeanDefinitionParser.java (original) +++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfRsClientFactoryBeanDefinitionParser.java Tue May 3 13:27:20 2011 @@ -29,6 +29,7 @@ import org.apache.cxf.bus.spring.SpringB import org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean; import org.apache.cxf.jaxrs.model.UserResource; import org.apache.cxf.jaxrs.utils.ResourceUtils; +import org.apache.cxf.version.Version; import org.springframework.beans.BeansException; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.ParserContext; @@ -78,13 +79,18 @@ public class CxfRsClientFactoryBeanDefin super(); } + @SuppressWarnings("deprecation") public void setApplicationContext(ApplicationContext ctx) throws BeansException { - if (getBus() == null) { - // Don't relate on the DefaultBus - BusFactory factory = new SpringBusFactory(ctx); - Bus bus = factory.createBus(); - BusWiringBeanFactoryPostProcessor.updateBusReferencesInContext(bus, ctx); - setBus(bus); + if (bus == null) { + if (Version.getCurrentVersion().startsWith("2.3")) { + // Don't relate on the DefaultBus + BusFactory factory = new SpringBusFactory(ctx); + bus = factory.createBus(); + BusWiringBeanFactoryPostProcessor.updateBusReferencesInContext(bus, ctx); + setBus(bus); + } else { + setBus(BusWiringBeanFactoryPostProcessor.addDefaultBus(ctx)); + } } } Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfRsServerFactoryBeanDefinitionParser.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfRsServerFactoryBeanDefinitionParser.java?rev=1099050&r1=1099049&r2=1099050&view=diff ============================================================================== --- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfRsServerFactoryBeanDefinitionParser.java (original) +++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfRsServerFactoryBeanDefinitionParser.java Tue May 3 13:27:20 2011 @@ -30,6 +30,7 @@ import org.apache.cxf.jaxrs.JAXRSServerF import org.apache.cxf.jaxrs.JAXRSServiceFactoryBean; import org.apache.cxf.jaxrs.model.UserResource; import org.apache.cxf.jaxrs.utils.ResourceUtils; +import org.apache.cxf.version.Version; import org.springframework.beans.BeansException; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.ParserContext; @@ -91,13 +92,18 @@ public class CxfRsServerFactoryBeanDefin super(sf); } + @SuppressWarnings("deprecation") public void setApplicationContext(ApplicationContext ctx) throws BeansException { - if (getBus() == null) { - // Don't relate on the DefaultBus - BusFactory factory = new SpringBusFactory(ctx); - Bus bus = factory.createBus(); - BusWiringBeanFactoryPostProcessor.updateBusReferencesInContext(bus, ctx); - setBus(bus); + if (bus == null) { + if (Version.getCurrentVersion().startsWith("2.3")) { + // Don't relate on the DefaultBus + BusFactory factory = new SpringBusFactory(ctx); + bus = factory.createBus(); + setBus(bus); + BusWiringBeanFactoryPostProcessor.updateBusReferencesInContext(bus, ctx); + } else { + setBus(BusWiringBeanFactoryPostProcessor.addDefaultBus(ctx)); + } } } Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/transport/CamelTransportFactory.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/transport/CamelTransportFactory.java?rev=1099050&r1=1099049&r2=1099050&view=diff ============================================================================== --- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/transport/CamelTransportFactory.java (original) +++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/transport/CamelTransportFactory.java Tue May 3 13:27:20 2011 @@ -17,8 +17,10 @@ package org.apache.camel.component.cxf.transport; import java.io.IOException; +import java.util.Arrays; import java.util.Collection; import java.util.HashSet; +import java.util.List; import java.util.Set; import javax.annotation.PostConstruct; @@ -28,6 +30,7 @@ import org.apache.camel.CamelContext; import org.apache.camel.component.cxf.CxfHeaderFilterStrategy; import org.apache.camel.spi.HeaderFilterStrategy; import org.apache.cxf.Bus; +import org.apache.cxf.common.injection.NoJSR250Annotations; import org.apache.cxf.service.model.EndpointInfo; import org.apache.cxf.transport.AbstractTransportFactory; import org.apache.cxf.transport.Conduit; @@ -41,12 +44,13 @@ import org.apache.cxf.ws.addressing.Endp /** * @version */ +@NoJSR250Annotations(unlessNull = "bus") public class CamelTransportFactory extends AbstractTransportFactory implements ConduitInitiator, DestinationFactory { public static final String TRANSPORT_ID = "http://cxf.apache.org/transports/camel"; + public static final List<String> DEFAULT_NAMESPACES = Arrays.asList(TRANSPORT_ID); private static final Set<String> URI_PREFIXES = new HashSet<String>(); - private Collection<String> activationNamespaces; private HeaderFilterStrategy headerFilterStrategy; private boolean checkException; @@ -54,7 +58,6 @@ public class CamelTransportFactory exten URI_PREFIXES.add("camel://"); } - private Bus bus; private CamelContext camelContext; public CamelTransportFactory() { @@ -63,27 +66,17 @@ public class CamelTransportFactory exten defaultHeaderFilterStrategy.setOutFilterPattern(null); headerFilterStrategy = defaultHeaderFilterStrategy; } - - @Resource(name = "bus") - public void setBus(Bus b) { - bus = b; - } - - public Bus getBus() { - return bus; - } - - public void setActivationNamespaces(Collection<String> ans) { - activationNamespaces = ans; - } - - public CamelContext getCamelContext() { - return camelContext; + public CamelTransportFactory(Bus b) { + super(DEFAULT_NAMESPACES, b); + CxfHeaderFilterStrategy defaultHeaderFilterStrategy = new CxfHeaderFilterStrategy(); + // Doesn't filter the camel relates headers by default + defaultHeaderFilterStrategy.setOutFilterPattern(null); + headerFilterStrategy = defaultHeaderFilterStrategy; } - @Resource(name = "camelContext") - public void setCamelContext(CamelContext camelContext) { - this.camelContext = camelContext; + @Resource(name = "cxf") + public void setBus(Bus b) { + super.setBus(b); } public void setCheckException(boolean check) { @@ -110,25 +103,6 @@ public class CamelTransportFactory exten return URI_PREFIXES; } - @PostConstruct - void registerWithBindingManager() { - if (null == bus) { - return; - } - ConduitInitiatorManager cim = bus.getExtension(ConduitInitiatorManager.class); - if (null != cim && null != activationNamespaces) { - for (String ns : activationNamespaces) { - cim.registerConduitInitiator(ns, this); - } - } - DestinationFactoryManager dfm = bus.getExtension(DestinationFactoryManager.class); - if (null != dfm && null != activationNamespaces) { - for (String ns : activationNamespaces) { - dfm.registerDestinationFactory(ns, this); - } - } - } - public HeaderFilterStrategy getHeaderFilterStrategy() { return headerFilterStrategy; } @@ -136,6 +110,13 @@ public class CamelTransportFactory exten public void setHeaderFilterStrategy(HeaderFilterStrategy headerFilterStrategy) { this.headerFilterStrategy = headerFilterStrategy; } + + public CamelContext getCamelContext() { + return camelContext; + } + public void setCamelContext(CamelContext c) { + camelContext = c; + } } Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFWsdlOnlyTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFWsdlOnlyTest.java?rev=1099050&r1=1099049&r2=1099050&view=diff ============================================================================== --- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFWsdlOnlyTest.java (original) +++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFWsdlOnlyTest.java Tue May 3 13:27:20 2011 @@ -30,18 +30,23 @@ import org.apache.camel.wsdl_first.Perso import org.apache.camel.wsdl_first.PersonImpl; import org.apache.camel.wsdl_first.PersonService; import org.apache.camel.wsdl_first.UnknownPersonFault; +import org.apache.cxf.BusFactory; import org.junit.After; +import org.junit.AfterClass; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import org.springframework.context.support.ClassPathXmlApplicationContext; public class CXFWsdlOnlyTest extends CamelSpringTestSupport { - private Endpoint endpoint1; - private Endpoint endpoint2; + private static Endpoint endpoint1; + private static Endpoint endpoint2; protected ClassPathXmlApplicationContext createApplicationContext() { + // When the Application is closed, the camel-cxf endpoint will be shutdown, + // this will cause the issue of the new http server doesn't send the response back. return new ClassPathXmlApplicationContext("org/apache/camel/component/cxf/WsdlOnlyBeans.xml"); } @@ -49,8 +54,8 @@ public class CXFWsdlOnlyTest extends Cam assertNotNull("No context found!", context); } - @Before - public void startServices() { + @BeforeClass + public static void startServices() { Object implementor = new PersonImpl(); String address = "http://localhost:9000/PersonService/"; endpoint1 = Endpoint.publish(address, implementor); @@ -59,8 +64,8 @@ public class CXFWsdlOnlyTest extends Cam endpoint2 = Endpoint.publish(address, implementor); } - @After - public void stopServices() { + @AfterClass + public static void stopServices() { if (endpoint1 != null) { endpoint1.stop(); } @@ -71,7 +76,7 @@ public class CXFWsdlOnlyTest extends Cam } @Test - public void testRoutes() throws Exception { + public void testRoutesWithFault() throws Exception { URL wsdlURL = getClass().getClassLoader().getResource("person.wsdl"); PersonService ss = new PersonService(wsdlURL, new QName("http://camel.apache.org/wsdl-first", "PersonService")); @@ -82,27 +87,10 @@ public class CXFWsdlOnlyTest extends Cam Holder<String> name = new Holder<String>(); client.getPerson(personId, ssn, name); assertEquals("Bonjour", name.value); - - Person client2 = ss.getSoap2(); - Holder<String> personId2 = new Holder<String>(); - personId2.value = "hello"; - Holder<String> ssn2 = new Holder<String>(); - Holder<String> name2 = new Holder<String>(); - client2.getPerson(personId2, ssn2, name2); - assertEquals("Bonjour", name2.value); - } - - @Test - public void testSoapFaultRoutes() { - URL wsdlURL = getClass().getClassLoader().getResource("person.wsdl"); - PersonService ss = new PersonService(wsdlURL, new QName("http://camel.apache.org/wsdl-first", - "PersonService")); - // test message mode - Person client = ss.getSoap(); - Holder<String> personId = new Holder<String>(); + personId.value = ""; - Holder<String> ssn = new Holder<String>(); - Holder<String> name = new Holder<String>(); + ssn = new Holder<String>(); + name = new Holder<String>(); Throwable t = null; try { client.getPerson(personId, ssn, name); @@ -112,13 +100,17 @@ public class CXFWsdlOnlyTest extends Cam } assertTrue(t instanceof UnknownPersonFault); - - // test PAYLOAD mode Person client2 = ss.getSoap2(); Holder<String> personId2 = new Holder<String>(); - personId2.value = ""; + personId2.value = "hello"; Holder<String> ssn2 = new Holder<String>(); Holder<String> name2 = new Holder<String>(); + client2.getPerson(personId2, ssn2, name2); + assertEquals("Bonjour", name2.value); + + personId2.value = ""; + ssn2 = new Holder<String>(); + name2 = new Holder<String>(); try { client2.getPerson(personId2, ssn2, name2); fail("Expect exception"); @@ -127,5 +119,6 @@ public class CXFWsdlOnlyTest extends Cam } assertTrue(t instanceof UnknownPersonFault); } - + + } Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfSpringRouterTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfSpringRouterTest.java?rev=1099050&r1=1099049&r2=1099050&view=diff ============================================================================== --- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfSpringRouterTest.java (original) +++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfSpringRouterTest.java Tue May 3 13:27:20 2011 @@ -39,10 +39,9 @@ public class CxfSpringRouterTest extends @After public void tearDown() throws Exception { - if (applicationContext != null) { - applicationContext.destroy(); - } + // Don't close the application context, as it will cause some trouble on the bus shutdown super.tearDown(); + } @Override Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanTest.java?rev=1099050&r1=1099049&r2=1099050&view=diff ============================================================================== --- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanTest.java (original) +++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanTest.java Tue May 3 13:27:20 2011 @@ -18,6 +18,7 @@ package org.apache.camel.component.cxf.c import java.io.InputStream; import java.net.URL; +import java.net.URLConnection; import javax.xml.namespace.QName; import javax.xml.ws.Holder; @@ -105,15 +106,12 @@ public class CxfBeanTest extends Abstrac invokeRsService("http://localhost:9000/customerservice/orders/223/products/323", "{\"Product\":{\"description\":\"product 323\",\"id\":323}}"); - - } @Test public void testGetConsumerWithQueryParam() throws Exception { invokeRsService("http://localhost:9000/customerservice/customers?id=123", - "{\"Customer\":{\"id\":123,\"name\":\"John\"}}"); - + "{\"Customer\":{\"id\":123,\"name\":\"John\"}}"); } @Test @@ -126,7 +124,6 @@ public class CxfBeanTest extends Abstrac invokeRsService("http://localhost:9000/customerservice/orders/223/products/323", "{\"Product\":{\"description\":\"product 323\",\"id\":323}}"); - } @Test Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java?rev=1099050&r1=1099049&r2=1099050&view=diff ============================================================================== --- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java (original) +++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java Tue May 3 13:27:20 2011 @@ -19,6 +19,7 @@ package org.apache.camel.component.cxf.j import java.io.FileNotFoundException; import java.io.IOException; import java.net.URL; +import java.net.URLConnection; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Response; Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/SpringBusFactoryBeanTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/SpringBusFactoryBeanTest.java?rev=1099050&r1=1099049&r2=1099050&view=diff ============================================================================== --- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/SpringBusFactoryBeanTest.java (original) +++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/SpringBusFactoryBeanTest.java Tue May 3 13:27:20 2011 @@ -33,7 +33,7 @@ public class SpringBusFactoryBeanTest ex public void getTheBusInstance() { Bus bus = (Bus)ctx.getBean("cxfBus"); assertNotNull("The bus should not be null", bus); - if (!Version.getCurrentVersion().startsWith("2.4")) { + if (Version.getCurrentVersion().startsWith("2.3")) { // This test just for the CXF 2.3.x, we skip this test with CXF 2.4.x CamelTransportFactory factory = bus.getExtension(CamelTransportFactory.class); assertNull("You should not find the factory here", factory); @@ -41,6 +41,7 @@ public class SpringBusFactoryBeanTest ex bus = (Bus)ctx.getBean("myBus"); assertNotNull("The bus should not be null", bus); + CamelTransportFactory factory = bus.getExtension(CamelTransportFactory.class); assertNotNull("You should find the factory here", factory); SoapBindingFactory soapBindingFactory = bus.getExtension(SoapBindingFactory.class);