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/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..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. @@ -268,6 +269,22 @@ public void testLocale() { Locale.setDefault(defaultLocale); } + /** + * Test that a configured Locale is honored when a pattern is also set. + */ + @Test + @DefaultLocale(language = "en", country = "US") + void testLocaleWithPattern() { + // 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); + } + /** * Test Converter with multiple patterns */