RFR: 8350920: Allow inherited member summaries to be viewed inline [v3]

Nizar Benalla nbenalla at openjdk.org
Fri Apr 4 17:16:04 UTC 2025


On Tue, 25 Mar 2025 04:35:19 GMT, Hannes Wallnöfer <hannesw at openjdk.org> wrote:

>> Please review an enhancement to allow switching between the traditional condensed footnote-style summary and the summary table format for inherited members (types, fields, methods and properties) that are inherited from included types. You can test the feature in [the doc bundle I uploaded][apidocs] or watch the short screencast below.
>> 
>> [apidocs]: https://cr.openjdk.org/~hannesw/8350920/api.00/java.base/module-summary.html
>> 
>> https://github.com/user-attachments/assets/0aaa1f8b-c18b-4922-b704-2b2cdc05ca79
>> 
>> I added two new protected methods to the `AbstractMemberWriter` class, `createInheritedSummaryTable` and `getInheritedSummaryId`. Otherwise this is mostly reusing existing functionality (we already had the feature to display the signature of an inherited method in the context of the current class).
>> 
>> The writers for non-inheritable members such as constructors or enum constants were simplified a bit by implementing formerly abstract methods in `AbstractMemberWriter` as concrete methods throwing `UnsupportedOperationException` so they don't have to be implemented as empty methods in these writers.
>> 
>> The UI to switch between member list presentations is implemented in `script.js.template`. If no summary list presentation is available (because the supertype is not part of the documentation bundle) nothing changes in the UI.
>> 
>> I added a `stripTags()` method to `Content` to return the plain text content with HTML tags stripped that could be used in a few other places. The patch also adds two new vector graphics files called right.svg and down.svg for the right and downwards pointing angle.
>
> Hannes Wallnöfer has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains four commits:
> 
>  - Merge branch 'master' into JDK-8350920
>  - Merge branch 'master' into JDK-8350920
>  - Add svg files
>  - 8350920: Allow inherited member summaries to be viewed inline

Looks good, I think this a great addition to javadoc. I left a small comment regarding `stripTags` but it's not necessary.

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractMemberWriter.java line 253:

> 251:             var table = getSummaryTable();
> 252:             for (Element member : members) {
> 253:                 addMemberSummaryTableRow(typeElement, member, table, pHelper);

I was going to suggest verifying that `table` is not null but it seems like it's not needed. The implementation of `getSummaryTable` doesn't return null (if the summary table doesn't exist, it will attempt to create one).

src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/RawHtml.java line 162:

> 160:     @Override
> 161:     public Content stripTags() {
> 162:         return Text.of(rawHtmlContent.replaceAll("<[^>]*>", ""));

nit: we use this same transformation `"<[^>]*>"` -> `""` in other places (IndexTaglet and SpecTaglet), could we replace those ad-hoc uses with this method?

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

Marked as reviewed by nbenalla (Committer).

PR Review: https://git.openjdk.org/jdk/pull/23967#pullrequestreview-2743625416
PR Review Comment: https://git.openjdk.org/jdk/pull/23967#discussion_r2029168515
PR Review Comment: https://git.openjdk.org/jdk/pull/23967#discussion_r2029145572


More information about the javadoc-dev mailing list