On Thu, 20 May 2021 15:22:08 GMT, liach <[email protected]>
wrote:
>> This is a simple cleanup to replace the sentinel `HtmlTree.EMPTY` text
>> constant with an instance that achieves the same by overriding `isValid()`.
>> I think this is the nicer solution, and it allows us to remove the special
>> case identity check in `HtmlTree.add(Content)`.
>
> src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTree.java
> line 174:
>
>> 172: ((ContentBuilder) content).contents.forEach(this::add);
>> 173: }
>> 174: else if (content.isValid()) {
>
> Should the content builder have a similar validity check to ensure if it's
> not empty, its contents are always valid? otherwise it's quite hard to define
> if the content builder is valid or not as it can be considered either and
> always need special case in client code. In comparison, the html tree's
> contents are always valid no matter if the outer tags are valid or not.
I think the current behaviour of `ContentBuilder` to accept all content and
check validity on demand is the better solution. At least in theory it's
possible that invalid content (e.g. an empty HtmlTree) is added to a
ContentBuilder which later becomes valid by adding valid content to it. On the
other hand, one could argue that `ContentBuilder` and `HtmlTree` should behave
the same, which would speak for checking validity when adding to
`ContentBuilder`.
-------------
PR: https://git.openjdk.java.net/jdk/pull/4130