URI javadoc failure and "reletivize and resolve"

Sebastian Sickelmann sebastian.sickelmann at gmx.de
Wed Sep 9 19:37:42 UTC 2015


Hi,

while investigation for JDK-8022748 [1] (new URI(u.toString()).equals(u)
does not hold with paths containing colons

i found some smaller things.

The javadoc contains the following example

-------
*    This operation is often useful when constructing a document
containing URIs that must be made relative to the base URI of the
document wherever possible. For example, relativizing the URI
*        https://docs.oracle.com/javase/1.3/docs/guide/index.html
*    against the base URI
*        http://java.sun.com/j2se/1.3
*    yields the relative URI docs/guide/index.html.
--------

which seems to be a correction error. I think it must be
https://docs.oracle.com/javase/1.3 instead of http://java.sun.com/j2se/1.3.

I would provide a patch (if someone would sponsor it) for this with some
other things that i think needs some more discussion.

If you can the example above and try to do another thing that defines
the relativize functionality

/-----------
*    Relativization/, finally, is the inverse of resolution: For any two
normalized URIs /u/ and /v/,/
*        u/|.relativize(|/u/|.resolve(|/v/|)).equals(|/v/|)|  and/
*        u/|.resolve(|/u/|.relativize(|/v/|)).equals(|/v/|)|  .
-----------


and try it with the "corrected" example above it

        URI tu = new
URI("https://docs.oracle.com/javase/1.3/docs/guide/index.html");
        tu = tu.normalize();
       
        URI base = new URI("https://docs.oracle.com/javase/1.3");
        base = base.normalize();

        URI rel = base.relativize(tu);
        System.out.println(rel);
        System.out.println(tu);
        System.out.println(base.resolve(rel));

you get

docs/guide/index.html
https://docs.oracle.com/javase/1.3/docs/guide/index.html
https://docs.oracle.com/javase/docs/guide/index.html

instead of the expected which you only get if you use a base-uri with
trailing /

docs/guide/index.html
https://docs.oracle.com/javase/1.3/docs/guide/index.html
https://docs.oracle.com/javase/1.3/docs/guide/index.html

I want to cleanup and fix some of these and maybe even JDK-8022748, but
i need some clarification/dicussion what the expected behavior is.
Is the relativize-specification only valid for base-uris with trailing /
??? There are some Testcases that adress this case. If the tests are
right than this is only a minor javadoc failure.

-- Sebastian

[1] https://bugs.openjdk.java.net/browse/JDK-8022748




More information about the net-dev mailing list