RFR: 7083187: Class CSS.CssValue is missing implementations of equals() and hashCode() [v2]
Jeremy
duke at openjdk.org
Tue May 2 18:00:22 UTC 2023
On Tue, 2 May 2023 11:13:00 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:
>> Two CSS AttributeSet-s can be compared using the AttributeSet.isEqual() method which can fail due to missing implementation of equals method in CSS subclasses.
>> In this issue, even when two CSS AttributeSet has same 42 font size string value, Object equality fails.
>> Fixed by implementing the equality and hashCode method for CSS.FontSize class.
>>
>> All jtreg/jck tests are ok
>
> Prasanta Sadhukhan has updated the pull request incrementally with three additional commits since the last revision:
>
> - Test fix
> - Test fix
> - Review comment address
src/java.desktop/share/classes/javax/swing/text/html/CSS.java line 2323:
> 2321: @Override
> 2322: public boolean equals(Object val) {
> 2323: return val instanceof CSS.FontFamily font && family == font.family;
Is the `family` field interned somewhere? If it isn't, then should this be:
return val instanceof CSS.FontFamily font &&
Objects.equals(family, font.family);
For ex if we tweak the start of the FontFamily unit test as follows does it still pass?
private static void testFontFamily() {
StyleSheet ss = new StyleSheet();
SimpleAttributeSet a = new SimpleAttributeSet();
ss.addCSSAttribute( a, CSS.Attribute.FONT_FAMILY, "Sans-Serif");
SimpleAttributeSet b = new SimpleAttributeSet();
ss.addCSSAttribute( b, CSS.Attribute.FONT_FAMILY, "Sans-Serif");
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13405#discussion_r1182870307
More information about the client-libs-dev
mailing list