[9] RFR 8038436: Re-examine the mechanism to determine available localedata and cldrdata
Naoto Sato
naoto.sato at oracle.com
Fri Aug 22 23:23:47 UTC 2014
On 8/22/14, 3:56 PM, Mandy Chung wrote:
> A service config file can contain multiple provider implementation
> classes. JDI connector is one example:
> http://hg.openjdk.java.net/jdk9/dev/jdk/file/74078474d9bd/src/jdk.jdi/share/classes/META-INF/services/com.sun.jdi.connect.Connector
>
>
> There may be some bug somewhere.
I know a single service config file can contain multiple implementation
classes. However in this case, each jar file contains only either of
those two provider types. For example, localedata.jar only contains
JRENonENLocaleDataMetaInfo. So if the service config file contained
CLDRLocaleDataMetaInfo entry, that would fail on loading.
>> UOE is caught in JRELocaleProviderAdapter. Will add some more comments
>> there.
>
> Is it the SecurityException you try to catch? perhaps you should throw
> UOE directly at line 68 with the exception as the cause for better
> diagnosability.
Will do.
>> The one we have been discussing: AccessClassInPackage security
>> exception for sun.util.locale.provider classes from
>> localedata.jar/cldrdata.jar. Anyway, I followed the
>> ResourceBundle.loadBundle()'s behavior here, where it ignores any
>> Exception instances.
>>
>
> Can you add that test case?
If the code weren't catching the exception, several existing regression
tests would fail, such as,
test/java/util/concurrent/atomic/AtomicUpdaters.java which installs a
Policy that allows no permissions. Do you still need extra test case for
it which would do the same testing?
>>> When you have an image build, it'd be useful to test without
>>> cldrdata.jar and localedata.jar from the extension directory
>>> and run the tests to use the default EN locale.
>>
>> Although I don't have any regression tests, I manually tested such
>> situations and confirmed it worked correctly.
>
> Do you mean that the existing regression tests never load cldrdata.jar
> and localedata.jar? If so, that matches my suggestion to run them on a
> JDK image without cldrdata.jar and localedata.jar and they should pass?
There already are test cases that examine localedata/cldrdata locale
data. Maybe what could be done is to create a test to obtain available
locales without localedata.jar/cldrdata.jar, and confirm it only
contains en* locales. Are there any way to run regression tests that can
run *without* installed JDK extensions?
Naoto
More information about the build-dev
mailing list