Author: centic
Date: Sat Dec 14 18:53:03 2024
New Revision: 1922500
URL: http://svn.apache.org/viewvc?rev=1922500&view=rev
Log:
Adjust for removed locale provider in JDK 23 and newer
JDK 23 removes the COMPAT/JRE locale provider
which causes some changes to string formatting
Some currency formatting relied on COMPAT to
format US-Dollar, we should override this to
keep the formatting the same way as Excel and
LibreOffice.
Also some tests for Chinese tried to work
around when COMPAT was used, this needs to
take JDK 23 into account when checking
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/NumericFunction.java
poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestExcelStyleDateFormatter.java
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/NumericFunction.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/NumericFunction.java?rev=1922500&r1=1922499&r2=1922500&view=diff
==============================================================================
---
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/NumericFunction.java
(original)
+++
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/NumericFunction.java
Sat Dec 14 18:53:03 2024
@@ -106,7 +106,11 @@ public abstract class NumericFunction im
DecimalFormat nf = (DecimalFormat)
NumberFormat.getCurrencyInstance(LocaleUtil.getUserLocale());
int decimalPlaces = Math.max(nPlaces, 0);
if
(LocaleUtil.getUserLocale().getCountry().equalsIgnoreCase("US")) {
- nf.setNegativePrefix("(" +
nf.getDecimalFormatSymbols().getCurrencySymbol());
+ // Java 23 removed "COMPAT" locale provider and thus
+ // we need to ensure that the dollar-sign is used and not
"USD" as Java 23 and newer
+ // would do
+ nf.setPositivePrefix("$");
+ nf.setNegativePrefix("($");
nf.setNegativeSuffix(")");
}
nf.setMinimumFractionDigits(decimalPlaces);
Modified:
poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestExcelStyleDateFormatter.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestExcelStyleDateFormatter.java?rev=1922500&r1=1922499&r2=1922500&view=diff
==============================================================================
---
poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestExcelStyleDateFormatter.java
(original)
+++
poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestExcelStyleDateFormatter.java
Sat Dec 14 18:53:03 2024
@@ -73,10 +73,26 @@ class TestExcelStyleDateFormatter {
* is expected and selected via an index
*/
private static int localeIndex(Locale locale) {
- return jreVersion < 9 ||
- !locale.equals (Locale.CHINESE) ||
- (provider != null && (provider.startsWith("JRE") ||
provider.startsWith("COMPAT")))
- ? 0 : 1;
+ if (jreVersion < 9) {
+ return 0;
+ }
+
+ // only Chinese needs special handling
+ if (!locale.equals (Locale.CHINESE)) {
+ return 0;
+ }
+
+ // in JDK 23, the COMPAT/JRE provider was removed completely
+ if (jreVersion >= 23) {
+ return 1;
+ }
+
+ // check if the JRE/COMPAT locale provide is selected
+ if (provider != null && (provider.startsWith("JRE") ||
provider.startsWith("COMPAT"))) {
+ return 0;
+ }
+
+ return 1;
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]