RFR: 7083187: Class CSS.CssValue is missing implementations of equals() and hashCode() [v2]

Alexey Ivanov aivanov at openjdk.org
Tue May 2 18:20:24 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

Changes requested by aivanov (Reviewer).

src/java.desktop/share/classes/javax/swing/text/html/CSS.java line 2026:

> 2024:             return (svalue.contains("sup"));
> 2025:         }
> 2026: 

Shall it be reverted?

src/java.desktop/share/classes/javax/swing/text/html/CSS.java line 2319:

> 2317:             } else {
> 2318:                 return 0;
> 2319:             }

Suggestion:

            return (family != null) ? family.hashCode() : 0;

The conditional operator is perfect here, don't you think?

src/java.desktop/share/classes/javax/swing/text/html/CSS.java line 2321:

> 2319:             }
> 2320:         }
> 2321:         @Override

Let's add a blank line between methods.
Suggestion:


        @Override

test/jdk/javax/swing/text/html/CSS/CSSAttributeEqualityBug.java line 44:

> 42: 
> 43:     private static void testFontSize() {
> 44:         StyleSheet ss = new StyleSheet();

The `StyleSheet` object isn't used in any of the tests, you can safely remove it.

test/jdk/javax/swing/text/html/CSS/CSSAttributeEqualityBug.java line 54:

> 52: 
> 53:         if (a.isEqual(b)) {
> 54:             System.out.println( "a equals b");

Suggestion:

        ss.addCSSAttribute(a, CSS.Attribute.FONT_SIZE, fontSize);

        SimpleAttributeSet b = new SimpleAttributeSet();
        ss.addCSSAttribute(b, CSS.Attribute.FONT_SIZE, fontSize);

        if (a.isEqual(b)) {
            System.out.println("a equals b");

There should be no space after opening parentheses.

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

PR Review: https://git.openjdk.org/jdk/pull/13405#pullrequestreview-1409632838
PR Review Comment: https://git.openjdk.org/jdk/pull/13405#discussion_r1182886952
PR Review Comment: https://git.openjdk.org/jdk/pull/13405#discussion_r1182889142
PR Review Comment: https://git.openjdk.org/jdk/pull/13405#discussion_r1182888179
PR Review Comment: https://git.openjdk.org/jdk/pull/13405#discussion_r1182891734
PR Review Comment: https://git.openjdk.org/jdk/pull/13405#discussion_r1182890669



More information about the client-libs-dev mailing list