Commit in servicemix/base/src on MAIN
main/java/org/servicemix/components/util/TransformComponentSupport.java+9-21.4 -> 1.5
main/java/org/servicemix/components/wsif/WSIFBinding.java+4-51.2 -> 1.3
test/java/org/servicemix/components/wsif/WsifTest.java+35-51.2 -> 1.3
+48-12
3 modified files
fixed a few gremlins in the WSIF component

servicemix/base/src/main/java/org/servicemix/components/util
TransformComponentSupport.java 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- TransformComponentSupport.java	2 Aug 2005 12:50:19 -0000	1.4
+++ TransformComponentSupport.java	2 Aug 2005 16:30:23 -0000	1.5
@@ -20,6 +20,7 @@
 import org.servicemix.MessageExchangeListener;
 import org.servicemix.jbi.NoInMessageAvailableException;
 
+import javax.jbi.messaging.ExchangeStatus;
 import javax.jbi.messaging.InOnly;
 import javax.jbi.messaging.MessageExchange;
 import javax.jbi.messaging.MessagingException;
@@ -28,7 +29,7 @@
 /**
  * A useful base class for a transform component.
  *
- * @version $Revision: 1.4 $
+ * @version $Revision: 1.5 $
  */
 public abstract class TransformComponentSupport extends ComponentSupport implements MessageExchangeListener {
     public void onMessageExchange(MessageExchange exchange) throws MessagingException {
@@ -48,7 +49,13 @@
                     getDeliveryChannel().sendSync(outExchange);
                 }
             }
-            done(exchange);
+            if (exchange.getFault() == null) {
+                done(exchange);
+            }
+            else {
+                exchange.setStatus(ExchangeStatus.ERROR);
+                getDeliveryChannel().send(exchange);
+            }
         }
         catch (MessagingException e) {
             fail(exchange, e);

servicemix/base/src/main/java/org/servicemix/components/wsif
WSIFBinding.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- WSIFBinding.java	2 Aug 2005 12:50:19 -0000	1.2
+++ WSIFBinding.java	2 Aug 2005 16:30:24 -0000	1.3
@@ -45,7 +45,7 @@
  * Consumers JBI messages and sends them as a synchronous request/response into WSIF
  * then forwards the response
  *
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
  */
 public class WSIFBinding extends TransformComponentSupport {
 
@@ -156,18 +156,17 @@
             boolean answer = operation.executeRequestResponseOperation(inMessage, outMessage, faultMessage);
             if (answer) {
                 marshaler.toNMS(exchange, out, operationInfo, outMessage);
-                done(exchange);
             }
             else {
                 Fault fault = exchange.createFault();
                 marshaler.toNMS(exchange, fault, operationInfo, outMessage);
-                fail(exchange, fault);
+                exchange.setFault(fault);
             }
+            return true;
         }
         catch (WSIFException e) {
-            fail(exchange, e);
+            throw new MessagingException(e);
         }
-        return true;
     }
 
 }

servicemix/base/src/test/java/org/servicemix/components/wsif
WsifTest.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- WsifTest.java	15 Jul 2005 17:37:01 -0000	1.2
+++ WsifTest.java	2 Aug 2005 16:30:24 -0000	1.3
@@ -18,18 +18,17 @@
 package org.servicemix.components.wsif;
 
 import org.servicemix.TestSupport;
-import org.servicemix.jbi.resolver.ServiceNameEndpointResolver;
 import org.springframework.context.support.AbstractXmlApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 import org.w3c.dom.Node;
 
-import javax.xml.namespace.QName;
-import javax.xml.transform.Source;
 import javax.jbi.messaging.InOut;
 import javax.jbi.messaging.NormalizedMessage;
+import javax.xml.namespace.QName;
+import javax.xml.transform.Source;
 
 /**
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
  */
 public class WsifTest extends TestSupport {
     QName serviceName = new QName("http://servicemix.org/cheese/", "checkAvailability");
@@ -74,8 +73,39 @@
         // END SNIPPET: wsif
 
         assertEquals("should have no fault", null, exchange.getFault());
-        assertEquals("should have no error", null, exchange.getError());
+        Exception error = exchange.getError();
+        if (error != null) {
+            throw error;
+        }
+        assertEquals("should have no error", null, error);
+        assertNotNull("must have an output message!", out);
+
+        assertTrue("price text should not be empty", result.length() > 0);
+
+    }
+
+    public void testUsingWSIFStyleJBIWithEarlyErrorHandling() throws Exception {
+
+        InOut exchange = client.createInOutExchange();
+
+        exchange.getInMessage().setProperty("zipCode", "10505");
+        client.sendSync(exchange);
+
+        Exception error = exchange.getError();
+        if (error != null) {
+            throw error;
+        }
+
+        assertEquals("should have no fault", null, exchange.getFault());
+        assertEquals("should have no error", null, error);
+
+        NormalizedMessage out = exchange.getOutMessage();
         assertNotNull("must have an output message!", out);
+
+        String result = (String) out.getProperty("result");
+
+        System.out.println("Found value: " + result);
+
 
         assertTrue("price text should not be empty", result.length() > 0);
 
CVSspam 0.2.8



Reply via email to