Author: gnodet
Date: Thu Sep 25 05:42:07 2008
New Revision: 698948

URL: http://svn.apache.org/viewvc?rev=698948&view=rev
Log:
SM-1589: Class JbiExchange setting fault, but message is not a fault

Added:
    
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOutFaultTest.java
      - copied, changed from r698940, 
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOutTest.java
Modified:
    
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/CamelProviderEndpoint.java
    
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiExchange.java

Modified: 
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/CamelProviderEndpoint.java
URL: 
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/CamelProviderEndpoint.java?rev=698948&r1=698947&r2=698948&view=diff
==============================================================================
--- 
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/CamelProviderEndpoint.java
 (original)
+++ 
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/CamelProviderEndpoint.java
 Thu Sep 25 05:42:07 2008
@@ -92,7 +92,8 @@
                 }
                 JbiExchange camelExchange = new 
JbiExchange(camelEndpoint.getCamelContext(), binding, exchange);
                 camelProcessor.process(camelExchange);
-                if (camelExchange.isFailed()) {
+                if (camelExchange.isFailed()
+                        && (camelExchange.getFault(false) == null || 
camelExchange.getFault(false).getBody() == null)) {
                     Throwable t = camelExchange.getException();
                     Exception e;
                     if (t == null) {
@@ -112,7 +113,8 @@
                 }
                 JbiExchange camelExchange = new 
JbiExchange(camelEndpoint.getCamelContext(), binding, exchange);
                 camelProcessor.process(camelExchange);
-                if (camelExchange.isFailed()) {
+                if (camelExchange.isFailed()
+                        && (camelExchange.getFault(false) == null || 
camelExchange.getFault(false).getBody() == null)) {
                     Throwable t = camelExchange.getException();
                     Exception e;
                     if (t == null) {

Modified: 
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiExchange.java
URL: 
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiExchange.java?rev=698948&r1=698947&r2=698948&view=diff
==============================================================================
--- 
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiExchange.java
 (original)
+++ 
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiExchange.java
 Thu Sep 25 05:42:07 2008
@@ -20,6 +20,7 @@
 import javax.jbi.messaging.InOnly;
 import javax.jbi.messaging.MessageExchange;
 import javax.jbi.messaging.NormalizedMessage;
+import javax.jbi.messaging.Fault;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ExchangePattern;
@@ -159,8 +160,14 @@
             try {
                 NormalizedMessage msg = messageExchange.getMessage(name);
                 if (msg == null) {
-                    msg = messageExchange.createMessage();
-                    messageExchange.setMessage(msg, name);
+                    if ("fault".equals(name)) {
+                        Fault f = messageExchange.createFault();
+                        messageExchange.setFault(f);
+                        msg = f;
+                    } else {
+                        msg = messageExchange.createMessage();
+                        messageExchange.setMessage(msg, name);
+                    }
                 }
                 return new JbiMessage(msg);
             } catch (JBIException e) {

Copied: 
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOutFaultTest.java
 (from r698940, 
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOutTest.java)
URL: 
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOutFaultTest.java?p2=servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOutFaultTest.java&p1=servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOutTest.java&r1=698940&r2=698948&rev=698948&view=diff
==============================================================================
--- 
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOutTest.java
 (original)
+++ 
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOutFaultTest.java
 Thu Sep 25 05:42:07 2008
@@ -17,15 +17,20 @@
 package org.apache.servicemix.camel;
 
 import javax.jbi.messaging.MessageExchange;
+import javax.jbi.messaging.NormalizedMessage;
+import javax.jbi.messaging.MessagingException;
+import javax.jbi.messaging.Fault;
 import javax.jbi.servicedesc.ServiceEndpoint;
 import javax.xml.namespace.QName;
 
 import org.apache.servicemix.client.ServiceMixClient;
+import org.apache.servicemix.jbi.FaultException;
+import org.apache.camel.converter.jaxp.StringSource;
 
 /**
  * @version $Revision: 1.1 $
  */
-public class JbiInOutTest extends
+public class JbiInOutFaultTest extends
         NonJbiCamelEndpointsIntegrationTest {
     /*
      * @see TestCase#setUp()
@@ -35,7 +40,13 @@
         suName = "su5";
         super.setUp();
 
-        MyEchoComponent echo = new MyEchoComponent();
+        MyEchoComponent echo = new MyEchoComponent() {
+            protected boolean transform(MessageExchange exchange, 
NormalizedMessage in, NormalizedMessage out) throws MessagingException {
+                Fault f = exchange.createFault();
+                f.setContent(new StringSource("<fault/>"));
+                throw new FaultException("Error", exchange, f);
+            }
+        };
         echo.setService(new QName("namespace", "echo"));
         echo.setEndpoint("endpoint");
         container.activateComponent(echo, "echo");
@@ -52,8 +63,8 @@
 
     @Override
     protected void checkResult(MessageExchange exchange) {
-        assertNotNull(exchange.getMessage("out"));
-        assertNotNull(exchange.getMessage("out").getContent());
+        assertNotNull(exchange.getMessage("fault"));
+        assertNotNull(exchange.getMessage("fault").getContent());
     }
 
-}
+}
\ No newline at end of file


Reply via email to