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.