Hi Phillip,

Did you discover need for a deeper copy?  If so, can you elaborate?
It may be that adding a new constructor would be cleaner.

I'd suggest clarifying the documentation of existing methods as opposed
to changing the spec and implementation and the possible risks
to clients.

Thanks, Roger

On 01/21/2019 05:50 PM, Lance Andersen wrote:
Hi Philipp,

This is going to take some further discussion/input as this has been documented 
for sometime as a shallow copy.

If there is a consensus  to move this forward, it will also require a CSR.   I 
can help with that and sponsoring the updates,  if the decision is to go ahead 
with the proposed change

Best
Lance
On Jan 19, 2019, at 2:34 PM, Philipp Kunz <philipp.k...@paratix.ch> wrote:

Hi again,
Just after having sent the previous mail I found Manifest::clone
explicitly says it creates a shallow copy which is true only to a
certain extent. It deeply copies main attributes as well as individual
sections map already now and only shallowly copies individual sections
attributes maps.
I don't know about the background of it or why clone should only do a
shallow copy but if clone should really create a shallow copy, it
should probably create an even more shallow copy. In any case I figure
some potential for clarification at least.
Probably mostly because I already began a patch in the previous
message, I continued and attached another patch for a deep copy
approach. There might still be some reason not to deeply copy manifests
which I don't intend to forestall.
Philipp

On Sat, 2019-01-19 at 19:32 +0100, Philipp Kunz wrote:
Hi,

Creating a new manifest as a copy from an existing one using the copy
constructor assigns the new manifest individual sections entries map
the same values which are references to attributes as the original
rather than copying them as well deeply resulting in two manifests
pointing to the same attributes instances modifications to which
always affect both manifests. See test and proposed fix in the
attached patch.

Regards,
Philipp
<manifestcopyconstructorandclone.patch>
  <http://oracle.com/us/design/oracle-email-sig-198324.gif>
  <http://oracle.com/us/design/oracle-email-sig-198324.gif> 
<http://oracle.com/us/design/oracle-email-sig-198324.gif>
  <http://oracle.com/us/design/oracle-email-sig-198324.gif>Lance Andersen| 
Principal Member of Technical Staff | +1.781.442.2037
Oracle Java Engineering
1 Network Drive
Burlington, MA 01803
lance.ander...@oracle.com <mailto:lance.ander...@oracle.com>




Reply via email to