You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2008/11/14 10:36:38 UTC
svn commit: r713959 - in
/servicemix/components/engines/servicemix-bean/trunk/src:
main/java/org/apache/servicemix/bean/support/TransformBeanSupport.java
test/java/org/apache/servicemix/bean/TransformBeanSupportTest.java
Author: gnodet
Date: Fri Nov 14 01:36:38 2008
New Revision: 713959
URL: http://svn.apache.org/viewvc?rev=713959&view=rev
Log:
SM-1668, SM-1604: Fix TransformBeanSupport processing of faults and RobustInOnly meps
Modified:
servicemix/components/engines/servicemix-bean/trunk/src/main/java/org/apache/servicemix/bean/support/TransformBeanSupport.java
servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/TransformBeanSupportTest.java
Modified: servicemix/components/engines/servicemix-bean/trunk/src/main/java/org/apache/servicemix/bean/support/TransformBeanSupport.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-bean/trunk/src/main/java/org/apache/servicemix/bean/support/TransformBeanSupport.java?rev=713959&r1=713958&r2=713959&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-bean/trunk/src/main/java/org/apache/servicemix/bean/support/TransformBeanSupport.java (original)
+++ servicemix/components/engines/servicemix-bean/trunk/src/main/java/org/apache/servicemix/bean/support/TransformBeanSupport.java Fri Nov 14 01:36:38 2008
@@ -121,61 +121,14 @@
public void onMessageExchange(MessageExchange exchange) throws MessagingException {
// Handle consumer exchanges && non-active RobustInOnly provider exchanges
if (exchange.getRole() == MessageExchange.Role.CONSUMER
- || exchange.getProperty(correlation) != null) {
- MessageExchange original = null;
- String id = null;
- try {
- id = (String) exchange.getProperty(correlation);
- original = (MessageExchange) store.load(id);
- } catch (Exception e) {
- // We can't do, so just return
- return;
- }
- try {
- if (exchange.getStatus() == ExchangeStatus.DONE) {
- done(original);
- // Reproduce ERROR status to the other side
- } else if (exchange.getStatus() == ExchangeStatus.ERROR) {
- fail(original, exchange.getError());
- // Reproduce faults to the other side and listeners
- } else if (exchange.getFault() != null) {
- store.store(exchange.getExchangeId(), exchange);
- try {
- MessageUtil.transferTo(exchange, original, "fault");
- send(original);
- } catch (Exception e) {
- store.load(exchange.getExchangeId());
- throw e;
- }
- // Reproduce answers to the other side
- } else if (exchange.getMessage("out") != null) {
- store.store(exchange.getExchangeId(), exchange);
- try {
- MessageUtil.transferTo(exchange, original, "out");
- send(original);
- } catch (Exception e) {
- store.load(exchange.getExchangeId());
- throw e;
- }
- } else {
- throw new IllegalStateException("Exchange status is " + ExchangeStatus.ACTIVE
- + " but has no Out nor Fault message");
- }
- } catch (Exception e) {
- if (logger.isDebugEnabled()) {
- logger.debug("Original error: " + e, e);
- }
- }
- return;
- }
-
- // Skip done exchanges
- if (exchange.getStatus() == ExchangeStatus.DONE) {
- return;
- // Handle error exchanges
- } else if (exchange.getStatus() == ExchangeStatus.ERROR) {
- return;
+ || exchange.getProperty(correlation) != null) {
+ processOngoingExchange(exchange);
+ } else {
+ processFirstExchange(exchange);
}
+ }
+
+ protected void processFirstExchange(MessageExchange exchange) {
try {
MessageExchange outExchange = null;
NormalizedMessage in = getInMessage(exchange);
@@ -253,6 +206,53 @@
}
}
+ protected void processOngoingExchange(MessageExchange exchange) {
+ MessageExchange original = null;
+ String id = null;
+ try {
+ id = (String) exchange.getProperty(correlation);
+ original = (MessageExchange) store.load(id);
+ } catch (Exception e) {
+ // We can't do, so just return
+ return;
+ }
+ try {
+ if (exchange.getStatus() == ExchangeStatus.DONE) {
+ done(original);
+ // Reproduce ERROR status to the other side
+ } else if (exchange.getStatus() == ExchangeStatus.ERROR) {
+ fail(original, exchange.getError());
+ // Reproduce faults to the other side and listeners
+ } else if (exchange.getFault() != null) {
+ store.store(exchange.getExchangeId(), exchange);
+ try {
+ MessageUtil.transferTo(exchange, original, "fault");
+ send(original);
+ } catch (Exception e) {
+ store.load(exchange.getExchangeId());
+ throw e;
+ }
+ // Reproduce answers to the other side
+ } else if (exchange.getMessage("out") != null) {
+ store.store(exchange.getExchangeId(), exchange);
+ try {
+ MessageUtil.transferTo(exchange, original, "out");
+ send(original);
+ } catch (Exception e) {
+ store.load(exchange.getExchangeId());
+ throw e;
+ }
+ } else {
+ throw new IllegalStateException("Exchange status is " + ExchangeStatus.ACTIVE
+ + " but has no Out nor Fault message");
+ }
+ } catch (Exception e) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Original error: " + e, e);
+ }
+ }
+ }
+
/**
* Transforms the given out message
Modified: servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/TransformBeanSupportTest.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/TransformBeanSupportTest.java?rev=713959&r1=713958&r2=713959&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/TransformBeanSupportTest.java (original)
+++ servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/TransformBeanSupportTest.java Fri Nov 14 01:36:38 2008
@@ -25,6 +25,7 @@
import junit.framework.TestCase;
+import org.apache.servicemix.MessageExchangeListener;
import org.apache.servicemix.bean.support.ExchangeTarget;
import org.apache.servicemix.bean.support.TransformBeanSupport;
import org.apache.servicemix.client.DefaultServiceMixClient;
@@ -32,7 +33,6 @@
import org.apache.servicemix.components.util.ComponentSupport;
import org.apache.servicemix.jbi.container.JBIContainer;
import org.apache.servicemix.jbi.jaxp.StringSource;
-import org.apache.servicemix.MessageExchangeListener;
import org.apache.servicemix.tck.ExchangeCompletedListener;
import org.apache.servicemix.tck.ReceiverComponent;
@@ -70,8 +70,6 @@
container.setFlowName("st");
}
- ReceiverComponent receiver = new ReceiverComponent();
-
public void testInOnly() throws Exception {
TransformBeanSupport transformer = createTransformer("receiver");
BeanEndpoint transformEndpoint = createBeanEndpoint(transformer);
@@ -161,10 +159,10 @@
return transformEndpoint;
}
- protected void activateComponent(ComponentSupport component, String name) throws Exception {
- component.setService(new QName(name));
- component.setEndpoint("endpoint");
- container.activateComponent(component, name);
+ protected void activateComponent(ComponentSupport cmp, String name) throws Exception {
+ cmp.setService(new QName(name));
+ cmp.setEndpoint("endpoint");
+ container.activateComponent(cmp, name);
}
public static class MyTransformer extends TransformBeanSupport {
@@ -177,9 +175,9 @@
public static class ReturnErrorComponent extends ComponentSupport implements MessageExchangeListener {
public void onMessageExchange(MessageExchange exchange) throws MessagingException {
- if (exchange.getStatus() == ExchangeStatus.ACTIVE) {
- fail(exchange, new Exception());
- }
+ if (exchange.getStatus() == ExchangeStatus.ACTIVE) {
+ fail(exchange, new Exception());
+ }
}
}