<AWT Dev> [9] Review Request: JDK-8036112: JColorChooser throws a NPE when applet with static reference is reloaded

dmitry markov dmitry.markov at oracle.com
Wed Apr 2 06:36:22 UTC 2014

Hi, Sergey,

Please find my answer inline.

On 01/04/2014 15:17, Sergey Bylokhov wrote:
> Hi, Dmitry.
> This means that the wrong EDT will be used for some components.
> The situation is strange. We have appcontext and probably some 
> components, which belongs to it, but there is no appropriate EDT. Why? 
> Should we recreate it?
This situation is typical for the applets which have some AWT or Swing 
components as a static fields (see simple example in 
https://bugs.openjdk.java.net/browse/JDK-8036112 ). The static field is 
created only once when the applet's code is loaded.  All works well for 
the first execution. However, if the web page is refreshed, (i.e. F5 is 
pressed), the Java Plugin destroys the applet and starts it again. The 
static fields stay untouched since they should be the same for all 
instances of the applet's class. So the static AWT/Swing component has 
AppContext which points to not existed EventQueue object, since it has 
gone during applet's relaunch.
Of course we can try to re-create AppContext during applet's relaunch, 
but I do not think that's a good idea. In this case we have to go 
through all static fields and find out the components whose AppContext 
should be changed. But it may take a lot of time and significantly 
increase the applet's relaunch time, since the structure of static field 
may be quite complex.
> And i think appContext.getAppContext() can be null too.
> On 4/1/14 3:02 PM, dmitry markov wrote:
>> Hello,
>> Could you review the fix for jdk9, please?
>> bug: https://bugs.openjdk.java.net/browse/JDK-8036112
>> webrev: http://cr.openjdk.java.net/~dmarkov/8036112/jdk9/webrev.00/
>> Problem description: the EventQueue object stored in AppContext for 
>> static fields of an applet becomes null after the refresh of the web 
>> page. This may cause a NPE in swing/awt code.
>> Fix: The method SunToolkit.getSystEmeventQueueImplPP(AppContext 
>> appContext) should be modified. If the EventQueue from the passed 
>> AppContext is null, the method will retrieve the EventQueue from the 
>> default AppContext.
>> Thanks,
>> Dmitry
> -- 
> Best regards, Sergey.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20140402/de1fe15e/attachment.html>

More information about the awt-dev mailing list