From 02375bb1092b3c97fa4c1613d1d01b3cddf586c0 Mon Sep 17 00:00:00 2001 From: Yoshito Umaoka Date: Fri, 19 Aug 2011 20:44:12 +0000 Subject: [PATCH] ICU-8630 Follow up fix - ULocale#setDefault(ULocale) to synchronize default Locale properly. X-SVN-Rev: 30549 --- icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java | 3 ++- .../core/src/com/ibm/icu/dev/test/util/ULocaleTest.java | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java b/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java index b40d2d7f605..da95103639e 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java @@ -597,7 +597,8 @@ public final class ULocale implements Serializable { * @stable ICU 3.0 */ public static synchronized void setDefault(ULocale newLocale){ - Locale.setDefault(newLocale.toLocale()); + defaultLocale = newLocale.toLocale(); + Locale.setDefault(defaultLocale); defaultULocale = newLocale; // This method also updates all category default locales for (Category cat : Category.values()) { diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ULocaleTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ULocaleTest.java index e43db659725..726e8e8d036 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ULocaleTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ULocaleTest.java @@ -194,6 +194,7 @@ public class ULocaleTest extends TestFmwk { */ public void TestJavaLocaleCompatibility() { Locale backupDefault = Locale.getDefault(); + ULocale orgUlocDefault = ULocale.getDefault(); // Java Locale for ja_JP with Japanese calendar Locale jaJPJP = new Locale("ja", "JP", "JP"); @@ -289,6 +290,11 @@ public class ULocaleTest extends TestFmwk { errln("FAIL: ULocale#setDefault failed to set Java Locale no_NO_NY /actual: " + Locale.getDefault()); } Locale.setDefault(backupDefault); + + // Make sure default ULocale is restored + if (!ULocale.getDefault().equals(orgUlocDefault)) { + errln("FAIL: Original default ULocale is not restored - " + ULocale.getDefault() + ", expected(orginal) - " + orgUlocDefault); + } } // ================= Infrastructure =================