RFR: 8345770: javadoc: API documentation builds are not always reproducible
Nizar Benalla
nbenalla at openjdk.org
Fri Dec 13 12:02:35 UTC 2024
On Fri, 13 Dec 2024 11:01:51 GMT, Hannes Wallnöfer <hannesw at openjdk.org> wrote:
> Please review a fix for a bug that could cause non-reproducible documentation builds and the wrong link label being used in summary pages.
>
> We used to rely on field `HtmlConfiguration.currentTypeElement` to decide whether to include the type name in member links generated from `{@link}` or `@see` tags. However, that field was only set by the `ClassWriter` and `ClassUseWriter` classes, but never unset by any other writer class, so effectively it contained the *last* instead of the *current* type element. This resulted in summary pages using non-qualified member links, depending on the last previously executing class writer.
>
> The fix is to use `HtmlDocletWriter.getCurrentTypeElement()` (previously called `getCurrentPageElement()`) instead. Note that this method returns `null` for `ClassUseWriter`, so it changes the generated documentation for class-use pages. The new behavior is preferable, because class-use pages are primarily about other classes using the class, so links to members of the used class should be qualified by the class name. A good example for this are the links to the `FALSE` and `TRUE` fields in the [class use page for java.lang.Boolean][1] which should include the class name.
>
> [1]: https://docs.oracle.com/en/java/javase/23/docs/api/java.base/java/lang/class-use/Boolean.html#java.lang.constant
>
> As mentioned above I also renamed `getCurrentPageElement()` method to `getCurrentTypeElement()` and made the doc comments a bit more precise.
Great change!
I compared the generated docs before/after the change and the changes are all in the`class-use` pages, where the qualified name is now used instead.
List of changed files
java.base/java/nio/file/attribute/class-use/AclEntryPermission.html
java.base/java/math/class-use/BigDecimal.html
java.base/java/lang/class-use/Boolean.html
java.base/java/lang/class-use/Character.UnicodeBlock.html
java.desktop/java/awt/class-use/ComponentOrientation.html
java.base/java/util/concurrent/class-use/CountedCompleter.html
java.desktop/java/awt/class-use/Cursor.html
java.datatransfer/java/awt/datatransfer/class-use/DataFlavor.html
java.base/java/net/class-use/DatagramSocket.html
java.base/java/util/concurrent/class-use/ForkJoinTask.html
java.desktop/javax/swing/class-use/JLayer.html
java.base/java/lang/classfile/instruction/LabelTarget.html
jdk.dynalink/jdk/dynalink/linker/class-use/LinkerServices.html
java.base/java/util/concurrent/locks/class-use/Lock.html
java.base/java/lang/invoke/class-use/MethodHandle.html
java.base/java/lang/invoke/class-use/MethodHandles.Lookup.html
java.base/java/lang/class-use/Object.html
java.base/java/util/class-use/Optional.html
java.prefs/java/util/prefs/class-use/Preferences.html
java.base/java/util/concurrent/locks/class-use/ReadWriteLock.html
java.base/java/net/class-use/ServerSocket.html
java.base/java/net/class-use/Socket.html
java.base/java/lang/class-use/String.html
java.base/java/net/class-use/URL.html
java.base/java/util/class-use/UUID.html
java.xml/javax/xml/stream/class-use/XMLEventFactory.html
java.xml/javax/xml/stream/class-use/XMLInputFactory.html
java.xml/javax/xml/stream/class-use/XMLOutputFactory.html
java.xml/javax/xml/xpath/class-use/XPathFactory.html
-------------
Marked as reviewed by nbenalla (Committer).
PR Review: https://git.openjdk.org/jdk/pull/22732#pullrequestreview-2502133175
More information about the javadoc-dev
mailing list