<Swing Dev> [11][JDK-8197785]javax.accessibility.AccessibilityBundle will reload the ResourceBundle for every call to toDisplayString

Semyon Sadetsky semyon.sadetsky at oracle.com
Mon Mar 5 19:21:47 UTC 2018


On 03/05/2018 10:41 AM, Krishna Addepalli wrote:

> Hi Semyon,
>
> Thank you for the review. I don’t see any reason why HashMap can’t be 
> used here. But could you clarify what you meant by “synchronization is 
> surplus here”?
>
Sure. Hashtable is synchronized. And since the locale bundle is created 
once now and then is only read there is no need to have extra thread 
access synchronization.
>
> Besides, whether we use HashMap /Hashtable, the fix for this 
> particular bug still remains.
>
> As for changing (if that is necessary), I think we should address it 
> in a separate bug?
>
It is not unrelated completely since you are fixing a performance issue. 
I suggest to fix it for one since it is easy.

--Semyon
>
> Thanks,
>
> Krishna
>
> *From:*Semyon Sadetsky
> *Sent:* Monday, March 5, 2018 10:39 PM
> *To:* Krishna Addepalli <krishna.addepalli at oracle.com>; Philip Race 
> <philip.race at oracle.com>
> *Cc:* swing-dev at openjdk.java.net
> *Subject:* Re: <Swing Dev> 
> [11][JDK-8197785]javax.accessibility.AccessibilityBundle will reload 
> the ResourceBundle for every call to toDisplayString
>
> On 03/05/2018 09:00 AM, Semyon Sadetsky wrote:
>
>     Hi Krishna,
>
>     Is there any reason to use Hashmap. It seems the synchronization
>     is surplus here and its better to use HashMap.
>
> I meant Hashtable. Sorry.
>
> --Semyon
>
>     --Semyon
>
>     On 03/05/2018 05:39 AM, Krishna Addepalli wrote:
>
>         Hi Phil
>
>         Thank you for the review.
>
>         I have checked the accessibility package, and found that
>         contains is used with a Vector of AccessibleState objects in
>         the file AccessibleStateset.
>
>         However in AccessibilityBundle, the table is used to store a
>         set of values associated with a particular locale, and going
>         by the context, I find little reason that using contains is
>         intentional here.
>
>         And regarding the testcase, the thought of making it headless
>         crossed my mind while writing it, but I was not sure if just
>         creating a Button is allowed in headless mode.
>
>         Fortunately, I modified the testcase enough that, no swing
>         widgets need to be created, and we can safely run the test in
>         headless mode.
>
>         Here is the new webrev:
>         http://cr.openjdk.java.net/~kaddepalli/8197785/webrev01/
>         <http://cr.openjdk.java.net/%7Ekaddepalli/8197785/webrev01/>
>
>         Thanks,
>
>         Krishna
>
>         *From:*Philip Race
>         *Sent:* Saturday, March 3, 2018 9:44 PM
>         *To:* Krishna Addepalli <krishna.addepalli at oracle.com>
>         <mailto:krishna.addepalli at oracle.com>
>         *Cc:* swing-dev at openjdk.java.net
>         <mailto:swing-dev at openjdk.java.net>
>         *Subject:* Re: <Swing Dev>
>         [11][JDK-8197785]javax.accessibility.AccessibilityBundle will
>         reload the ResourceBundle for every call to toDisplayString
>
>         The fix is straightforward and I've seen this bug pattern before.
>         In fact there may even have been a sweep for uses of
>         contains() to make sure it was as intended,
>         but if so it wasn't thorough enough.
>         But I'm wondering why the test extends Button and not JButton ?
>         I'm then further wondering if it could then be made headless
>         .. ie no need to create or display a Frame ?
>
>         -phil.
>
>         On 3/3/18, 6:30 AM, Krishna Addepalli wrote:
>
>             Hi All,
>
>             Please review a simple fix for JDK-8197785:
>             https://bugs.openjdk.java.net/browse/JDK-8197785
>
>             Webrev:
>             http://cr.openjdk.java.net/~kaddepalli/8197785/webrev00/
>             <http://cr.openjdk.java.net/%7Ekaddepalli/8197785/webrev00/>
>
>             As the bug description suggests,
>             AccessibleBundle.loadResourceBundle has the line
>             “table.contains” which causes it to reload the resource
>             bundle for each call.
>
>             Changing it to “table.containsKey” fixes the problem.
>
>             Thanks,
>
>             Krishna
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/swing-dev/attachments/20180305/814bff0c/attachment.html>


More information about the swing-dev mailing list