On Tue, 12 Nov 2024 20:28:55 GMT, Andrey Turbanov <[email protected]> wrote:
>> If a thread-safe implementation is not needed, it is recommended to use
>> HashMap instead of legacy synchronized Hashtable.
>> Map `CSS.htmlAttrToCssAttrMap` is modified only within static initialization
>> block and then only `get` method is called.
>>
>> The only subtle difference is that Hashtable doesn't allow `null` keys and
>> throws NPE from `get` method.
>> I've checked all possible keys which are passed to
>> `htmlAttrToCssAttrMap.get`.
>> Currently 3 different execution paths are possible:
>>
>> **1,2**
>> When `HTML.Attribute.BORDER` is passed as a key. It's definitely non-null.
>>
>> javax.swing.text.html.CSS#translateHTMLToCSS
>> translateAttribute(HTML.Attribute.BORDER, "1", cssAttrSet);
>> CSS.Attribute[] cssAttrList = getCssAttribute(key);
>>
>>
>> javax.swing.text.html.CSS#translateAttributes
>> translateAttribute(HTML.Attribute.BORDER, Integer.toString(borderWidth),
>> cssAttrSet);
>> CSS.Attribute[] cssAttrList = getCssAttribute(key);`
>>
>>
>> **3**
>> When non-null `key` is passed as a key.
>>
>> javax.swing.text.html.CSS#translateAttributes
>>
>> if (name instanceof HTML.Attribute) { // from this `instanceof` we know
>> that it's non-null
>> HTML.Attribute key = (HTML.Attribute)name;
>>
>> translateAttribute(key, (String) htmlAttrSet.getAttribute(key),
>> cssAttrSet);
>> CSS.Attribute[] cssAttrList = getCssAttribute(key);
>>
>>
>> 
>>
>>
>> I've used HashMap.newHashMap method instead of constructor to avoid resizing
>> of internal HashMap array.
>
> Andrey Turbanov has updated the pull request incrementally with one
> additional commit since the last revision:
>
> 8343418: align more
Thank you for review!
-------------
PR Comment: https://git.openjdk.org/jdk/pull/21785#issuecomment-2513744337