RFR: JDK-8259283: use new HtmlId and HtmlIds classes [v3]

Hannes Wallnöfer hannesw at openjdk.java.net
Wed Jan 13 16:07:10 UTC 2021


On Mon, 11 Jan 2021 23:55:16 GMT, Jonathan Gibbons <jjg at openjdk.org> wrote:

>> Please review this change to centralize the management of HTML ids used by the standard doclet in a single new factory class, `HtmlIds`, which utilizes a new type-safe wrapper class around `String` called `HtmlId`.
>> 
>> The new classes are used both when declaring ids (e.g. `HtmlTree.setId`) and when referencing them (e.g. `Links.createLink`).  The enum `SectionName`, which declared a set of standard ids, goes away, as do methods in `Links` and other places to create "anchors".
>> 
>> This is a simple refactoring: there is no intentional change of functionality, and no tests are affected or need to be updated. However, the changes do highlight the inconsistency of the use of ids: it would be good to rationalize these in separate, targeted follow-up work.
>
> Jonathan Gibbons has updated the pull request incrementally with one additional commit since the last revision:
> 
>   tidy up merge

Very nice work, Jon! +1

A few inline comments for an unused field and method and a couple of questions.

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Links.java line 234:

> 232:      * @return a content tree for the link
> 233:      */
> 234:     public Content createExternalLink(DocLink link, Content label) {

The `createLink(DocLink, Content, boolan)` method above (line #221) that is replaced by this new method is not used anymore (and within it, the boolean parameter is not used).

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Table.java line 301:

> 299:             rowStyle = stripedStyles.get(rowIndex % 2);
> 300:         }
> 301:         Set<String> tabClasses = new HashSet<>(); // !! would be better as a List

I assume no bug has been filed for this?

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlIndexBuilder.java line 75:

> 73:         super(configuration, configuration.getOptions().noDeprecated());
> 74:         this.configuration = configuration;
> 75:         links = new Links(DocPath.empty);

It looks like `links` isn't used anywhere else in `HtmlIndexBuilder` and can be removed.

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlId.java line 34:

> 32:  * @see HtmlTree#setId(HtmlId)
> 33:  */
> 34: public interface HtmlId {

Is there a reason for making this an interface instead of a plain class?

-------------

Marked as reviewed by hannesw (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/1951


More information about the javadoc-dev mailing list