On Fri, 13 Dec 2024 11:01:51 GMT, Hannes Wallnöfer <hann...@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

Reply via email to