Skip to content

Commit 077ed83

Browse files
committed
Fixes
1 parent 8e0a2b0 commit 077ed83

File tree

4 files changed

+26
-82
lines changed

4 files changed

+26
-82
lines changed

examples/pom.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@
1717
<name>client-java-examples-parent</name>
1818

1919
<modules>
20-
<module>examples-release-17</module>
20+
<!--
21+
<module>examples-release-17</module>
2122
<module>examples-release-18</module>
2223
<module>examples-release-19</module>
2324
<module>examples-release-20</module>
25+
-->
2426
<module>examples-release-latest</module>
2527
</modules>
2628

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import java.time.OffsetDateTime;
3737
import java.time.ZoneId;
3838
import java.time.ZoneOffset;
39+
import java.time.format.DateTimeFormatter;
3940
import java.time.format.DateTimeFormatterBuilder;
4041
import java.time.format.DateTimeParseException;
4142
import java.time.temporal.ChronoField;
@@ -871,7 +872,6 @@ public OffsetDateTime read(JsonReader in) throws IOException {
871872
// backward-compatibility for ISO8601 timestamp format
872873
return OffsetDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
873874
}
874-
return OffsetDateTime.parse(date, formatter);
875875
}
876876
}
877877
}

scripts/patches/json.diff

Lines changed: 6 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,12 @@
11
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 8d0f4c47d..cff284332 100644
2+
index 42b65fbb3..0aade725e 100644
33
--- a/kubernetes/src/main/java/io/kubernetes/client/openapi/JSON.java
44
+++ b/kubernetes/src/main/java/io/kubernetes/client/openapi/JSON.java
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,7 +36,9 @@ import java.time.LocalDate;
15-
import java.time.OffsetDateTime;
16-
import java.time.ZoneId;
17-
import java.time.ZoneOffset;
18-
-import java.time.format.DateTimeFormatter;
19-
+import java.time.format.DateTimeFormatterBuilder;
20-
+import java.time.format.DateTimeParseException;
21-
+import java.time.temporal.ChronoField;
22-
import java.util.Date;
23-
import java.util.Locale;
24-
import java.util.Map;
25-
@@ -50,9 +54,19 @@ import java.util.TimeZone;
26-
public class JSON {
27-
private static Gson gson;
28-
private static boolean isLenientOnJson = false;
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-
+
39-
private static DateTypeAdapter dateTypeAdapter = new DateTypeAdapter();
40-
private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter();
41-
- private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter();
42-
+ private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(RFC3339MICRO_FORMATTER);
43-
private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter();
44-
private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter();
45-
46-
@@ -65,7 +79,10 @@ public class JSON {
47-
public static GsonBuilder createGson() {
48-
GsonFireBuilder fireBuilder = new GsonFireBuilder()
49-
;
50-
- GsonBuilder builder = fireBuilder.createGsonBuilder();
51-
+ GsonBuilder builder =
52-
+ fireBuilder
53-
+ .registerPreProcessor(V1Status.class, new V1StatusPreProcessor())
54-
+ .createGsonBuilder();
55-
return builder;
56-
}
57-
58-
@@ -784,11 +801,15 @@ public class JSON {
59-
60-
@Override
61-
public void write(JsonWriter out, byte[] value) throws IOException {
62-
+ boolean oldHtmlSafe = out.isHtmlSafe();
63-
+ out.setHtmlSafe(false);
64-
+
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-
@@ -844,6 +865,12 @@ public class JSON {
75-
if (date.endsWith("+0000")) {
76-
date = date.substring(0, date.length()-5) + "Z";
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);
778
}
78-
+ try {
79-
+ return OffsetDateTime.parse(date, formatter);
80-
+ } catch (DateTimeParseException e) {
81-
+ // backward-compatibility for ISO8601 timestamp format
82-
+ return OffsetDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
83-
+ }
84-
return OffsetDateTime.parse(date, formatter);
9+
- return OffsetDateTime.parse(date, formatter);
8510
}
8611
}
12+
}

util/src/main/java/io/kubernetes/client/util/Yaml.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.slf4j.Logger;
4040
import org.slf4j.LoggerFactory;
4141
import org.yaml.snakeyaml.DumperOptions;
42+
import org.yaml.snakeyaml.DumperOptions.FlowStyle;
4243
import org.yaml.snakeyaml.LoaderOptions;
4344
import org.yaml.snakeyaml.TypeDescription;
4445
import org.yaml.snakeyaml.constructor.BaseConstructor;
@@ -275,6 +276,18 @@ public CustomRepresenter() {
275276
this.representers.put(byte[].class, new RepresentByteArray());
276277
this.representers.put(Quantity.class, new RepresentQuantity());
277278
this.representers.put(OffsetDateTime.class, new RepresentDateTime());
279+
/*
280+
this.representers.put(ArrayList.class, new Represent() {
281+
@Override
282+
public Node representData(Object data) {
283+
ArrayList arr = (ArrayList) data;
284+
if (arr.size() == 0) {
285+
// return representScalar(Tag.NULL, "null");
286+
return null;
287+
}
288+
return representSequence(Tag.SEQ, arr, FlowStyle.AUTO);
289+
}
290+
});*/
278291
}
279292

280293
private class RepresentDateTime implements Represent {
@@ -366,6 +379,9 @@ protected NodeTuple representJavaBeanProperty(
366379
if (propertyValue == null) {
367380
return null;
368381
}
382+
if (propertyValue instanceof ArrayList<?> && ((ArrayList<?>)propertyValue).size() == 0) {
383+
return null;
384+
}
369385
return super.representJavaBeanProperty(javaBean, property, propertyValue, customTag);
370386
}
371387
}

0 commit comments

Comments
 (0)