On Thu, 7 Apr 2022 00:38:07 GMT, Tim Prinzing <d...@openjdk.java.net> 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.

This pull request has now been integrated.

Changeset: e8016f74
Author:    Tim Prinzing <tim.prinz...@oracle.com>
Committer: Mandy Chung <mch...@openjdk.org>
URL:       
https://git.openjdk.java.net/jdk/commit/e8016f74438ca5c64a8aab81e2fc2533e9b9f8ad
Stats:     393 lines in 8 files changed: 385 ins; 0 del; 8 mod

8281006: Module::getResourceAsStream should check if the resource is open 
unconditionally when caller is null

Reviewed-by: alanb, erikj, mchung

-------------

PR: https://git.openjdk.java.net/jdk/pull/8134

Reply via email to