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