I think there is a serious issue when evaluatiog Bean language expression. it
seems like attachments are not copied from the resulting exchage.
very simple case: invoke a methode where you add an attachment to the
exchange, when the evaluation is ending the value of the exchange will be
null.
I debuged in camel source code, the method process Line n:174 did not copie
the attachment, below the source code:
// copy the original exchange to avoid side effects on it
Exchange resultExchange = exchange.copy();
// remove any existing exception in case we do OGNL on the
exception
resultExchange.setException(null);
// force to use InOut to retrieve the result on the OUT
message
resultExchange.setPattern(ExchangePattern.InOut);
processor.process(resultExchange);
result = resultExchange.getOut().getBody();
// propagate properties and headers from result
if (resultExchange.hasProperties()) {
exchange.getProperties().putAll(resultExchange.getProperties());
if (resultExchange.getOut().hasHeaders()) {
exchange.getIn().getHeaders().putAll(resultExchange.getOut().getHeaders());
// propagate exceptions
if (resultExchange.getException() != null) {
exchange.setException(resultExchange.getException());
seems like attachments are not copied from the resulting exchage.
very simple case: invoke a methode where you add an attachment to the
exchange, when the evaluation is ending the value of the exchange will be
null.
I debuged in camel source code, the method process Line n:174 did not copie
the attachment, below the source code:
// copy the original exchange to avoid side effects on it
Exchange resultExchange = exchange.copy();
// remove any existing exception in case we do OGNL on the
exception
resultExchange.setException(null);
// force to use InOut to retrieve the result on the OUT
message
resultExchange.setPattern(ExchangePattern.InOut);
processor.process(resultExchange);
result = resultExchange.getOut().getBody();
// propagate properties and headers from result
if (resultExchange.hasProperties()) {
exchange.getProperties().putAll(resultExchange.getProperties());
if (resultExchange.getOut().hasHeaders()) {
exchange.getIn().getHeaders().putAll(resultExchange.getOut().getHeaders());
// propagate exceptions
if (resultExchange.getException() != null) {
exchange.setException(resultExchange.getException());