[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