On Wed, 18 Jun 2025 13:11:00 GMT, Alan Bateman <al...@openjdk.org> wrote:

>> Simplifying JavaRuntimeURLConnection to avoid accidentally returning 
>> non-resource data to users.
>> 
>> This change has the following distinct parts:
>> 1. Refactor code to use Node instead of directly accessing low level 
>> ImageLocation type.
>> 2. Remove unnecessary use of "Resource" interface and related URL generation 
>> code (completely unreachable).
>> 3. Adding comments explaining why there's a non-obvious distinction in how 
>> module and resource names are treated with respect to URL percent encoding.
>> 4. Small constructor logic simplification (module name cannot be null 
>> anymore)
>> 5. Small simplification around 'READER' use, since it is impossible for that 
>> to ever be null (other users of ImageReaderFactory already assume it could 
>> never be null, and code path analysis agrees).
>> 6. Adding tests for the non-resource cases.
>> 7. Adding extra test data to check the behaviour with respect to things like 
>> percent escaping (previously untested).
>> 8. Adding TODO comments for things I could do in this PR or later (reviewer 
>> opinions welcome).
>
> src/java.base/share/classes/sun/net/www/protocol/jrt/JavaRuntimeURLConnection.java
>  line 56:
> 
>> 54:     // about percent encoding. However, we choose to treat the module 
>> name is if
>> 55:     // it were a URL authority (since Java package/module names are 
>> historically
>> 56:     // strongly associated with internet domain names).
> 
> "However, we choose to treat the module name is if URL authority" -  I don't 
> think we should be put in the comment as it is confusing to suggest the URL 
> authority component. The URL scheme documented in JEP 220 always put the 
> module and resource name in the URL path component.  It's just historical 
> that it allowed for encoding of the resource name, wasn't given enough 
> thought in JDK 9 when this url stream handler was added.

Happy to accept rewording here. I do want to pull out that there *is* a 
conceptual reason for treating module names like domain authorities though, or 
just make the code treat the whole path the same.
Having unexplained weirdness like this just ends up being a drain on future 
maintainers otherwise.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/25871#discussion_r2154596891

Reply via email to