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 42b65fbb3..0aade725e 100644
2
+ index 4406c2199..f56413a25 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
- @@ -872,7 +872,6 @@ public class JSON {
6
- // backward-compatibility for ISO8601 timestamp format
7
- return OffsetDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
5
+ @@ -23,6 +23,8 @@ import com.google.gson.JsonElement;
6
+ import io.gsonfire.GsonFireBuilder;
7
+ import io.gsonfire.TypeSelector;
8
+
9
+ + import io.kubernetes.client.gson.V1StatusPreProcessor;
10
+ + import io.kubernetes.client.openapi.models.V1Status;
11
+ import okio.ByteString;
12
+
13
+ import java.io.IOException;
14
+ @@ -34,6 +36,9 @@ import java.text.ParsePosition;
15
+ import java.time.LocalDate;
16
+ import java.time.OffsetDateTime;
17
+ import java.time.format.DateTimeFormatter;
18
+ + import java.time.format.DateTimeFormatterBuilder;
19
+ + import java.time.format.DateTimeParseException;
20
+ + import java.time.temporal.ChronoField;
21
+ import java.util.Date;
22
+ import java.util.Locale;
23
+ import java.util.Map;
24
+ @@ -48,9 +53,19 @@ import java.util.HashMap;
25
+ public class JSON {
26
+ private static Gson gson;
27
+ private static boolean isLenientOnJson = false;
28
+ +
29
+ + private static final DateTimeFormatter RFC3339MICRO_FORMATTER =
30
+ + new DateTimeFormatterBuilder()
31
+ + .parseDefaulting(ChronoField.OFFSET_SECONDS, 0)
32
+ + .append(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"))
33
+ + .optionalStart()
34
+ + .appendFraction(ChronoField.NANO_OF_SECOND, 6, 6, true)
35
+ + .optionalEnd()
36
+ + .appendLiteral("Z")
37
+ + .toFormatter();
38
+ private static DateTypeAdapter dateTypeAdapter = new DateTypeAdapter();
39
+ private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter();
40
+ - private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter();
41
+ + private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(RFC3339MICRO_FORMATTER);
42
+ private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter();
43
+ private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter();
44
+
45
+ @@ -58,7 +73,10 @@ public class JSON {
46
+ public static GsonBuilder createGson() {
47
+ GsonFireBuilder fireBuilder = new GsonFireBuilder()
48
+ ;
49
+ - GsonBuilder builder = fireBuilder.createGsonBuilder();
50
+ + GsonBuilder builder =
51
+ + fireBuilder
52
+ + .registerPreProcessor(V1Status.class, new V1StatusPreProcessor())
53
+ + .createGsonBuilder();
54
+ - return builder;
55
+ + return builder.setExclusionStrategies(new V1MetadataExclusionStrategy());
56
+ }
57
+
58
+ private static String getDiscriminatorValue(JsonElement readElement, String discriminatorField) {
59
+ @@ -721,11 +739,14 @@ public class JSON {
60
+
61
+ @Override
62
+ public void write(JsonWriter out, byte[] value) throws IOException {
63
+ + boolean oldHtmlSafe = out.isHtmlSafe();
64
+ + out.setHtmlSafe(false);
65
+ if (value == null) {
66
+ out.nullValue();
67
+ } else {
68
+ out.value(ByteString.of(value).base64());
69
+ }
70
+ + out.setHtmlSafe(oldHtmlSafe);
71
+ }
72
+
73
+ @Override
74
+ @@ -781,7 +802,12 @@ public class JSON {
75
+ if (date.endsWith("+0000")) {
76
+ date = date.substring(0, date.length()-5) + "Z";
8
77
}
9
78
- return OffsetDateTime.parse(date, formatter);
79
+ + try {
80
+ + return OffsetDateTime.parse(date, formatter);
81
+ + } catch (DateTimeParseException e) {
82
+ + // backward-compatibility for ISO8601 timestamp format
83
+ + return OffsetDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
84
+ + }
10
85
}
11
86
}
12
- }
87
+ }
0 commit comments