RFR: 8285521: Minor improvements in java.net.URI

Сергей Цыпанов duke at openjdk.java.net
Thu May 19 16:31:42 UTC 2022


On Thu, 19 May 2022 12:19:25 GMT, ExE Boss <duke at openjdk.java.net> wrote:

>> - use `String.equalsIgnoreCase()` instead of hand-written code relying on `String.charAt()`
>> - use `String.compareToIgnoreCase()` instead of hand-written code relying on `String.charAt()`
>> - drop branches that are never executed
>> - drop unused argument from `URI.resolvePath()`
>> - simplify String-related operations
>
> The `String.equalsIgnoreCase(…)` and `String.compareToIgnoreCase(…)` changes are incorrect, as the `String.*IgnoreCase(…)` methods compare all **Unicode** code points case‑insensitively using **Unicode** rules for the current or specified locale, whereas the **URI** specification does case‑insensitive comparison only for characters in the **US‑ASCII** range [[RFC3986]].
> 
> --------------------------------------------------------------------------------
> 
> https://github.com/openjdk/jdk/blob/408a3a8e29006798071cd6f185e415bc2bc62282/src/java.base/share/classes/java/net/URI.java#L1825-L1830 https://github.com/openjdk/jdk/blob/408a3a8e29006798071cd6f185e415bc2bc62282/src/java.base/share/classes/java/net/URI.java#L1832-L1844
> 
> [RFC3986]: https://datatracker.ietf.org/doc/html/rfc3986

@ExE-Boss 

> String.*IgnoreCase(…) methods compare all Unicode code points case‑insensitively using Unicode rules for the current or specified locale, whereas the URI specification does case‑insensitive comparison only for characters in the US‑ASCII range

Aren't all the items of US-ASCII range belong to Unicode regardless of locale?

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

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


More information about the net-dev mailing list