RFR: JDK-8327640: Allow NumberFormat strict parsing [v3]
Justin Lu
jlu at openjdk.org
Thu Mar 21 18:12:52 UTC 2024
> Please review this PR and associated [CSR](https://bugs.openjdk.org/browse/JDK-8327703) which introduces strict parsing for NumberFormat.
>
> The concrete subclasses that will utilize this leniency value are `DecimalFormat` and `CompactNumberFormat`. Strict leniency allows for parsing to be used as an input validation technique for localized formatted numbers. The default leniency mode will remain lenient, and can only be set to strict through an intentional `setLenient(boolean)` method call. Leniency operates differently based off the values returned by `isGroupingUsed()`, `getGroupingSize()`, and `isParseIntegerOnly()`.
>
> Below is an example of the change, the CSR can be viewed for further detail.
>
>
> DecimalFormat fmt = (DecimalFormat) NumberFormat.getNumberInstance(Locale.US);
> fmt.parse("1,,,0,,,00,.23Zabced45"); // returns 1000.23
> fmt.setLenient(false);
> fmt.parse("1,,,0,,,00,.23Zabced45"); // Now throws a ParseException
> fmt.setGroupingSize(2);
> fmt.parse("12,34,567"); // throws ParseException
> fmt.setParseIntegerOnly(true)
> fmt.parse("12,34.56"); // throws ParseException
> fmt.parse("12,34"); // successfully returns the Number 1234
>
>
> The associated tests are all localized, and the data is converted properly during runtime.
Justin Lu has updated the pull request incrementally with three additional commits since the last revision:
- Re-work specification wording from Format down to subclasses
- implement white space suggestions
- remove unsupported methods header, should go in JDK-8327875 instead
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/18339/files
- new: https://git.openjdk.org/jdk/pull/18339/files/c3a32500..c09a34dd
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=18339&range=02
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=18339&range=01-02
Stats: 128 lines in 4 files changed: 21 ins; 64 del; 43 mod
Patch: https://git.openjdk.org/jdk/pull/18339.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/18339/head:pull/18339
PR: https://git.openjdk.org/jdk/pull/18339
More information about the core-libs-dev
mailing list