Skip to content
This repository has been archived by the owner on Feb 2, 2023. It is now read-only.

Commit

Permalink
8282929: Localized monetary symbols are not reflected in `toLocalized…
Browse files Browse the repository at this point in the history
…Pattern` return value

Backport-of: c96085eaab1f6b21e084b94fcc619d090f0afc97
  • Loading branch information
Yuri Nesterenko committed Jun 9, 2022
1 parent 08e93a9 commit 2cfbdff
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 5 deletions.
12 changes: 7 additions & 5 deletions src/java.base/share/classes/java/text/DecimalFormat.java
@@ -1,5 +1,5 @@
/*
* Copyright (c) 1996, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1996, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -3210,16 +3210,18 @@ private String toPattern(boolean localized) {
for (i = digitCount; i > 0; --i) {
if (i != digitCount && isGroupingUsed() && groupingSize != 0 &&
i % groupingSize == 0) {
result.append(localized ? symbols.getGroupingSeparator() :
PATTERN_GROUPING_SEPARATOR);
result.append(localized ?
(isCurrencyFormat ? symbols.getMonetaryGroupingSeparator() : symbols.getGroupingSeparator()) :
PATTERN_GROUPING_SEPARATOR);
}
result.append(i <= getMinimumIntegerDigits()
? (localized ? symbols.getZeroDigit() : PATTERN_ZERO_DIGIT)
: (localized ? symbols.getDigit() : PATTERN_DIGIT));
}
if (getMaximumFractionDigits() > 0 || decimalSeparatorAlwaysShown)
result.append(localized ? symbols.getDecimalSeparator() :
PATTERN_DECIMAL_SEPARATOR);
result.append(localized ?
(isCurrencyFormat ? symbols.getMonetaryDecimalSeparator() : symbols.getDecimalSeparator()) :
PATTERN_DECIMAL_SEPARATOR);
for (i = 0; i < getMaximumFractionDigits(); ++i) {
if (i < getMinimumFractionDigits()) {
result.append(localized ? symbols.getZeroDigit() :
Expand Down
@@ -0,0 +1,61 @@
/*
* Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/

/*
* @test
* @bug 8282929
* @summary Verifies that toLocalizedPattern() method correctly returns
* monetary symbols in a currency formatter
* @run testng ToLocalizedPatternTest
*/

import static org.testng.Assert.assertEquals;
import org.testng.annotations.Test;

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;

@Test
public class ToLocalizedPatternTest {
private static final char MONETARY_GROUPING = 'g';
private static final char MONETARY_DECIMAL = 'd';

public void testToLocalizedPattern() {
var dfs = new DecimalFormatSymbols(Locale.US);

// Customize the decimal format symbols
dfs.setMonetaryGroupingSeparator(MONETARY_GROUPING);
dfs.setMonetaryDecimalSeparator(MONETARY_DECIMAL);

// create a currency formatter
var cf = (DecimalFormat)DecimalFormat.getCurrencyInstance(Locale.US);
cf.setDecimalFormatSymbols(dfs);

// check
assertEquals(cf.toLocalizedPattern(),
cf.toPattern()
.replace(',', MONETARY_GROUPING)
.replace('.', MONETARY_DECIMAL));
}
}

1 comment on commit 2cfbdff

@openjdk-notifier
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.