RFR: 8051627: Invariants about java.net.URI resolve and relativize are wrong

KIRIYAMA Takuya duke at openjdk.org
Fri Jul 29 06:49:22 UTC 2022


The current documentation of URI class describes relationship between resolve and relativize methods as follows.


For any two normalized URIs u and v,
    u.relativize(u.resolve(v)).equals(v) and
    u.resolve(u.relativize(v)).equals(v) .


However, there are some cases where this relationship is not true. For example, when u and v are "http://a/b" and "c/d", respectively, both u.relativize(u.resolve(v)) and u.resolve(u.relativize(v)) equal to "http://a/c/d" not "c/d". The documentation should be updated to avoid confusion by describing the relationship between resolve nd relativize methods under certain conditions of the URI. Note that these conditions are sufficient but not necessary for the statement.

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

Commit messages:
 - 8051627: Invariants about java.net.URI resolve and relativize are wrong
 - 8051627: Invariants about java.net.URI resolve and relativize are wrong

Changes: https://git.openjdk.org/jdk/pull/9671/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=9671&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8051627
  Stats: 12 lines in 1 file changed: 8 ins; 0 del; 4 mod
  Patch: https://git.openjdk.org/jdk/pull/9671.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/9671/head:pull/9671

PR: https://git.openjdk.org/jdk/pull/9671


More information about the net-dev mailing list