| Commit in servicemix/base/src on MAIN | |||
| main/java/org/servicemix/components/util/TransformComponentSupport.java | +9 | -2 | 1.4 -> 1.5 |
| main/java/org/servicemix/components/wsif/WSIFBinding.java | +4 | -5 | 1.2 -> 1.3 |
| test/java/org/servicemix/components/wsif/WsifTest.java | +35 | -5 | 1.2 -> 1.3 |
| +48 | -12 | ||
fixed a few gremlins in the WSIF component
servicemix/base/src/main/java/org/servicemix/components/util
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
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
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);
