From cfd9081647e732143fbdc2db99681afa5b403a0f Mon Sep 17 00:00:00 2001 From: Stephen Colebourne Date: Sat, 8 Oct 2005 09:55:25 +0000 Subject: [PATCH] Handle differences between JDK1.3 and JDK1.4 git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/lang/trunk@307279 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/commons/lang/LocaleUtils.java | 12 ++++++++---- .../org/apache/commons/lang/LocaleUtilsTest.java | 13 ++++++++++--- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/java/org/apache/commons/lang/LocaleUtils.java b/src/java/org/apache/commons/lang/LocaleUtils.java index 437594850..e41d9f011 100644 --- a/src/java/org/apache/commons/lang/LocaleUtils.java +++ b/src/java/org/apache/commons/lang/LocaleUtils.java @@ -70,11 +70,15 @@ public LocaleUtils() { * locale object from it.

* *
-     *   LocaleUtils.toLocale("en")     = new Locale("en", "")
-     *   LocaleUtils.toLocale("en_GB")  = new Locale("en", "GB")
-     *   LocaleUtils.toLocale("en_GB_xxx")  = new Locale("en", "GB", "xxx")
+     *   LocaleUtils.toLocale("en")         = new Locale("en", "")
+     *   LocaleUtils.toLocale("en_GB")      = new Locale("en", "GB")
+     *   LocaleUtils.toLocale("en_GB_xxx")  = new Locale("en", "GB", "xxx")   (#)
      * 
- * + * + *

(#) The behaviour of the JDK variant constructor changed between JDK1.3 and JDK1.4. + * In JDK1.3, the constructor upper cases the variant, in JDK1.4, it doesn't. + * Thus, the result from getVariant() may vary depending on your JDK.

+ * *

This method validates the input strictly. * The language code must be lowercase. * The country code must be uppercase. diff --git a/src/test/org/apache/commons/lang/LocaleUtilsTest.java b/src/test/org/apache/commons/lang/LocaleUtilsTest.java index 22cb703ec..52c78c82e 100644 --- a/src/test/org/apache/commons/lang/LocaleUtilsTest.java +++ b/src/test/org/apache/commons/lang/LocaleUtilsTest.java @@ -220,9 +220,16 @@ public void testToLocale_2Part() { * Test toLocale() method. */ public void testToLocale_3Part() { - assertValidToLocale("us_EN_a", "us", "EN", "a"); assertValidToLocale("us_EN_A", "us", "EN", "A"); - assertValidToLocale("us_EN_SFsafdFDsdfF", "us", "EN", "SFsafdFDsdfF"); + // this isn't pretty, but was caused by a jdk bug it seems + // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4210525 + if (SystemUtils.isJavaVersionAtLeast(1.4f)) { + assertValidToLocale("us_EN_a", "us", "EN", "a"); + assertValidToLocale("us_EN_SFsafdFDsdfF", "us", "EN", "SFsafdFDsdfF"); + } else { + assertValidToLocale("us_EN_a", "us", "EN", "A"); + assertValidToLocale("us_EN_SFsafdFDsdfF", "us", "EN", "SFSAFDFDSDFF"); + } try { LocaleUtils.toLocale("us_EN-a"); @@ -272,7 +279,7 @@ public void testLocaleLookupList_Locale() { new Locale[] { LOCALE_EN_US_ZZZZ, LOCALE_EN_US, - new Locale("en", "")}); + LOCALE_EN}); } /**