From 80d24ef13a269494ee30c78bb6238a976e134dbc Mon Sep 17 00:00:00 2001 From: Naveed Khan Date: Fri, 17 Jul 2026 22:53:16 +0530 Subject: [PATCH 1/2] pass configured locale to date pattern in DateTimeConverter --- .../converters/DateTimeConverter.java | 2 +- .../converters/AbstractDateConverterTest.java | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java b/src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java index c08de17e5..dd426d057 100644 --- a/src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java +++ b/src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java @@ -293,7 +293,7 @@ protected DateFormat getFormat(final Locale locale, final TimeZone timeZone) { * @return The DateFormat */ private DateFormat getFormat(final String pattern) { - final DateFormat format = new SimpleDateFormat(pattern); + final DateFormat format = locale == null ? new SimpleDateFormat(pattern) : new SimpleDateFormat(pattern, locale); if (timeZone != null) { format.setTimeZone(timeZone); } diff --git a/src/test/java/org/apache/commons/beanutils2/converters/AbstractDateConverterTest.java b/src/test/java/org/apache/commons/beanutils2/converters/AbstractDateConverterTest.java index 0e55f7b1e..0371157cb 100644 --- a/src/test/java/org/apache/commons/beanutils2/converters/AbstractDateConverterTest.java +++ b/src/test/java/org/apache/commons/beanutils2/converters/AbstractDateConverterTest.java @@ -268,6 +268,27 @@ public void testLocale() { Locale.setDefault(defaultLocale); } + /** + * Test that a configured Locale is honored when a pattern is also set. + */ + @Test + void testLocaleWithPattern() { + // Pin the default Locale to one whose month names differ from the configured Locale. + final Locale defaultLocale = Locale.getDefault(); + Locale.setDefault(Locale.US); + try { + final String pattern = "dd MMMM yyyy"; // month name is Locale-sensitive + final DateTimeConverter converter = makeConverter(); + converter.setLocale(Locale.GERMANY); + converter.setPattern(pattern); + final String testString = "28 Oktober 2006"; + final Object expected = toType(testString, pattern, Locale.GERMANY); + validConversion(converter, expected, testString); + } finally { + Locale.setDefault(defaultLocale); + } + } + /** * Test Converter with multiple patterns */ From bcb1626d79412eee2946bcd02b735060cd5cb64b Mon Sep 17 00:00:00 2001 From: Naveed Khan Date: Sun, 19 Jul 2026 01:40:30 +0530 Subject: [PATCH 2/2] use junit pioneer to set the default locale in testLocaleWithPattern --- pom.xml | 5 ++++ .../converters/AbstractDateConverterTest.java | 24 ++++++++----------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/pom.xml b/pom.xml index 244d49b53..99e8910db 100644 --- a/pom.xml +++ b/pom.xml @@ -120,6 +120,11 @@ junit-jupiter test + + org.junit-pioneer + junit-pioneer + test + diff --git a/src/test/java/org/apache/commons/beanutils2/converters/AbstractDateConverterTest.java b/src/test/java/org/apache/commons/beanutils2/converters/AbstractDateConverterTest.java index 0371157cb..48bc622a6 100644 --- a/src/test/java/org/apache/commons/beanutils2/converters/AbstractDateConverterTest.java +++ b/src/test/java/org/apache/commons/beanutils2/converters/AbstractDateConverterTest.java @@ -42,6 +42,7 @@ import org.apache.commons.beanutils2.ConversionException; import org.apache.commons.beanutils2.Converter; import org.junit.jupiter.api.Test; +import org.junitpioneer.jupiter.DefaultLocale; /** * Abstract base for <Date>Converter classes. @@ -272,21 +273,16 @@ public void testLocale() { * Test that a configured Locale is honored when a pattern is also set. */ @Test + @DefaultLocale(language = "en", country = "US") void testLocaleWithPattern() { - // Pin the default Locale to one whose month names differ from the configured Locale. - final Locale defaultLocale = Locale.getDefault(); - Locale.setDefault(Locale.US); - try { - final String pattern = "dd MMMM yyyy"; // month name is Locale-sensitive - final DateTimeConverter converter = makeConverter(); - converter.setLocale(Locale.GERMANY); - converter.setPattern(pattern); - final String testString = "28 Oktober 2006"; - final Object expected = toType(testString, pattern, Locale.GERMANY); - validConversion(converter, expected, testString); - } finally { - Locale.setDefault(defaultLocale); - } + // The default Locale's month names differ from the configured Locale's. + final String pattern = "dd MMMM yyyy"; // month name is Locale-sensitive + final DateTimeConverter converter = makeConverter(); + converter.setLocale(Locale.GERMANY); + converter.setPattern(pattern); + final String testString = "28 Oktober 2006"; + final Object expected = toType(testString, pattern, Locale.GERMANY); + validConversion(converter, expected, testString); } /**