[12] RFR: 8214170: ResourceBundle.Control.newBundle should throw IllegalAccessException when constructor of the resource bundle is not public.
naoto.sato at oracle.com
naoto.sato at oracle.com
Wed Nov 28 13:56:20 UTC 2018
Thank you, Mandy, for pointing out. I was wrong on JDK8 result. With a
modified test case, I got the following result for jdk8 and jdk12:
jdk8u:
slc06brs:/projects/jdk/jdk/jdk/open/test/jdk/java/util/ResourceBundle/Control
479 %
/projects/jdk/8/jdk8u-dev/build/linux-x86_64-normal-server-fastdebug/jdk/bin/java
MissingResourceCauseTest
Exception in thread "main" java.lang.RuntimeException:
getBundle("PrivateConstructorRB") throws
java.lang.InstantiationException: PrivateConstructorRB, expected class
java.lang.IllegalAccessException
at
MissingResourceCauseTest.callGetBundle(MissingResourceCauseTest.java:56)
at
MissingResourceCauseTest.callGetBundle(MissingResourceCauseTest.java:43)
at MissingResourceCauseTest.main(MissingResourceCauseTest.java:34)
jdk12:
slc06brs:/projects/jdk/jdk/newera/open/test/jdk/java/util/ResourceBundle/Control
488 % /projects/jdk/jdk/newera/build/linux-x64/jdk/bin/java
MissingResourceCauseTest
Exception in thread "main" java.lang.RuntimeException:
getBundle("PrivateConstructorRB") throws null, expected class
java.lang.IllegalAccessException
at
MissingResourceCauseTest.callGetBundle(MissingResourceCauseTest.java:55)
at
MissingResourceCauseTest.callGetBundle(MissingResourceCauseTest.java:42)
at MissingResourceCauseTest.main(MissingResourceCauseTest.java:34)
So, for missing no-arg constructor, jdk8 throws MissingResourceException
with InstantiationException as the cause, and jdk12 throws
MissingResourceException with the "null" cause.
Naoto
On 11/27/18 3:41 PM, naoto.sato at oracle.com wrote:
>> 2. PrivateConstructorRB does not have any no-arg constructor (you have
>> to create a new test case for it)
>>
>> I believe the behavior is not changed in JDK 9. It throws
>> NoSuchMethodException (not ignored).
>
> In this case, the behavior is not changed. However, it does not throw
> NoSuchMethodException from newBundle(), both in JDK8 and current. It
> simply returns null, and the cause in the resulting
> MissingResourceException is "null".
>
> Naoto
More information about the core-libs-dev
mailing list