<Swing Dev> [9] Review Request: 8149879 Examine UIDefaults::addResourceBundle(String bundleName) with resource encapsulation

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Wed Nov 30 16:30:14 UTC 2016


On 29.11.16 17:21, Alexandr Scherbatiy wrote:
> On 11/28/2016 7:41 PM, Sergey Bylokhov wrote:
>> Hello.
>>
>> Please review the fix for jdk9.
>>
>> This fix improve encapsulation of java.desktop module. After the fix
>> the method "UIDefaults::addResourceBundle()" will not be able to
>> register resource bundles which are located in the java.desktop
>> module. Only the java.desktop module itself will be able to use such
>> bundles.
>   - Will it break existed applications?

The risk exists, if the application(or custom l&f) uses resource bundle 
from the java.desktop module. But these bundles were not a part of 
specification(the are located in non-public packages) and a content is 
not specified as well. The possible workaround for this is to have an 
application/L&f specific bundle. Or to use UIDefault.put(key,value) to 
use some non-default values.

>   - Is it a common case that some applications register resource bundles
> from JDK?

I do not found the usage of UID.addResourceBundle() which register an 
internal bundles.

>   - What is the reason that resource bundles from JDK are not supposed
> to be registered by external applications?

This is internal data which are not exported by the public api in thd 
java.desktop module.

>   - Is it applicable for all JDK bundles or it should be allowed to load
> bundles for public L&Fs like Metal and not for internal (Windows)?

It is applicable for all, because we do not have the public bundles.

>   - Was there the similar issue before the modularization? For example
> an application is not supposed to load internal Java resource bundles if
> the security manager is set.

Yes, there was such restriction.



-- 
Best regards, Sergey.



More information about the swing-dev mailing list