Skip to content

Commit 095e23c

Browse files
committed
Applied patches under scripts/patches/*.diff
Signed-off-by: Kubernetes Publisher <[email protected]> Signed-off-by: Min Jin <[email protected]>
1 parent 84f2a45 commit 095e23c

File tree

4 files changed

+38
-7
lines changed

4 files changed

+38
-7
lines changed

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

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
import io.gsonfire.GsonFireBuilder;
2525
import io.gsonfire.TypeSelector;
2626

27+
import io.kubernetes.client.gson.V1MetadataExclusionStrategy;
28+
import io.kubernetes.client.gson.V1StatusPreProcessor;
29+
import io.kubernetes.client.openapi.models.V1Status;
2730
import okio.ByteString;
2831

2932
import java.io.IOException;
@@ -36,6 +39,9 @@
3639
import java.time.ZoneId;
3740
import java.time.ZoneOffset;
3841
import java.time.format.DateTimeFormatter;
42+
import java.time.format.DateTimeFormatterBuilder;
43+
import java.time.format.DateTimeParseException;
44+
import java.time.temporal.ChronoField;
3945
import java.util.Date;
4046
import java.util.Locale;
4147
import java.util.Map;
@@ -51,9 +57,20 @@
5157
public class JSON {
5258
private static Gson gson;
5359
private static boolean isLenientOnJson = false;
60+
61+
private static final DateTimeFormatter RFC3339MICRO_FORMATTER =
62+
new DateTimeFormatterBuilder()
63+
.parseDefaulting(ChronoField.OFFSET_SECONDS, 0)
64+
.append(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"))
65+
.optionalStart()
66+
.appendFraction(ChronoField.NANO_OF_SECOND, 6, 6, true)
67+
.optionalEnd()
68+
.appendLiteral("Z")
69+
.toFormatter();
70+
5471
private static DateTypeAdapter dateTypeAdapter = new DateTypeAdapter();
5572
private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter();
56-
private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter();
73+
private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(RFC3339MICRO_FORMATTER);
5774
private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter();
5875
private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter();
5976

@@ -66,8 +83,11 @@ public class JSON {
6683
public static GsonBuilder createGson() {
6784
GsonFireBuilder fireBuilder = new GsonFireBuilder()
6885
;
69-
GsonBuilder builder = fireBuilder.createGsonBuilder();
70-
return builder;
86+
GsonBuilder builder =
87+
fireBuilder
88+
.registerPreProcessor(V1Status.class, new V1StatusPreProcessor())
89+
.createGsonBuilder();
90+
return builder.setExclusionStrategies(new V1MetadataExclusionStrategy());
7191
}
7292

7393
private static String getDiscriminatorValue(JsonElement readElement, String discriminatorField) {
@@ -797,11 +817,14 @@ public static class ByteArrayAdapter extends TypeAdapter<byte[]> {
797817

798818
@Override
799819
public void write(JsonWriter out, byte[] value) throws IOException {
820+
boolean oldHtmlSafe = out.isHtmlSafe();
821+
out.setHtmlSafe(false);
800822
if (value == null) {
801823
out.nullValue();
802824
} else {
803825
out.value(ByteString.of(value).base64());
804826
}
827+
out.setHtmlSafe(oldHtmlSafe);
805828
}
806829

807830
@Override
@@ -857,7 +880,12 @@ public OffsetDateTime read(JsonReader in) throws IOException {
857880
if (date.endsWith("+0000")) {
858881
date = date.substring(0, date.length()-5) + "Z";
859882
}
860-
return OffsetDateTime.parse(date, formatter);
883+
try {
884+
return OffsetDateTime.parse(date, formatter);
885+
} catch (DateTimeParseException e) {
886+
// backward-compatibility for ISO8601 timestamp format
887+
return OffsetDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
888+
}
861889
}
862890
}
863891
}

kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1ListMeta.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,8 @@ public void write(JsonWriter out, V1ListMeta value) throws IOException {
266266
@Override
267267
public V1ListMeta read(JsonReader in) throws IOException {
268268
JsonElement jsonElement = elementAdapter.read(in);
269-
validateJsonElement(jsonElement);
269+
// Disable validation so delete API can tolerate non-status return object (graceful deletion)
270+
// validateJsonObject(jsonObj);
270271
return thisAdapter.fromJsonTree(jsonElement);
271272
}
272273

kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1Secret.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.google.gson.annotations.SerializedName;
2020
import com.google.gson.stream.JsonReader;
2121
import com.google.gson.stream.JsonWriter;
22+
import io.kubernetes.client.custom.MapUtils;
2223
import io.kubernetes.client.openapi.models.V1ObjectMeta;
2324
import io.swagger.annotations.ApiModel;
2425
import io.swagger.annotations.ApiModelProperty;
@@ -255,7 +256,7 @@ public boolean equals(Object o) {
255256
}
256257
V1Secret v1Secret = (V1Secret) o;
257258
return Objects.equals(this.apiVersion, v1Secret.apiVersion) &&
258-
Objects.equals(this.data, v1Secret.data) &&
259+
MapUtils.equals(this.data, v1Secret.data) &&
259260
Objects.equals(this.immutable, v1Secret.immutable) &&
260261
Objects.equals(this.kind, v1Secret.kind) &&
261262
Objects.equals(this.metadata, v1Secret.metadata) &&

kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1Status.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,8 @@ public void write(JsonWriter out, V1Status value) throws IOException {
390390
@Override
391391
public V1Status read(JsonReader in) throws IOException {
392392
JsonElement jsonElement = elementAdapter.read(in);
393-
validateJsonElement(jsonElement);
393+
// Disable validation so delete API can tolerate non-status return object (graceful deletion)
394+
// validateJsonObject(jsonObj);
394395
return thisAdapter.fromJsonTree(jsonElement);
395396
}
396397

0 commit comments

Comments
 (0)