From 33d3496a162f8f734ee3e5e971d919dd3ea271d8 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Tue, 21 May 2024 17:39:11 +0200 Subject: [PATCH] Polishing (cherry picked from commit 20dea0dae2725fbf371ff720fceb82e99d5fdd41) --- .../datetime/standard/InstantFormatter.java | 6 +++--- .../format/datetime/DateFormattingTests.java | 4 ++-- .../standard/DateTimeFormattingTests.java | 14 +++++++------- .../standard/InstantFormatterTests.java | 19 +++++++++---------- 4 files changed, 21 insertions(+), 22 deletions(-) diff --git a/spring-context/src/main/java/org/springframework/format/datetime/standard/InstantFormatter.java b/spring-context/src/main/java/org/springframework/format/datetime/standard/InstantFormatter.java index 456c0ad090..06ff8213de 100644 --- a/spring-context/src/main/java/org/springframework/format/datetime/standard/InstantFormatter.java +++ b/spring-context/src/main/java/org/springframework/format/datetime/standard/InstantFormatter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -41,12 +41,12 @@ public class InstantFormatter implements Formatter { @Override public Instant parse(String text, Locale locale) throws ParseException { - if (text.length() > 0 && Character.isAlphabetic(text.charAt(0))) { + if (!text.isEmpty() && Character.isAlphabetic(text.charAt(0))) { // assuming RFC-1123 value a la "Tue, 3 Jun 2008 11:05:30 GMT" return Instant.from(DateTimeFormatter.RFC_1123_DATE_TIME.parse(text)); } else { - // assuming UTC instant a la "2007-12-03T10:15:30.00Z" + // assuming UTC instant a la "2007-12-03T10:15:30.000Z" return Instant.parse(text); } } diff --git a/spring-context/src/test/java/org/springframework/format/datetime/DateFormattingTests.java b/spring-context/src/test/java/org/springframework/format/datetime/DateFormattingTests.java index 2ea58f5e06..6f7751545e 100644 --- a/spring-context/src/test/java/org/springframework/format/datetime/DateFormattingTests.java +++ b/spring-context/src/test/java/org/springframework/format/datetime/DateFormattingTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2023 the original author or authors. + * Copyright 2002-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,7 +52,7 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Juergen Hoeller * @author Sam Brannen */ -public class DateFormattingTests { +class DateFormattingTests { private final FormattingConversionService conversionService = new FormattingConversionService(); 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 392fdd61c6..037aab4600 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 @@ -1,5 +1,5 @@ /* - * Copyright 2002-2023 the original author or authors. + * Copyright 2002-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -512,7 +512,7 @@ class DateTimeFormattingTests { } @Test - public void testBindYearMonthAnnotatedPattern() { + void testBindYearMonthAnnotatedPattern() { MutablePropertyValues propertyValues = new MutablePropertyValues(); propertyValues.add("yearMonthAnnotatedPattern", "12/2007"); binder.bind(propertyValues); @@ -531,7 +531,7 @@ class DateTimeFormattingTests { } @Test - public void testBindMonthDayAnnotatedPattern() { + void testBindMonthDayAnnotatedPattern() { MutablePropertyValues propertyValues = new MutablePropertyValues(); propertyValues.add("monthDayAnnotatedPattern", "1/3"); binder.bind(propertyValues); @@ -631,10 +631,10 @@ class DateTimeFormattingTests { @DateTimeFormat(style = "M-") private LocalDate styleLocalDate; - @DateTimeFormat(style = "S-", fallbackPatterns = { "yyyy-MM-dd", "yyyyMMdd", "yyyy.MM.dd" }) + @DateTimeFormat(style = "S-", fallbackPatterns = {"yyyy-MM-dd", "yyyyMMdd", "yyyy.MM.dd"}) private LocalDate styleLocalDateWithFallbackPatterns; - @DateTimeFormat(pattern = "yyyy-MM-dd", fallbackPatterns = { "M/d/yy", "yyyyMMdd", "yyyy.MM.dd" }) + @DateTimeFormat(pattern = "yyyy-MM-dd", fallbackPatterns = {"M/d/yy", "yyyyMMdd", "yyyy.MM.dd"}) private LocalDate patternLocalDateWithFallbackPatterns; private LocalTime localTime; @@ -642,7 +642,7 @@ class DateTimeFormattingTests { @DateTimeFormat(style = "-M") private LocalTime styleLocalTime; - @DateTimeFormat(style = "-M", fallbackPatterns = { "HH:mm:ss", "HH:mm"}) + @DateTimeFormat(style = "-M", fallbackPatterns = {"HH:mm:ss", "HH:mm"}) private LocalTime styleLocalTimeWithFallbackPatterns; private LocalDateTime localDateTime; @@ -662,7 +662,7 @@ class DateTimeFormattingTests { @DateTimeFormat(iso = ISO.DATE_TIME) private LocalDateTime isoLocalDateTime; - @DateTimeFormat(iso = ISO.DATE_TIME, fallbackPatterns = { "yyyy-MM-dd HH:mm:ss", "M/d/yy HH:mm"}) + @DateTimeFormat(iso = ISO.DATE_TIME, fallbackPatterns = {"yyyy-MM-dd HH:mm:ss", "M/d/yy HH:mm"}) private LocalDateTime isoLocalDateTimeWithFallbackPatterns; private Instant instant; diff --git a/spring-context/src/test/java/org/springframework/format/datetime/standard/InstantFormatterTests.java b/spring-context/src/test/java/org/springframework/format/datetime/standard/InstantFormatterTests.java index 16ba2cbd5e..bd4058fdca 100644 --- a/spring-context/src/test/java/org/springframework/format/datetime/standard/InstantFormatterTests.java +++ b/spring-context/src/test/java/org/springframework/format/datetime/standard/InstantFormatterTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ package org.springframework.format.datetime.standard; import java.text.ParseException; import java.time.Instant; import java.time.format.DateTimeFormatter; +import java.util.Locale; import java.util.Random; import java.util.stream.Stream; @@ -49,13 +50,12 @@ class InstantFormatterTests { private final InstantFormatter instantFormatter = new InstantFormatter(); + @ParameterizedTest @ArgumentsSource(ISOSerializedInstantProvider.class) void should_parse_an_ISO_formatted_string_representation_of_an_Instant(String input) throws ParseException { Instant expected = DateTimeFormatter.ISO_INSTANT.parse(input, Instant::from); - - Instant actual = instantFormatter.parse(input, null); - + Instant actual = instantFormatter.parse(input, Locale.US); assertThat(actual).isEqualTo(expected); } @@ -63,9 +63,7 @@ class InstantFormatterTests { @ArgumentsSource(RFC1123SerializedInstantProvider.class) void should_parse_an_RFC1123_formatted_string_representation_of_an_Instant(String input) throws ParseException { Instant expected = DateTimeFormatter.RFC_1123_DATE_TIME.parse(input, Instant::from); - - Instant actual = instantFormatter.parse(input, null); - + Instant actual = instantFormatter.parse(input, Locale.US); assertThat(actual).isEqualTo(expected); } @@ -73,12 +71,11 @@ class InstantFormatterTests { @ArgumentsSource(RandomInstantProvider.class) void should_serialize_an_Instant_using_ISO_format_and_ignoring_Locale(Instant input) { String expected = DateTimeFormatter.ISO_INSTANT.format(input); - - String actual = instantFormatter.print(input, null); - + String actual = instantFormatter.print(input, Locale.US); assertThat(actual).isEqualTo(expected); } + private static class RandomInstantProvider implements ArgumentsProvider { private static final long DATA_SET_SIZE = 10; @@ -100,6 +97,7 @@ class InstantFormatterTests { } } + private static class ISOSerializedInstantProvider extends RandomInstantProvider { @Override @@ -108,6 +106,7 @@ class InstantFormatterTests { } } + private static class RFC1123SerializedInstantProvider extends RandomInstantProvider { // RFC-1123 supports only 4-digit years