<AWT Dev> [7u8] Review request for 7193219: JComboBox serialization fails in JDK 1.7

Anton Litvinov anton.litvinov at oracle.com
Mon Aug 27 07:53:33 PDT 2012


Hello Anthony,

Thank you for the review. I would like to clarify that this issue is an 
escalation.

After working on this bug I came to a conclusion that a reason of this 
bug is the fact that updateGraphicsData() method of not completely 
deserialized container is called during deserialization process. In this 
case the situation is the following:
1. readObject() method of JPanel is called.
1.1. readObject() method of JFrame is called during deserialization of 
JPanel's subcomponents, since they depend on JFrame through 
PropertyChangeSupport field.
1.2. initDeserializedWindow of JFrame as java.awt.Window is called and 
leads to subsequent calls to updateGraphicsData() of all subcomponents 
including that JPanel in step 1, which was not executed completely yet.
Deferring of updateGraphicsData() method could be a solution, but how 
can this be done technically? Also is there a guarantee that no logic, 
which executes after updateGraphicsData() and before the end of 
deserialization, relies on the results of updateGraphicsData() method?

This issue is reproducible on JDK 8 too, but since it was originally 
escalated on JDK 7 it should be fixed on JDK 7 first and then fixed in 
JDK 8.

Concerning a name of a directory containing the test, I am a new 
employee and I do not know the exact naming conventions. But before 
doing this I searched for existing tests and found many directories 
created in 2012 whose names contain bug numbers. I am ready to apply 
what ever name is better. I do not think that the test case can be 
written without Swing package, because it is related to certain 
escalation and I do not have right to change the original test case 
provided with escalation significantly.

Thank you,
Anton

On 27.08.2012 16:56, Anthony Petrov wrote:
> Also, I suggest to name the test directory/filename with a 
> human-readable name (just like all the other tests in AWT area do). 
> BTW, since this is an AWT test, do we actually have to use Swing 
> there? Can we make it an AWT-only test?
>
> -- 
> best regards,
> Anthony
>
> On 08/27/12 16:49, Anthony Petrov wrote:
>> Hi Anton,
>>
>> After deserialization completes, the components in the 'component'
>> collection must all share the same graphics configuration as its parent
>> container (which is being deserialized). While your fix resolves the
>> NPE, it doesn't yet sets up the child components with the correct
>> graphics configuration after the 'component' collection has been
>> populated which children during deserialization. I think we should
>> probably add a deferred call to updateGraphicsData() somewhere at the
>> readObject() method.
>>
>> Also, should this issue be fixed for JDK 8 first, and then ported back
>> to JDK 7u?
>>
>> -- 
>> best regards,
>> Anthony
>>
>> On 08/24/12 21:36, Anton Litvinov wrote:
>>> Hello,
>>>
>>> Please review the following fix for a bug.
>>>
>>> Bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7193219
>>> Webrev: http://cr.openjdk.java.net/~alexp/7193219/webrev.00
>>>
>>> For details on this bug please look at "Evaluation" field on a web page
>>> of this bug. The provided webrev contains both a fix and a 
>>> corresponding
>>> unit-test. Also before publishing this webrev all unit-test from the
>>> "java.awt" and
>>> "javax.swing" swing related to serialization and usage of
>>> "GraphicsConfiguration" class were run and no negative changes were
>>> observed comparing the results of tests' runs on JDK with and without
>>> patch represented by this webrev.
>>>
>>> Thank you,
>>> Anton



More information about the awt-dev mailing list