From a57ea39707be88862d81cb6aa409f5f56dc63458 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Fri, 3 Dec 2021 11:12:45 +0100 Subject: [PATCH] Polish "Add support for YearMonth and MonthDay in @DateTimeFormat" See gh-1215 --- ...eTimeFormatAnnotationFormatterFactory.java | 3 +- .../standard/DateTimeFormattingTests.java | 30 +++++++++---------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/spring-context/src/main/java/org/springframework/format/datetime/standard/Jsr310DateTimeFormatAnnotationFormatterFactory.java b/spring-context/src/main/java/org/springframework/format/datetime/standard/Jsr310DateTimeFormatAnnotationFormatterFactory.java index e7f96dc1183c..4c112bfc27fa 100644 --- a/spring-context/src/main/java/org/springframework/format/datetime/standard/Jsr310DateTimeFormatAnnotationFormatterFactory.java +++ b/spring-context/src/main/java/org/springframework/format/datetime/standard/Jsr310DateTimeFormatAnnotationFormatterFactory.java @@ -19,9 +19,9 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; +import java.time.MonthDay; import java.time.OffsetDateTime; import java.time.OffsetTime; -import java.time.MonthDay; import java.time.YearMonth; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; @@ -68,7 +68,6 @@ public class Jsr310DateTimeFormatAnnotationFormatterFactory extends EmbeddedValu FIELD_TYPES = Collections.unmodifiableSet(fieldTypes); } - @Override public final Set> getFieldTypes() { return FIELD_TYPES; diff --git a/spring-context/src/test/java/org/springframework/format/datetime/standard/DateTimeFormattingTests.java b/spring-context/src/test/java/org/springframework/format/datetime/standard/DateTimeFormattingTests.java index d16483b7686d..1fe57b428c5a 100644 --- a/spring-context/src/test/java/org/springframework/format/datetime/standard/DateTimeFormattingTests.java +++ b/spring-context/src/test/java/org/springframework/format/datetime/standard/DateTimeFormattingTests.java @@ -473,9 +473,9 @@ public void testBindYearMonthAnnotatedPattern() { MutablePropertyValues propertyValues = new MutablePropertyValues(); propertyValues.add("yearMonthAnnotatedPattern", "12/2007"); binder.bind(propertyValues); - assertEquals(0, binder.getBindingResult().getErrorCount()); - assertTrue(binder.getBindingResult().getFieldValue("yearMonthAnnotatedPattern").toString().equals("12/2007")); - assertEquals(YearMonth.parse("2007-12"), binder.getBindingResult().getRawFieldValue("yearMonthAnnotatedPattern")); + assertThat(binder.getBindingResult().getErrorCount()).isEqualTo(0); + assertThat(binder.getBindingResult().getFieldValue("yearMonthAnnotatedPattern")).isEqualTo("12/2007"); + assertThat(binder.getBindingResult().getRawFieldValue("yearMonthAnnotatedPattern")).isEqualTo(YearMonth.parse("2007-12")); } @Test @@ -487,6 +487,16 @@ void testBindMonthDay() { assertThat(binder.getBindingResult().getFieldValue("monthDay").toString().equals("--12-03")).isTrue(); } + @Test + public void testBindMonthDayAnnotatedPattern() { + MutablePropertyValues propertyValues = new MutablePropertyValues(); + propertyValues.add("monthDayAnnotatedPattern", "1/3"); + binder.bind(propertyValues); + assertThat(binder.getBindingResult().getErrorCount()).isEqualTo(0); + assertThat(binder.getBindingResult().getFieldValue("monthDayAnnotatedPattern")).isEqualTo("1/3"); + assertThat(binder.getBindingResult().getRawFieldValue("monthDayAnnotatedPattern")).isEqualTo(MonthDay.parse("--01-03")); + } + @Nested class FallbackPatternTests { @@ -568,16 +578,6 @@ void patternLocalDateWithUnsupportedPattern() { } } - @Test - public void testBindMonthDayAnnotatedPattern() { - MutablePropertyValues propertyValues = new MutablePropertyValues(); - propertyValues.add("monthDayAnnotatedPattern", "1/3"); - binder.bind(propertyValues); - assertEquals(0, binder.getBindingResult().getErrorCount()); - assertTrue(binder.getBindingResult().getFieldValue("monthDayAnnotatedPattern").toString().equals("1/3")); - assertEquals(MonthDay.parse("--01-03"), binder.getBindingResult().getRawFieldValue("monthDayAnnotatedPattern")); - } - public static class DateTimeBean { @@ -635,11 +635,11 @@ public static class DateTimeBean { @DateTimeFormat(pattern="MM/uuuu") private YearMonth yearMonthAnnotatedPattern; + private MonthDay monthDay; + @DateTimeFormat(pattern="M/d") private MonthDay monthDayAnnotatedPattern; - private MonthDay monthDay; - private final List children = new ArrayList<>();