Review request 8002212 - adding read/writeObject to additional SerialXXX classes
Lance Andersen - Oracle
Lance.Andersen at oracle.com
Sat Nov 3 15:29:37 UTC 2012
On Nov 3, 2012, at 11:14 AM, Remi Forax wrote:
> On 11/03/2012 01:46 AM, Lance Andersen - Oracle wrote:
>> Hi Remi,
>>
> [...]
>
>>> In SerialDataLink, do you really need readObject/writeObject given
>>> that you call the default implementations.
>> I thought about that but had decided to add them for consistency
>
> The serialization implementation needs to create metadata associated with readObject/writeObject,
> so if we can avoid to implement them, we reduce the runtime memory footprint a little.
> I would prefer to have a comment saying that default serialization is Ok here.
OK, I will just comment the methods out and add a comment as you suggest
>
>>> in SerialJavaObject, in equals, you should declare a local variable like in SerialDataLink.equals,
>>> even if the local varialble is used once, it's more readable.
>> OK
>>> Also like in SerialArray.equals, you can do a return directly instead of if(...) return true.
>>> in clone(), you can use the diamond syntax,
>>> sjo.chain = new Vector<>(chain);
>> Yeah, long story, but I forgot to reset to diamond syntax (will tell you over a beer sometime :-) )
>
> sure, now or you have to visit Paris or I have to go to NY :)
Or Boston, where I am based or perhaps a JavaOne ;-)
>
>>> in setWarning(), you can use the diamond syntax as the original source does.
>>> and in readObject, you can use the diamond syntax too.
>> OK
>>> In readObject, you forget to throw an exception if there are some static fields
>>> in getClass().getFields() as the constructor does
>>> (this code can be moved in a private static method).
>> I thought about that, but figured since it was already through that check when the object was created, I did not think it required repeating in the readObject method
>
> A serialization stream can be forged to encode a SerialJavaObject that references an object that have a static field without creating a SerialJavaObject in memory.
True and there are tests in the test suite that basically do that. Anyways, I added that check in the revised webrev that I pushed earlier.
>
>>> Also, you should add a comment that because you call getClass() on obj,
>>> there is an implicit null check.
>> Would it be better to put an null check in explicitly?
>
> As you prefer :)
>
> [...]
>
>> Thank you again, will send an update webrev over the weekend
>>
>> Best
>> Lance
>
> cheers,
> Rémi
Best
Lance
-------------- next part --------------
Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037
Oracle Java Engineering
1 Network Drive
Burlington, MA 01803
Lance.Andersen at oracle.com
More information about the core-libs-dev
mailing list