Agreed on updating the doc comment.

Thanks.

-- Jon

On 6/29/20 4:44 AM, Pavel Rappo wrote:
Jon,

Consider retaining that example string with pre-release information in the doc comment 
for Versions#shortVersionStringOf(): "15-internal"; I think this is useful for 
illustrative purposes.

Other than that, those patches look good. Thanks.

-Pavel

On 26 Jun 2020, at 23:04, Jonathan Gibbons <jonathan.gibb...@oracle.com> wrote:

Please review together two fixes for two related bugs.  One fix is for JDK 15, 
the other for 16.

As background, there have been two recent updates to javadoc:

        • JDK 15: Use Runtime.Version to represent javadoc and doclet versions
        • JDK 16: Always include the javadoc (feature) version in the metadata 
in each generated HTML file
The problem, for both, is when the version string has more than one numeric 
component
i.e. an update or patch number as well as the initial feature number. For 
example, 16.0.0.1.
This issue is reported in https://bugs.openjdk.java.net/browse/JDK-8248409

In the case of #1, `javadoc --version` only reported the feature version and 
prerelease info
(e.g. 16-internal) and not the full version number.  The intent/spec is that it 
should generally
match the number(s) given in `java --version` and `javac --version`.

In the case of #2, the metadata included additional info when it was not 
intended to.

In JDK 15, the fix is:

        • in Versions.java, use all the components of the version number, and 
not just the feature number
        • in Head.java, pass in a Runtime.Version instead of a String, and then 
explicitly select the
feature component
        • in BaseConfiguration.java, remove getDocletVersionString() which is 
now unused
Webrev: http://cr.openjdk.java.net/~jjg/8248409/webrev.00/


The patch for 15 causes merge conflicts for 16. A patch showing the result of 
resolving the
merge conflicts is provided here:
http://cr.openjdk.java.net/~jjg/8248417/after-merge.patch



In JDK 16, the doclet feature version is always written out, instead of being 
subject to
the `-notimestamp` option. When the patch for 8248409 is merged into 16, the 
test
for the new metadata will fail because of a bug in the test that was (up to 
now) cancelled
out by the issue in 8248417.  The fix for the test is trivial, to use 
`java.specification.version`
instead of `java.version`.

Webrev: http://cr.openjdk.java.net/~jjg/8248417/webrev.00

Note that this patch can safely be applied to JDK 16 before the patch for 
8248409.
Doing so will prevent a test failure in 16 after the fix for 8248409 is merged 
and before
this patch is applied.  The patch is safe to apply earlier because in our CI EA 
builds,
java.version == java.specification.version, and so the test will not fail.

After both patches have been applied, all javadoc tests should pass in both 15 
and 16
when additional numeric components in the version number are present.

-- Jon






Reply via email to