You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Clay <cl...@emc.com> on 2012/03/19 17:37:50 UTC

message.copy() Does not perform deep copy of the message body.

I am trying to copy a message so that I can alter it for subsequent
processing

    Message newMessage = message.copy();

but the MessageSupport.copyFrom() method (which is called from
MessageSupport.copy() )  does not copy the original message body to the
newMessage body, but only a reference to the original message body, which of
course then, causes any modification to the newMessage to modify the
original message.

This looks like a bug to me.  Can anyone confirm or deny this?  Or suggest a
workaround?

FYI- newMessage.copyFrom(message) does the same thing:

   Message newMessage = new DefaultMessage();
   newMessage.copyFrom(message);

Thanks




--
View this message in context: http://camel.465427.n5.nabble.com/message-copy-Does-not-perform-deep-copy-of-the-message-body-tp5577607p5577607.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: message.copy() Does not perform deep copy of the message body.

Posted by Clay <cl...@emc.com>.
Thanks Claus.  

--
View this message in context: http://camel.465427.n5.nabble.com/message-copy-Does-not-perform-deep-copy-of-the-message-body-tp5577607p5577646.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: message.copy() Does not perform deep copy of the message body.

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

This is by design. Camel cannot know how to do deep copy of any
arbitrary payload ppl may put in there.
You have to do that yourself. Some EIPs have a onPrepare option, where
you can do the custom deep copy,
such as the multicast
http://camel.apache.org/multicast


On Mon, Mar 19, 2012 at 5:37 PM, Clay <cl...@emc.com> wrote:
> I am trying to copy a message so that I can alter it for subsequent
> processing
>
>    Message newMessage = message.copy();
>
> but the MessageSupport.copyFrom() method (which is called from
> MessageSupport.copy() )  does not copy the original message body to the
> newMessage body, but only a reference to the original message body, which of
> course then, causes any modification to the newMessage to modify the
> original message.
>
> This looks like a bug to me.  Can anyone confirm or deny this?  Or suggest a
> workaround?
>
> FYI- newMessage.copyFrom(message) does the same thing:
>
>   Message newMessage = new DefaultMessage();
>   newMessage.copyFrom(message);
>
> Thanks
>
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/message-copy-Does-not-perform-deep-copy-of-the-message-body-tp5577607p5577607.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
CamelOne 2012 Conference, May 15-16, 2012: http://camelone.com
FuseSource
Email: cibsen@fusesource.com
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/