On Tue, 17 May 2022 03:19:39 GMT, Jonathan Gibbons <j...@openjdk.org> wrote:
>> This is a conceptually simple change, but it has a few ramifications that >> make it at least look a bit bigger than it is. >> >> At the core, this adds a new method to the `Table` class that allows to >> generate tables with multiple categories but omit the generation of table >> tabs. This is used in the "New API" and "Deprecated API" pages to render the >> release selectors as a global row of checkboxes that control release >> information for all tables in the page. Also, the element name and release >> columns in those pages are now sortable by clicking on the table headers. >> >> Output generated with this change is available here: >> >> http://cr.openjdk.java.net/~hannesw/8268422/api.06/new-list.html >> http://cr.openjdk.java.net/~hannesw/8268422/api.06/deprecated-list.html >> >> Now to the details and aforementioned ramifications: >> >> - Since I added new functionality to the table class I thought it woudl be >> a good occasion to remove some other functionality that was never really >> used by our code. This includes the possibility to set the table tab and >> striped row styles. We always use the default styles for these, and if >> somebody wanted to change the look of the styles the way to go would be to >> change the style definitions in the stylesheets rather then the style names. >> This change made the inclusion of a table-specific script obsolete, so >> you'll see some removals of `table.needsScript()` and `table.getScript()` in >> unrelated code. >> - `SummaryListWriter`, the base class for the New API and Deprecated API >> pages, gets a few new protected methods that are overridden in subclasses to >> generate the extra content as needed. I think the solution is suboptimal and >> a bit noisy. The protected classes have generic names such as >> `getExtraContent` and the parent class is not really aware of the different >> releases, since one subclass never displays multi-release information >> (Preview API), one does sometimes (Deprecated API) and one does always (New >> API). I think we could come up with a nicer solution, but I think it's not >> terrible and didn't want to delay integration too much. >> - We have yet more JavaScript for global table category selection and >> sortable table columns as well as new CSS classes, including inlined SVGs >> for the sortable column icons. I tried to keep the additions as small and >> clean as possible and added a short comment for each function. >> - The changes in `TestNewApiList.java` are huge. I couldn't have made those >> changes without improving the output of `JavadocTester` by adding the output >> directory to the test name. This change makes it much easier to read jtreg >> output for tests with many similar but slightly different checks. I probably >> should have done this a long time ago! > > test/langtools/jdk/javadoc/lib/javadoc/tester/JavadocTester.java line 1089: > >> 1087: content = null; >> 1088: } else { >> 1089: name = outputDir + "/" + file; > > I'm trying to understand the merit of this, since the output directory is > often just `out` or `api` isn't it? Don't you want the test method name in > there, for increased resolution? For test classes containing multiple test methods the output directory is actually the best way to identify which run of javadoc generated the output. If a test were to do multiple runs of javadoc with the same output directory I would certainly consider it a serious bug. Also, a single test method could easily do multiple runs of javadoc (I'm not sure we do that in our test suite, but I wouldn't be too surprised). Adding the output directory disambiguates the file name which is already there, making it easy to locate the file itself and the code that generated it. ------------- PR: https://git.openjdk.java.net/jdk/pull/8657