On Thu, 7 Apr 2022 21:08:34 GMT, Tim Prinzing <[email protected]> wrote:
>> Created a test called NullCallerGetResource to test
>> Module::getResourceAsStream and Class::getResourceAsStream from the native
>> level.
>>
>> At the java level the test builds a test module called 'n' which opens the
>> package 'open' to everyone. There is also a package 'closed' which is
>> neither opened or exported. Both packages have a text file called
>> 'test.txt'. The open package has a class called OpenResources and the closed
>> package has a class called ClosedResources. The native test is launched with
>> the test module n added.
>>
>> At the native level the test tries to read both the open and closed resource
>> from both the classes and the module. It performs the equivalent of the
>> following java operations:
>>
>> Class c = open.OpenResources.fetchClass();
>> InputStream in = c.getResourceAsStream("test.txt");
>> assert(in != null); in.close();
>>
>> Module n = c.getModule();
>> in = n.getResourceAsStream("open/test.txt");
>> assert(in != null); in.close();
>>
>> Class closed = closed.ClosedResources.fetchClass();
>> assert(closedsStream("test.txt") == null);
>> assert(n.getResourceAsStream("closed/test.txt") == null);
>>
>> The test initially threw an NPE when trying to fetch the open resource. The
>> Module class was fixed by removing the fragment with the (caller == null)
>> test in getResourceAsStream, and changing the call to isOpen(String,Module)
>> to use EVERYONE_MODULE if the caller module is null.
>
> Tim Prinzing has updated the pull request incrementally with one additional
> commit since the last revision:
>
> revert Module::isOpen
The updated changes to Class and Module in 912896d7 look okay, just minor
comments.
src/java.base/share/classes/java/lang/Class.java line 3007:
> 3005: if (callerModule == null) {
> 3006: // no caller
> 3007: return thisModule.isOpen(pn);
It might be clear if the comment read "no caller, return true if the package is
open to all modules".
src/java.base/share/classes/java/lang/Module.java line 1658:
> 1656: if (getPackages().contains(pn)) {
> 1657: if (caller == null) {
> 1658: if (! isOpen(pn)) {
Minor nit, can you remove the space in "! isOpen".
-------------
PR: https://git.openjdk.java.net/jdk/pull/8134