You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@servicemix.apache.org by "Guillaume Nodet (JIRA)" <ji...@apache.org> on 2008/11/14 10:39:09 UTC

[jira] Resolved: (SM-1604) TransformBeanSupport doesn't manage properly fault message when used in Sync mode

     [ https://issues.apache.org/activemq/browse/SM-1604?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Guillaume Nodet resolved SM-1604.
---------------------------------

         Assignee: Guillaume Nodet
    Fix Version/s: servicemix-bean-2008.02
                   3.2.4
       Resolution: Fixed

Fix as part of SM-1668

> TransformBeanSupport doesn't manage properly fault message when used in Sync mode
> ---------------------------------------------------------------------------------
>
>                 Key: SM-1604
>                 URL: https://issues.apache.org/activemq/browse/SM-1604
>             Project: ServiceMix
>          Issue Type: Bug
>          Components: servicemix-bean
>            Reporter: Gianfranco Boccalon
>            Assignee: Guillaume Nodet
>             Fix For: servicemix-bean-2008.02, 3.2.4
>
>
> The component sends always a Done message, even if it receives a fault, with the sendSync method.
> I provide a patch to TransformBeanSupport, to send a fault (or error) message if the result of the sendSync is a fault message.
> I don't provide a diff file because I have problems accessing the sources on SVN.
> This is the code I changed in the onMessageExchange method.
>             if (transform(exchange, in, out)) {
>                 if (isInAndOut(exchange)) {
>                     exchange.setMessage(out, "out");
>                     if (txSync) {
>                         getDeliveryChannel().sendSync(exchange);
>                     } else {
>                         getDeliveryChannel().send(exchange);
>                     }
>                 } else {
>                     outExchange.setMessage(out, "in");
>                     if (txSync) {
>                         getDeliveryChannel().sendSync(outExchange);
>                         
>                         // HERE THE PATCH BEGINS
>                         // Check result
>                         if (outExchange.getStatus() == ExchangeStatus.DONE) {
>                         	log.debug("["+exchange.getExchangeId()+"] | sendSync-> Received a DONE STATUS AS RESPONSE");
>                             exchange.setStatus(ExchangeStatus.DONE);
>                             getDeliveryChannel().send(exchange);
>                         // Errors must be sent back to the consumer
>                         } else if (outExchange.getStatus() == ExchangeStatus.ERROR) {
>                         	log.debug("["+exchange.getExchangeId()+"] | sendSync-> Received an ERROR STATUS AS RESPONSE -> fail");
>                             fail(exchange, outExchange.getError());
>                         } else if (outExchange.getFault() != null) {
>                         	log.info("["+exchange.getExchangeId()+"] | sendSync-> Received a FAULT AS RESPONSE -> fail");
>                         	fail(exchange, outExchange.getError());
>                         }
>                         // HERE THE PATCH END
>                     } else {
>                         getDeliveryChannel().send(outExchange);
>                         // HERE THE PATCH BEGINS
>                         exchange.setStatus(ExchangeStatus.DONE);
>                         getDeliveryChannel().send(exchange);
>                         // HERE THE PATCH END
>                     }
>                 }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.