<Beans Dev> [9] Review Request: 8131754 AquaTreeUI.getCollapsedIcon() issue reported in java beans tests with a modular build

Alexander Scherbatiy alexandr.scherbatiy at oracle.com
Thu Nov 19 08:34:33 UTC 2015


   The fix looks good to me.

   Thanks,
   Alexandr.

On 11/9/2015 9:19 PM, Sergey Bylokhov wrote:
> Hello.
> Please review the "small" fix for jdk9.
>
> Description of the problem:
>     When the XMLEncoder writes the object to the stream it does not 
> save the whole object as is(like the usual serialization). But it 
> creates the object of the same class with default parameters and then 
> saves only the difference between the two objects. Encoder checks 
> recursively for difference the public fields and public 
> properties(setters+getters) on current object and so on. Only 
> transient fields and @Transient properties are skipped by encoder.
>
>     The tests from the bug causes an exception when running on the 
> OSX, because it serialize the platform-specific data (part of Aqua 
> L&F). This occurs because XMLEncoder tries to save the ui property of 
> JComponent.
>
> Scheme of objects:
> JComponent-A (non-default component orientation)
>    UI-a
>
> JComponent-B (default component orientation)
>    UI-b
>
>     Note that components A and B have different orientation, this 
> indirectly changes some properties of UI-a, these changes are not 
> important because they can be(and will be) restored from the component 
> itself, but XMLEncoder treats ui as sensible fields and tries to save 
> them to the stream.
>
>     As a fix I suggest to mark getUI() method as @Transient, this will 
> allow the encoder to skip the changes in UI property. Note that the ui 
> field in JComponent is transient already, but it affects the usual 
> serialization only.
>
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8131754
> Webrev can be found at: 
> http://cr.openjdk.java.net/~serb/8131754/webrev.00
>



More information about the beans-dev mailing list