Author: ningjiang
Date: Tue Nov 24 13:50:44 2009
New Revision: 883695
URL: http://svn.apache.org/viewvc?rev=883695&view=rev
Log:
CAMEL-2216 camel-cxf should not relay on the default Bus
Modified:
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerStartTwiceTest.java
Modified:
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
URL:
http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java?rev=883695&r1=883694&r2=883695&view=diff
==============================================================================
---
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
(original)
+++
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
Tue Nov 24 13:50:44 2009
@@ -41,23 +41,9 @@
public CxfConsumer(CxfEndpoint endpoint, Processor processor) throws
Exception {
super(endpoint, processor);
- Bus bus = null;
this.endpoint = endpoint;
boolean isWebServiceProvider = false;
- if (endpoint.getApplicationContext() != null) {
- if (endpoint.getCxfEndpointBean() != null) {
- bus = endpoint.getCxfEndpointBean().getBus();
- } else {
- SpringBusFactory busFactory = new
SpringBusFactory(endpoint.getApplicationContext());
- bus = busFactory.createBus();
- }
- if (CxfEndpointUtils.getSetDefaultBus(endpoint)) {
- BusFactory.setDefaultBus(bus);
- }
- } else {
- // now we just use the default bus here
- bus = BusFactory.getDefaultBus();
- }
+
Class serviceClass = CxfEndpointUtils.getServiceClass(endpoint);
ServerFactoryBean svrBean =
CxfEndpointUtils.getServerFactoryBean(serviceClass);
@@ -98,7 +84,7 @@
//features.add(new LoggingFeature());
}
}
- svrBean.setBus(bus);
+ svrBean.setBus(endpoint.getBus());
svrBean.setStart(false);
server = svrBean.create();
Modified:
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
URL:
http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java?rev=883695&r1=883694&r2=883695&view=diff
==============================================================================
---
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
(original)
+++
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
Tue Nov 24 13:50:44 2009
@@ -21,6 +21,7 @@
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.camel.Consumer;
import org.apache.camel.ExchangePattern;
@@ -30,10 +31,14 @@
import org.apache.camel.component.cxf.headers.MessageHeadersRelay;
import org.apache.camel.component.cxf.headers.SoapMessageHeadersRelay;
import org.apache.camel.component.cxf.spring.CxfEndpointBean;
+import org.apache.camel.component.cxf.util.CxfEndpointUtils;
import org.apache.camel.impl.DefaultEndpoint;
import org.apache.camel.spi.HeaderFilterStrategy;
import org.apache.camel.spring.SpringCamelContext;
import org.apache.camel.util.ObjectHelper;
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.bus.spring.SpringBusFactory;
import org.apache.cxf.configuration.spring.ConfigurerImpl;
import org.apache.cxf.helpers.CastUtils;
import org.apache.cxf.message.Message;
@@ -61,6 +66,8 @@
private boolean isSpringContextEndpoint;
private boolean inOut = true;
private boolean relayHeaders = true;
+ private Bus bus;
+ private AtomicBoolean getBusHasBeenCalled = new AtomicBoolean(false);
private Boolean isSetDefaultBus;
private ConfigurerImpl configurer;
@@ -109,6 +116,33 @@
public CxfExchange createExchange(Message inMessage) {
return new CxfExchange(getCamelContext(), getExchangePattern(),
inMessage);
}
+
+ public Bus getBus() {
+ if (bus == null) {
+ bus = doGetBus();
+ }
+
+ if (!getBusHasBeenCalled.getAndSet(true) &&
CxfEndpointUtils.getSetDefaultBus(this)) {
+ BusFactory.setDefaultBus(bus);
+ }
+ return bus;
+ }
+
+ public Bus doGetBus() {
+ Bus bus = null;
+ if (getApplicationContext() != null) {
+ if (getCxfEndpointBean() != null) {
+ bus = getCxfEndpointBean().getBus();
+ } else {
+ SpringBusFactory busFactory = new
SpringBusFactory(getApplicationContext());
+ bus = busFactory.createBus();
+ }
+ } else {
+ // now we just create a new bus
+ bus = SpringBusFactory.newInstance().createBus();
+ }
+ return bus;
+ }
public String getDataFormat() {
return dataFormat;
Modified:
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
URL:
http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java?rev=883695&r1=883694&r2=883695&view=diff
==============================================================================
---
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
(original)
+++
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
Tue Nov 24 13:50:44 2009
@@ -95,22 +95,6 @@
// If cfb is null, we will try to find the right cfb to use.
private Client createClientFromClientFactoryBean(ClientProxyFactoryBean
cfb) throws Exception {
- Bus bus = null;
- if (endpoint.getApplicationContext() != null) {
- if (endpoint.getCxfEndpointBean() != null) {
- bus = endpoint.getCxfEndpointBean().getBus();
- } else {
- SpringBusFactory busFactory = new
SpringBusFactory(endpoint.getApplicationContext());
- bus = busFactory.createBus();
- }
- if (CxfEndpointUtils.getSetDefaultBus(endpoint)) {
- BusFactory.setDefaultBus(bus);
- }
- } else {
- // now we just use the default bus here
- bus = BusFactory.getDefaultBus();
- }
-
Class serviceClass = CxfEndpointUtils.getServiceClass(endpoint);
// We need to choose the right front end to create the
clientFactoryBean
if (cfb == null) {
@@ -147,7 +131,7 @@
cfb.getFeatures().add(new PayLoadDataFormatFeature());
}
- cfb.setBus(bus);
+ cfb.setBus(endpoint.getBus());
return
((ClientProxy)Proxy.getInvocationHandler(cfb.create())).getClient();
}
Modified:
camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerStartTwiceTest.java
URL:
http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerStartTwiceTest.java?rev=883695&r1=883694&r2=883695&view=diff
==============================================================================
---
camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerStartTwiceTest.java
(original)
+++
camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerStartTwiceTest.java
Tue Nov 24 13:50:44 2009
@@ -53,7 +53,6 @@
context.start();
fail("Expect an exception here");
} catch (Exception ex) {
- ex.printStackTrace();
assertTrue("Expect the exception message has a Soap errror",
ex.getMessage().equals("Soap 1.1 endpoint already registered on address
http://localhost:7070/test"));
context.stop();
}