[
https://issues.apache.org/jira/browse/CAMEL-5338?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13292283#comment-13292283
]
Claus Ibsen commented on CAMEL-5338:
------------------------------------
If you read the effective java book (by Joshua Bloch), there is an item about
clone.
He basically says its broken and you should use it with care if you go down
that road.
The idea in Camel 2.x was to make end users deal with this, by the onPrepare
callbacks. And besides the clone, you may need to do other work as well.
What we could do in your line of idea, is to offer a pluggable SPI, where
people can plugin a custom implementation that does the deep cloning. Mind that
deep cloning is hard to do generic, as you would need to traverse list/maps,
etc. and create new copies of them, and clone the values, and put them into the
list, and so forth.
With the pluggable SPI, it can be in line with the other functionality we have
for that, documented at
http://camel.apache.org/advanced-configuration-of-camelcontext-using-spring.html
> Exchange.copy() should make a deep copy, if the referenced objects (body,
> headers, properties) implements java.lang.Cloneable
> -----------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-5338
> URL: https://issues.apache.org/jira/browse/CAMEL-5338
> Project: Camel
> Issue Type: Improvement
> Affects Versions: 2.9.2
> Reporter: Christian Müller
> Fix For: 3.0.0
>
>
> We run into an issue where an exchange with a custom pojo as payload was sent
> to an multicast and changed in two different sub-routes at the same time
> (connected by using the direct protocol). The reason is that the
> Exchange.copy() method "only" creates shallow copies of the body (it's the
> same for the exchange properties and message headers). I think it's a good
> improvement to check whether the object implements java.lang.Cloneable and in
> this case create a deep copy of the object.
> [1]
> https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
> [2]
> https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
--
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