This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch CAMEL-13755
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 573c4a51ba9205ed62afa399c3da1c49b6c25143
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Sun Jul 21 18:48:43 2019 +0200

    CAMEL-13755: camel3 - Remove fault from camel-core/message and let it be 
component specific for camel-cxf and camel-spring-ws as its only used by SOAP-WS
---
 .../java/org/apache/camel/component/cxf/CxfConsumer.java  | 15 +++++++++++----
 .../camel/main/parser/MyConfigurationParserTest.java      |  2 +-
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git 
a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
 
b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
index cad4692..34cb15a 100644
--- 
a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
+++ 
b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
@@ -325,14 +325,21 @@ public class CxfConsumer extends DefaultConsumer 
implements Suspendable {
         }
 
         private void checkFailure(org.apache.camel.Exchange camelExchange, 
Exchange cxfExchange) throws Fault {
-            final Throwable t;
-            if (camelExchange.isFailed()) {
-                t = camelExchange.getException();
+            Throwable t = camelExchange.getException();
+            if (t == null) {
+                // SOAP faults can be stored as exceptions as message body (to 
be backwards compatible)
+                Object body = camelExchange.getMessage().getBody();
+                if (body instanceof Throwable) {
+                    t = (Throwable) body;
+                }
+            }
+
+            if (t != null) {
                 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) {
+                } else {
                     // This is not a CXF Fault. Build the CXF Fault manually.
                     Fault fault = new Fault(t);
                     if (fault.getMessage() == null) {
diff --git 
a/tooling/maven/camel-main-parser/src/test/java/org/apache/camel/main/parser/MyConfigurationParserTest.java
 
b/tooling/maven/camel-main-parser/src/test/java/org/apache/camel/main/parser/MyConfigurationParserTest.java
index 7bbed12..7c5833e 100644
--- 
a/tooling/maven/camel-main-parser/src/test/java/org/apache/camel/main/parser/MyConfigurationParserTest.java
+++ 
b/tooling/maven/camel-main-parser/src/test/java/org/apache/camel/main/parser/MyConfigurationParserTest.java
@@ -30,7 +30,7 @@ public class MyConfigurationParserTest extends TestCase {
         MainConfigurationParser parser = new MainConfigurationParser();
         List<ConfigurationModel> list = 
parser.parseConfigurationSource(fileName);
         assertNotNull(list);
-        assertEquals(41, list.size());
+        assertEquals(40, list.size());
 
         assertEquals("name", list.get(0).getName());
         assertEquals("java.lang.String", list.get(0).getJavaType());

Reply via email to