RFR: 8322708: Global HTML attributes are not allowed [v3]

Hannes Wallnöfer hannesw at openjdk.org
Fri Jun 14 12:15:47 UTC 2024


On Tue, 11 Jun 2024 21:58:46 GMT, Jonathan Gibbons <jjg at openjdk.org> wrote:

>>> If we are ordering the entries, we can use comparable to check that an attr is greater than the start of the global attr, something like
>>> 
>>> ```java
>>> private static boolean isGlobalAttr(Attr value) {
>>>     return value.compareTo(Attr.ACCESSKEY) >= 0;
>>> }
>>> ```
>> 
>> That would also work, yes. I still avoid relying on the order of enum constants; but it's me.
>
> I suggest one of
> 
> 1. Add a `boolean global;` member to the enum, and provide a second constructor that allows that boolean member to be set true.   For example,
> 
> WIDTH,
> STYLE(true),
> 
> 
> 2. Make the `Set` be static and init it in a static initializer.
> See the `javac` `Source` and `Target` classes for examples of this technique.

Wouldn't the easiest solution be to add a boolean `global`/`isGlobal` field and getter to `Attr`?

That would give use some more opportunities to simplify the code: We could get rid of the `GLOBAL_ATTRS` map here *and* avoid putting global attributes in the the `attr` map of each `HtmlTag` instance by simply adding a shortcut to return `AttrKind.OK` in `getAttrKind(Name)` if the given attribute is global.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/19652#discussion_r1636093592


More information about the javadoc-dev mailing list