Skip to content

Commit 36ec405

Browse files
committed
backward-compatibiity for ISO8601 timestamps from older version client
1 parent 2279cea commit 36ec405

2 files changed

Lines changed: 26 additions & 10 deletions

File tree

  • kubernetes/src

kubernetes/src/main/java/io/kubernetes/client/openapi/JSON.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import java.time.OffsetDateTime;
3434
import java.time.format.DateTimeFormatter;
3535
import java.time.format.DateTimeFormatterBuilder;
36+
import java.time.format.DateTimeParseException;
3637
import java.time.temporal.ChronoField;
3738
import java.util.Date;
3839
import java.util.Map;
@@ -244,7 +245,12 @@ public OffsetDateTime read(JsonReader in) throws IOException {
244245
if (date.endsWith("+0000")) {
245246
date = date.substring(0, date.length() - 5) + "Z";
246247
}
247-
return OffsetDateTime.parse(date, formatter);
248+
try {
249+
return OffsetDateTime.parse(date, formatter);
250+
} catch (DateTimeParseException e) {
251+
// backward-compatibility for ISO8601 timestamp format
252+
return OffsetDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
253+
}
248254
}
249255
}
250256
}

kubernetes/src/test/java/io/kubernetes/client/openapi/JSONTest.java

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@
2121

2222
public class JSONTest {
2323

24+
private final JSON json = new JSON();
25+
2426
@Test
2527
public void testSerializeByteArray() {
26-
final JSON json = new JSON();
2728
final String plainText = "string that contains '=' when encoded";
2829
final String base64String = json.serialize(plainText.getBytes());
2930
// serialize returns string surrounded by quotes: "\"[base64]\""
@@ -40,19 +41,28 @@ public void testSerializeByteArray() {
4041

4142
@Test
4243
public void testOffsetDateTime1e6Parse() {
43-
System.out.println(JSON.RFC3339MICRO_FORMATTER.format(OffsetDateTime.now()));
44-
String timeStr = "2018-04-03T11:32:26.123456Z";
45-
OffsetDateTime t = OffsetDateTime.parse(timeStr, JSON.RFC3339MICRO_FORMATTER);
46-
String serializedTsStr = JSON.RFC3339MICRO_FORMATTER.format(t);
44+
String timeStr = "\"2018-04-03T11:32:26.123456Z\"";
45+
OffsetDateTime dateTime = json.deserialize(timeStr, OffsetDateTime.class);
46+
String serializedTsStr = json.serialize(dateTime);
4747
assertEquals(timeStr, serializedTsStr);
4848
}
4949

5050
@Test
5151
public void testOffsetDateTime1e4Parse() {
52-
String timeStr = "2018-04-03T11:32:26.123400Z";
53-
OffsetDateTime t = OffsetDateTime.parse(timeStr, JSON.RFC3339MICRO_FORMATTER);
54-
String serializedTsStr = JSON.RFC3339MICRO_FORMATTER.format(t);
55-
assertEquals(timeStr, serializedTsStr);
52+
String timeStr = "\"2018-04-03T11:32:26.1234Z\"";
53+
OffsetDateTime dateTime = json.deserialize(timeStr, OffsetDateTime.class);
54+
String serializedTsStr = json.serialize(dateTime);
55+
String expectedStr = "\"2018-04-03T11:32:26.123400Z\"";
56+
assertEquals(expectedStr, serializedTsStr);
57+
}
58+
59+
@Test
60+
public void testOffsetDateTime1e3Parse() {
61+
String timeStr = "\"2018-04-03T11:32:26.123Z\"";
62+
OffsetDateTime dateTime = json.deserialize(timeStr, OffsetDateTime.class);
63+
String serializedTsStr = json.serialize(dateTime);
64+
String expectedStr = "\"2018-04-03T11:32:26.123000Z\"";
65+
assertEquals(expectedStr, serializedTsStr);
5666
}
5767

5868
@Test

0 commit comments

Comments
 (0)