This is an automated email from the ASF dual-hosted git repository.
garydgregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-beanutils.git
The following commit(s) were added to refs/heads/master by this push:
new cdfcb331 Pass configured locale to SimpleDateFormat in
DateTimeConverter (#421)
cdfcb331 is described below
commit cdfcb331607086943bb88be659f1f31a7a5f42ba
Author: Naveed Khan <[email protected]>
AuthorDate: Sat Jul 18 20:54:38 2026 +0000
Pass configured locale to SimpleDateFormat in DateTimeConverter (#421)
* pass configured locale to date pattern in DateTimeConverter
* use junit pioneer to set the default locale in testLocaleWithPattern
---
pom.xml | 5 +++++
.../beanutils2/converters/DateTimeConverter.java | 2 +-
.../converters/AbstractDateConverterTest.java | 17 +++++++++++++++++
3 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 244d49b5..99e8910d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -120,6 +120,11 @@
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.junit-pioneer</groupId>
+ <artifactId>junit-pioneer</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
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 c08de17e..dd426d05 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 @@ public abstract class DateTimeConverter<D> extends
AbstractConverter<D> {
* @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 0e55f7b1..48bc622a 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 java.util.Objects;
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 abstract class AbstractDateConverterTest<T> {
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<T> 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
*/