Author: ningjiang
Date: Wed Oct 31 06:15:06 2012
New Revision: 1403998

URL: http://svn.apache.org/viewvc?rev=1403998&view=rev
Log:
CAMEL-5755 make cxf exceptionMessageCauseEnabled option work within camel-cxf 
with thanks to Aki

Added:
    
camel/branches/camel-2.10.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerPayloadFaultCauseEnabledTest.java
      - copied unchanged from r1403990, 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerPayloadFaultCauseEnabledTest.java
    
camel/branches/camel-2.10.x/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/CxfConsumerFaultCauseEnabledBeans.xml
      - copied unchanged from r1403990, 
camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/CxfConsumerFaultCauseEnabledBeans.xml
Modified:
    camel/branches/camel-2.10.x/   (props changed)
    
camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java

Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
  Merged /camel/trunk:r1403990

Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: 
camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java?rev=1403998&r1=1403997&r2=1403998&view=diff
==============================================================================
--- 
camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
 (original)
+++ 
camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
 Wed Oct 31 06:15:06 2012
@@ -33,6 +33,7 @@ import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.frontend.ServerFactoryBean;
 import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.message.Exchange;
+import org.apache.cxf.message.FaultMode;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.service.invoker.Invoker;
 import org.apache.cxf.service.model.BindingOperationInfo;
@@ -174,23 +175,25 @@ public class CxfConsumer extends Default
                 CxfEndpoint endpoint = (CxfEndpoint)getEndpoint();
                 CxfBinding binding = endpoint.getCxfBinding();                
                 
-                checkFailure(camelExchange);
+                checkFailure(camelExchange, cxfExchange);
                 
                 binding.populateCxfResponseFromExchange(camelExchange, 
cxfExchange);
                 
                 // check failure again as fault could be discovered by 
converter
-                checkFailure(camelExchange);
+                checkFailure(camelExchange, cxfExchange);
 
                 // copy the headers javax.xml.ws header back
                 binding.copyJaxWsContext(cxfExchange, (Map<String, 
Object>)camelExchange.getProperty(CxfConstants.JAXWS_CONTEXT));
             }
 
-            private void checkFailure(org.apache.camel.Exchange camelExchange) 
throws Fault {
+            private void checkFailure(org.apache.camel.Exchange camelExchange, 
Exchange cxfExchange) throws Fault {
                 final Throwable t;
                 if (camelExchange.isFailed()) {
                     t = (camelExchange.hasOut() && 
camelExchange.getOut().isFault()) ? camelExchange.getOut()
                         .getBody(Throwable.class) : 
camelExchange.getException();
+                    cxfExchange.getInMessage().put(FaultMode.class, 
FaultMode.UNCHECKED_APPLICATION_FAULT);
                     if (t instanceof Fault) {
+                        cxfExchange.getInMessage().put(FaultMode.class, 
FaultMode.CHECKED_APPLICATION_FAULT);
                         throw (Fault)t;
                     } else if (t != null) {                        
                         // This is not a CXF Fault. Build the CXF Fault 
manuallly.


Reply via email to