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