On Mon, 2 Mar 2026 16:10:57 GMT, Michael Strauß <[email protected]> wrote:
>> `CssParser.colorValueOfString()` parses a string into a `Color`. If this
>> fails by throwing an exception, `null` is returned from
>> `colorValueOfString()`, signalling to the caller that the color string might
>> be a lookup instead.
>>
>> Since color lookups can appear in many places in a CSS file, it is
>> preferable to use return values for flow control instead of exceptions. For
>> this purpose, we need non-throwing versions of methods that parse numbers
>> and colors.
>>
>> These are the changes in this PR:
>> 1. Move color parsing from the `Color` class to `CssColorParser`. This is
>> done so that we can access the new `tryParseColor(String)` method from
>> `CssParser`, and also to separate concerns between color representation and
>> parsing.
>> 2. Add a non-throwing `CssNumberParser.tryParseDouble()`, which returns
>> `NaN` to indicate a parsing failure. We can use `NaN` because it is not a
>> valid return value of the parser.
>> 3. Since color parsing also uses `Integer.parseInt()`, we need a
>> non-throwing version of this method: `CssNumberParser.tryParseInt()`. Since
>> we can't use any particular `int` as a return value that indicates failure,
>> I've decided to return a `long` value instead, where a value less than
>> `Integer.MIN_VALUE` indicates a parsing failure.
>
> modules/javafx.graphics/src/test/java/test/com/sun/javafx/css/parser/CssNumberParserTest.java
> line 42:
>
>> 40:
>> 41: @Nested
>> 42: class ParseIntegerTest {
>
> These tests are taken from `Integer/ParsingTest` in the JDK.
minor: maybe add a comment stating that?
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/2093#discussion_r2926441220