Repository: camel
Updated Branches:
  refs/heads/camel-2.11.x e4f93fcdc -> 789f0921c
  refs/heads/camel-2.12.x 88780f154 -> 68b95249e


CAMEL-7229 Fixed the issue of CxfRsProducer override bean bus


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/68b95249
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/68b95249
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/68b95249

Branch: refs/heads/camel-2.12.x
Commit: 68b95249ea7587eacd2a2325ab084a8c3b5f5d2f
Parents: 88780f1
Author: Willem Jiang <willem.ji...@gmail.com>
Authored: Mon Mar 3 16:40:28 2014 +0800
Committer: Willem Jiang <willem.ji...@gmail.com>
Committed: Mon Mar 3 17:39:07 2014 +0800

----------------------------------------------------------------------
 .../camel/component/cxf/jaxrs/CxfRsConsumer.java   |  6 ++++++
 .../camel/component/cxf/jaxrs/CxfRsEndpoint.java   | 17 +++++------------
 .../camel/component/cxf/jaxrs/CxfRsProducer.java   | 16 +++++++++++-----
 .../CxfRsProducerClientFactoryCache2Test.java      |  1 +
 .../jaxrs/CxfRsProducerClientFactoryCacheTest2.xml | 11 +++++++----
 5 files changed, 30 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/68b95249/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumer.java
 
b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumer.java
index f1039e2..b2272d0 100644
--- 
a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumer.java
+++ 
b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumer.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.cxf.jaxrs;
 
 import org.apache.camel.Processor;
 import org.apache.camel.impl.DefaultConsumer;
+import org.apache.cxf.Bus;
 import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 
@@ -34,6 +35,11 @@ public class CxfRsConsumer extends DefaultConsumer {
         super(endpoint, processor);
         CxfRsInvoker cxfRsInvoker = new CxfRsInvoker(endpoint, this);
         JAXRSServerFactoryBean svrBean = 
endpoint.createJAXRSServerFactoryBean();
+        Bus bus = ((CxfRsEndpoint)getEndpoint()).getBus();
+        // We need to apply the bus setting from the CxfRsEndpoint which is 
not use the default bus
+        if (bus != null) {
+            svrBean.setBus(bus);
+        }
         svrBean.setInvoker(cxfRsInvoker);
         server = svrBean.create();
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/68b95249/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
 
b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
index 625643b..f5360b8 100644
--- 
a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
+++ 
b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
@@ -90,9 +90,7 @@ public class CxfRsEndpoint extends DefaultEndpoint implements 
HeaderFilterStrate
     private int loggingSizeLimit;
     private boolean skipFaultLogging;
     private BindingStyle bindingStyle = BindingStyle.Default;
-    
-    private AtomicBoolean getBusHasBeenCalled = new AtomicBoolean(false);
-
+   
     private boolean isSetDefaultBus;
     
     private List<Feature> features = new 
ModCountCopyOnWriteArrayList<Feature>();
@@ -358,18 +356,13 @@ public class CxfRsEndpoint extends DefaultEndpoint 
implements HeaderFilterStrate
     
     public void setBus(Bus bus) {
         this.bus = bus;
-    }
-
-    public Bus getBus() {
-        if (bus == null) {
-            bus = CxfEndpointUtils.createBus(getCamelContext());
-            LOG.debug("Using DefaultBus {}", bus);
-        }
-
-        if (!getBusHasBeenCalled.getAndSet(true) && isSetDefaultBus) {
+        if (isSetDefaultBus) {
             BusFactory.setDefaultBus(bus);
             LOG.debug("Set bus {} as thread default bus", bus);
         }
+    }
+
+    public Bus getBus() {
         return bus;
     }
     

http://git-wip-us.apache.org/repos/asf/camel/blob/68b95249/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java
 
b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java
index 30b487c..d6f0ee5 100644
--- 
a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java
+++ 
b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java
@@ -38,6 +38,7 @@ import 
org.apache.camel.component.cxf.common.message.CxfConstants;
 import org.apache.camel.impl.DefaultProducer;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.LRUSoftCache;
+import org.apache.cxf.Bus;
 import org.apache.cxf.jaxrs.JAXRSServiceFactoryBean;
 import org.apache.cxf.jaxrs.client.Client;
 import org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean;
@@ -95,8 +96,11 @@ public class CxfRsProducer extends DefaultProducer {
         Message inMessage = exchange.getIn();
         JAXRSClientFactoryBean cfb = 
clientFactoryBeanCache.get(CxfEndpointUtils
             .getEffectiveAddress(exchange, 
((CxfRsEndpoint)getEndpoint()).getAddress()));
-        
-        cfb.setBus(((CxfRsEndpoint)getEndpoint()).getBus());
+        Bus bus = ((CxfRsEndpoint)getEndpoint()).getBus();
+        // We need to apply the bus setting from the CxfRsEndpoint which is 
not use the default bus
+        if (bus != null) {
+            cfb.setBus(bus);
+        }
         WebClient client = cfb.createWebClient();
         String httpMethod = inMessage.getHeader(Exchange.HTTP_METHOD, 
String.class);
         Class<?> responseClass = 
inMessage.getHeader(CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS, Class.class);
@@ -196,9 +200,11 @@ public class CxfRsProducer extends DefaultProducer {
         
         JAXRSClientFactoryBean cfb = 
clientFactoryBeanCache.get(CxfEndpointUtils
                                    .getEffectiveAddress(exchange, 
((CxfRsEndpoint)getEndpoint()).getAddress()));
-
-        cfb.setBus(((CxfRsEndpoint)getEndpoint()).getBus());
-        
+        Bus bus = ((CxfRsEndpoint)getEndpoint()).getBus();
+        // We need to apply the bus setting from the CxfRsEndpoint which is 
not use the default bus
+        if (bus != null) {
+            cfb.setBus(bus);
+        }
         if (varValues == null) {
             target = cfb.create();
         } else {

http://git-wip-us.apache.org/repos/asf/camel/blob/68b95249/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerClientFactoryCache2Test.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerClientFactoryCache2Test.java
 
b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerClientFactoryCache2Test.java
index 03d1565..f6c7d23 100644
--- 
a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerClientFactoryCache2Test.java
+++ 
b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerClientFactoryCache2Test.java
@@ -26,6 +26,7 @@ import org.apache.camel.component.cxf.CXFTestSupport;
 import org.apache.camel.component.cxf.common.message.CxfConstants;
 import org.apache.camel.component.cxf.jaxrs.testbean.Customer;
 import org.apache.camel.spring.SpringCamelContext;
+import org.apache.cxf.BusFactory;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;

http://git-wip-us.apache.org/repos/asf/camel/blob/68b95249/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/jaxrs/CxfRsProducerClientFactoryCacheTest2.xml
----------------------------------------------------------------------
diff --git 
a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/jaxrs/CxfRsProducerClientFactoryCacheTest2.xml
 
b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/jaxrs/CxfRsProducerClientFactoryCacheTest2.xml
index 33031c7..370160d 100644
--- 
a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/jaxrs/CxfRsProducerClientFactoryCacheTest2.xml
+++ 
b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/jaxrs/CxfRsProducerClientFactoryCacheTest2.xml
@@ -17,6 +17,7 @@
 -->
 <beans xmlns="http://www.springframework.org/schema/beans"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xmlns:cxf="http://camel.apache.org/schema/cxf"; 
xmlns:jaxrs="http://cxf.apache.org/jaxrs";
+       xmlns:cxfcore="http://cxf.apache.org/core";
        xmlns:httpj="http://cxf.apache.org/transports/http-jetty/configuration"; 
xmlns:sec="http://cxf.apache.org/configuration/security";
        xmlns:http="http://cxf.apache.org/transports/http/configuration"; 
xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
@@ -25,9 +26,10 @@
        http://camel.apache.org/schema/spring/camel-spring.xsd 
http://cxf.apache.org/transports/http-jetty/configuration
        http://cxf.apache.org/schemas/configuration/http-jetty.xsd 
http://cxf.apache.org/configuration/security
        http://cxf.apache.org/schemas/configuration/security.xsd 
http://cxf.apache.org/transports/http/configuration
-       http://cxf.apache.org/schemas/configuration/http-conf.xsd ">
+       http://cxf.apache.org/schemas/configuration/http-conf.xsd 
+       http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd";>
        <bean 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
-
+    
        <jaxrs:server id="restService" 
address="https://localhost:${mySecurePort}/CxfRsProducerTest/";
                staticSubresourceResolution="true">
                <jaxrs:serviceBeans>
@@ -41,12 +43,13 @@
                <route>
                        <from uri="direct://http"/>
                        <recipientList>
-                               
<simple>cxfrs://https://localhost:${header.clientPort}/CxfRsProducerTest/</simple>
+                           <!-- need to pass the spring http conduit setting 
the CxfProducer, as we don't create a default bus for the CxfRsEndpoint anymore 
-->
+                               
<simple>cxfrs://https://localhost:${header.clientPort}/CxfRsProducerTest/?bus=#cxf</simple>
                        </recipientList>
                </route>
        </camelContext>
 
-       <httpj:engine-factory id="tls-config">
+       <httpj:engine-factory id="tls-config" >
                <httpj:engine port="${mySecurePort}">
                        <httpj:tlsServerParameters>
                                <sec:keyManagers keyPassword="password">

Reply via email to