<AWT Dev>  Review Request: JDK-8036112: JColorChooser throws a NPE when applet with static reference is reloaded
dmitry.markov at oracle.com
Wed Apr 2 06:36:22 UTC 2014
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:
>> 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.
> Best regards, Sergey.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the awt-dev