RFR: 8248409, 8248417 Dotted version numbers in javadoc

Pavel Rappo pavel.rappo at oracle.com
Mon Jun 29 11:44:40 UTC 2020


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.gibbons at 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
> 
>  
> 
> 
> 
> 
> 
> 



More information about the javadoc-dev mailing list