1
1
diff --git a/kubernetes/src/main/java/io/kubernetes/client/openapi/JSON.java b/kubernetes/src/main/java/io/kubernetes/client/openapi/JSON.java
2
- index 4406c2199..f56413a25 100644
2
+ index 8d0f4c47d..cff284332 100644
3
3
--- a/kubernetes/src/main/java/io/kubernetes/client/openapi/JSON.java
4
4
+++ b/kubernetes/src/main/java/io/kubernetes/client/openapi/JSON.java
5
5
@@ -23,6 +23,8 @@ import com.google.gson.JsonElement;
@@ -11,21 +11,21 @@ index 4406c2199..f56413a25 100644
11
11
import okio.ByteString;
12
12
13
13
import java.io.IOException;
14
- @@ -34,6 +36,9 @@ import java.text.ParsePosition;
15
- import java.time.LocalDate;
14
+ @@ -34,7 +36,9 @@ import java.time.LocalDate;
16
15
import java.time.OffsetDateTime;
17
- import java.time.format.DateTimeFormatter;
16
+ import java.time.ZoneId;
17
+ import java.time.ZoneOffset;
18
+ - import java.time.format.DateTimeFormatter;
18
19
+ import java.time.format.DateTimeFormatterBuilder;
19
20
+ import java.time.format.DateTimeParseException;
20
21
+ import java.time.temporal.ChronoField;
21
22
import java.util.Date;
22
23
import java.util.Locale;
23
24
import java.util.Map;
24
- @@ -48 ,9 +53 ,19 @@ import java.util.HashMap ;
25
+ @@ -50 ,9 +54 ,19 @@ import java.util.TimeZone ;
25
26
public class JSON {
26
27
private static Gson gson;
27
28
private static boolean isLenientOnJson = false;
28
- +
29
29
+ private static final DateTimeFormatter RFC3339MICRO_FORMATTER =
30
30
+ new DateTimeFormatterBuilder()
31
31
+ .parseDefaulting(ChronoField.OFFSET_SECONDS, 0)
@@ -35,31 +35,33 @@ index 4406c2199..f56413a25 100644
35
35
+ .optionalEnd()
36
36
+ .appendLiteral("Z")
37
37
+ .toFormatter();
38
+ +
38
39
private static DateTypeAdapter dateTypeAdapter = new DateTypeAdapter();
39
40
private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter();
40
41
- private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter();
41
42
+ private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(RFC3339MICRO_FORMATTER);
42
43
private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter();
43
44
private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter();
44
45
45
- @@ -58 ,7 +73 ,10 @@ public class JSON {
46
+ @@ -65 ,7 +79 ,10 @@ public class JSON {
46
47
public static GsonBuilder createGson() {
47
48
GsonFireBuilder fireBuilder = new GsonFireBuilder()
48
49
;
49
50
- GsonBuilder builder = fireBuilder.createGsonBuilder();
50
51
+ GsonBuilder builder =
51
- + fireBuilder
52
- + .registerPreProcessor(V1Status.class, new V1StatusPreProcessor())
53
- + .createGsonBuilder();
52
+ + fireBuilder
53
+ + .registerPreProcessor(V1Status.class, new V1StatusPreProcessor())
54
+ + .createGsonBuilder();
54
55
return builder;
55
56
}
56
57
57
- @@ -721 ,11 +739,14 @@ public class JSON {
58
+ @@ -784 ,11 +801,15 @@ public class JSON {
58
59
59
60
@Override
60
61
public void write(JsonWriter out, byte[] value) throws IOException {
61
62
+ boolean oldHtmlSafe = out.isHtmlSafe();
62
63
+ out.setHtmlSafe(false);
64
+ +
63
65
if (value == null) {
64
66
out.nullValue();
65
67
} else {
@@ -69,17 +71,16 @@ index 4406c2199..f56413a25 100644
69
71
}
70
72
71
73
@Override
72
- @@ -781,7 +802 ,12 @@ public class JSON {
74
+ @@ -844,6 +865 ,12 @@ public class JSON {
73
75
if (date.endsWith("+0000")) {
74
76
date = date.substring(0, date.length()-5) + "Z";
75
77
}
76
- - return OffsetDateTime.parse(date, formatter);
77
78
+ try {
78
79
+ return OffsetDateTime.parse(date, formatter);
79
80
+ } catch (DateTimeParseException e) {
80
81
+ // backward-compatibility for ISO8601 timestamp format
81
82
+ return OffsetDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
82
83
+ }
84
+ return OffsetDateTime.parse(date, formatter);
83
85
}
84
86
}
85
- }
0 commit comments