<AWT Dev> [10] Review request for 8189201: [macosx] NotSerializableException during JFrame with MenuBar serialization
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Tue Nov 7 18:59:55 UTC 2017
On 07/11/2017 10:42, Semyon Sadetsky wrote:
> I did get this. This spec is unrelated to the current issue. The current
> issue is very simple:
>
> AccessibleAWTComponent class is Serializable but its fields
> accessibleAWTComponentHandler and accessibleAWTFocusHandler are not.
>
> This violates the Java serialization policy and causes exception in JDK
> code. The proposed fix eliminates this issue. The fields cannot be
> changed to transient because this would break the logic after
> deserialization of the component.
Ok, its up to you.
>>
>>>
>>> --Semyon
>>>>
>>>> On 31/10/2017 09:05, Semyon Sadetsky wrote:
>>>>> The updated webrev:
>>>>> http://cr.openjdk.java.net/~ssadetsky/8189201/webrev.02/
>>>>>
>>>>>
>>>>> On 10/23/2017 01:54 PM, Semyon Sadetsky wrote:
>>>>>> Actually ScreenMenu is fully removed in uninstallUI() (line 54 of
>>>>>> AquaMenuBarUI), so there is no need to make its property listener
>>>>>> Serializable, please, ignore the change in
>>>>>> ScreenMenuPropertyListener.
>>>>>>
>>>>>> --Semyon
>>>>>>
>>>>>>
>>>>>> On 10/23/2017 01:25 PM, Semyon Sadetsky wrote:
>>>>>>> On 10/23/2017 12:58 PM, Sergey Bylokhov wrote:
>>>>>>>
>>>>>>>> On 23/10/2017 12:41, Semyon Sadetsky wrote:
>>>>>>>>>> The AquaMenuBarBorder class is L&F specific, and it should not
>>>>>>>>>> be serialized/deserialized. Such information(plus l&f client
>>>>>>>>>> properties/listeners/etc) should be removed from the component
>>>>>>>>>> before serialization. And during deserialization the L&F of
>>>>>>>>>> the target system should be applied.
>>>>>>>>> That is valid concern. The webrev is updated
>>>>>>>>> http://cr.openjdk.java.net/~ssadetsky/8189201/webrev.01/
>>>>>>>>
>>>>>>>> The same is applicable to ScreenMenuPropertyListener as well
>>>>>>>> because it is also L&F specific.
>>>>>>>> I assume that the changes in AccessibleAWTComponentHandler/etc
>>>>>>>> are necessary because somecode installs the listeners on the
>>>>>>>> components, since the bug is not reproduced in Metal I assume
>>>>>>>> that this listeners are installed by Aqua, in this case these
>>>>>>>> listeners also should be removed from the component before
>>>>>>>> serialization.
>>>>>>> ScreenMenu is not a Swing component.
>>>>>>>
>>>>>>> --Semyon
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
>
--
Best regards, Sergey.
More information about the awt-dev
mailing list