Skip to content

Commit 41221b8

Browse files
committed
fix: add support for deserializing RFC3339 full-date values
1 parent a6d6541 commit 41221b8

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/main/java/com/ibm/cloud/sdk/core/util/DateDeserializer.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public class DateDeserializer implements JsonDeserializer<Date> {
4242
private static final String DATE_WITH_SECONDS = "yyyy-MM-dd'T'HH:mm:ss";
4343
private static final String DATE_822 = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
4444
private static final String DATE_822_WITHOUT_MS = "yyyy-MM-dd'T'HH:mm:ssZ";
45+
private static final String RFC3339_FULL_DATE = "yyyy-MM-dd";
4546

4647
// SimpleDateFormat is NOT thread safe - they require private visibility and synchronized access
4748
private final SimpleDateFormat alchemyDateFormatter = new SimpleDateFormat(DATE_FROM_ALCHEMY);
@@ -51,10 +52,11 @@ public class DateDeserializer implements JsonDeserializer<Date> {
5152
private final SimpleDateFormat utcWithSecondsDateFormatter = new SimpleDateFormat(DATE_WITH_SECONDS);
5253
private final SimpleDateFormat rfc822DateFormatter = new SimpleDateFormat(DATE_822);
5354
private final SimpleDateFormat rfc822WithoutMsDateFormatter = new SimpleDateFormat(DATE_822_WITHOUT_MS);
55+
private final SimpleDateFormat rfc3339FullDateFormatter = new SimpleDateFormat(RFC3339_FULL_DATE);
5456

5557
private final List<SimpleDateFormat> dateFormatters =
5658
Arrays.asList(utcDateFormatter, utcWithoutSecondsDateFormatter, dialogDateFormatter,
57-
alchemyDateFormatter, utcWithSecondsDateFormatter);
59+
alchemyDateFormatter, utcWithSecondsDateFormatter, rfc3339FullDateFormatter);
5860

5961
private final List<SimpleDateFormat> rfc822Formatters =
6062
Arrays.asList(rfc822DateFormatter, rfc822WithoutMsDateFormatter);

src/test/java/com/ibm/cloud/sdk/core/util/DateDeserializerTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,5 +122,16 @@ public void testDeserialize() {
122122
} catch (Exception ex) {
123123
fail(ex.getMessage());
124124
}
125+
126+
// RFC3339 full-date
127+
try {
128+
String dateString = "2020-01-01";
129+
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
130+
Date dateVal = dateFormat.parse(dateString);
131+
JsonElement element = parser.parse("\"" + dateString + "\"");
132+
assertEquals(deserializer.deserialize(element, null, null), dateVal);
133+
} catch (Exception ex) {
134+
fail(ex.getMessage());
135+
}
125136
}
126137
}

0 commit comments

Comments
 (0)