[
https://issues.apache.org/jira/browse/CAMEL-4797?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13221651#comment-13221651
]
Babak Vahdat edited comment on CAMEL-4797 at 3/3/12 5:40 PM:
-------------------------------------------------------------
As I'm not really sure if I understand it correctly, is the following what we
intend by UnmarshalProcessor:
{code}
Object result = dataFormat.unmarshal(exchange, stream);
if (result instanceof Exchange) {
Exchange anotherExchange = (Exchange) result;
if (exchange == anotherExchange) {
// only check to see if the body of the out message has
been properly set
Message message = exchange.getOut();
ObjectHelper.notNull(message.getBody(), "body", message);
} else {
// copy the out message along with it's possibly set
headers, attachments, etc.
exchange.setOut(anotherExchange.getOut().copy());
}
} else if (result instanceof Message) {
Message message = (Message) result;
ObjectHelper.notNull(message.getBody(), "body", message);
exchange.setOut((Message) result);
} else {
out.setBody(result);
}
{code}
Or am I completely with wrong thoughts by this ticket?
was (Author: bvahdat):
As I'm not really sure if I understand it correctly, is the following what
we intend by UnmarshalProcessor:
{code}
Object result = dataFormat.unmarshal(exchange, stream);
if (result instanceof Exchange) {
Exchange anotherExchange = (Exchange) result;
if (exchange == anotherExchange) {
// only check to see if the body of the out message has
been properly set
Message message = exchange.getOut();
ObjectHelper.notNull(message.getBody(), "body", message);
} else {
// copy the out message along with it's possibly set
headers, attachments, etc.
exchange.setOut(anotherExchange.getOut().copy());
}
} else if (result instanceof Message) {
Message message = exchange.getOut();
ObjectHelper.notNull(message.getBody(), "body", message);
exchange.setOut((Message) result);
} else {
out.setBody(result);
}
{code}
Or am I completely with wrong thoughts by this ticket?
> DataFormat - unmarshal should allow to return Message or Exchange to make it
> more flexible
> ------------------------------------------------------------------------------------------
>
> Key: CAMEL-4797
> URL: https://issues.apache.org/jira/browse/CAMEL-4797
> Project: Camel
> Issue Type: Improvement
> Components: camel-core
> Reporter: Claus Ibsen
> Fix For: 2.10.0
>
>
> The API of the unmarshal on DataFormat is
> {code}
> Object unmarshal(Exchange exchange, InputStream stream) throws Exception;
> {code}
> The Object returned is by default the message body. But we should allow end
> user to return also a
> - org.apache.camel.Message
> - org.apache.camel.Exchange
> If its a Message then use the message returned.
> If its a Exchange then copy the results from the exchange to the current
> exchange (normally it would be the same instance, so its a noop operation)
> We supports this for the splitter, where people can return a List<Message> in
> the split expression etc.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira