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