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.

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

Commit messages:
 - init

Changes: https://git.openjdk.org/jdk/pull/18339/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=18339&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8327640
  Stats: 1199 lines in 6 files changed: 1157 ins; 10 del; 32 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

Reply via email to