You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2011/05/03 15:27:20 UTC
svn commit: r1099050 - in /camel/trunk/components/camel-cxf/src:
main/java/org/apache/camel/component/cxf/spring/
main/java/org/apache/camel/component/cxf/transport/
test/java/org/apache/camel/component/cxf/
test/java/org/apache/camel/component/cxf/cxf...
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);