Skip to content

Commit 3193e87

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 7f51544 commit 3193e87

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;
@@ -38,6 +41,9 @@
3841
import java.time.LocalDate;
3942
import java.time.OffsetDateTime;
4043
import java.time.format.DateTimeFormatter;
44+
import java.time.format.DateTimeFormatterBuilder;
45+
import java.time.format.DateTimeParseException;
46+
import java.time.temporal.ChronoField;
4147
import java.util.Date;
4248
import java.util.Locale;
4349
import java.util.Map;
@@ -52,18 +58,32 @@
5258
public class JSON {
5359
private static Gson gson;
5460
private static boolean isLenientOnJson = false;
61+
62+
private static final DateTimeFormatter RFC3339MICRO_FORMATTER =
63+
new DateTimeFormatterBuilder()
64+
.parseDefaulting(ChronoField.OFFSET_SECONDS, 0)
65+
.append(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"))
66+
.optionalStart()
67+
.appendFraction(ChronoField.NANO_OF_SECOND, 6, 6, true)
68+
.optionalEnd()
69+
.appendLiteral("Z")
70+
.toFormatter();
71+
5572
private static DateTypeAdapter dateTypeAdapter = new DateTypeAdapter();
5673
private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter();
57-
private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter();
74+
private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(RFC3339MICRO_FORMATTER);
5875
private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter();
5976
private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter();
6077

6178
@SuppressWarnings("unchecked")
6279
public static GsonBuilder createGson() {
6380
GsonFireBuilder fireBuilder = new GsonFireBuilder()
6481
;
65-
GsonBuilder builder = fireBuilder.createGsonBuilder();
66-
return builder;
82+
GsonBuilder builder =
83+
fireBuilder
84+
.registerPreProcessor(V1Status.class, new V1StatusPreProcessor())
85+
.createGsonBuilder();
86+
return builder.setExclusionStrategies(new V1MetadataExclusionStrategy());
6787
}
6888

6989
private static String getDiscriminatorValue(JsonElement readElement, String discriminatorField) {
@@ -884,11 +904,14 @@ public static class ByteArrayAdapter extends TypeAdapter<byte[]> {
884904

885905
@Override
886906
public void write(JsonWriter out, byte[] value) throws IOException {
907+
boolean oldHtmlSafe = out.isHtmlSafe();
908+
out.setHtmlSafe(false);
887909
if (value == null) {
888910
out.nullValue();
889911
} else {
890912
out.value(ByteString.of(value).base64());
891913
}
914+
out.setHtmlSafe(oldHtmlSafe);
892915
}
893916

894917
@Override
@@ -944,7 +967,12 @@ public OffsetDateTime read(JsonReader in) throws IOException {
944967
if (date.endsWith("+0000")) {
945968
date = date.substring(0, date.length()-5) + "Z";
946969
}
947-
return OffsetDateTime.parse(date, formatter);
970+
try {
971+
return OffsetDateTime.parse(date, formatter);
972+
} catch (DateTimeParseException e) {
973+
// backward-compatibility for ISO8601 timestamp format
974+
return OffsetDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
975+
}
948976
}
949977
}
950978
}

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
@@ -269,7 +269,8 @@ public void write(JsonWriter out, V1ListMeta value) throws IOException {
269269
@Override
270270
public V1ListMeta read(JsonReader in) throws IOException {
271271
JsonElement jsonElement = elementAdapter.read(in);
272-
validateJsonElement(jsonElement);
272+
// Disable validation so delete API can tolerate non-status return object (graceful deletion)
273+
// validateJsonObject(jsonObj);
273274
return thisAdapter.fromJsonTree(jsonElement);
274275
}
275276

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;
@@ -261,7 +262,7 @@ public boolean equals(Object o) {
261262
}
262263
V1Secret v1Secret = (V1Secret) o;
263264
return Objects.equals(this.apiVersion, v1Secret.apiVersion) &&
264-
Objects.equals(this.data, v1Secret.data) &&
265+
MapUtils.equals(this.data, v1Secret.data) &&
265266
Objects.equals(this.immutable, v1Secret.immutable) &&
266267
Objects.equals(this.kind, v1Secret.kind) &&
267268
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
@@ -397,7 +397,8 @@ public void write(JsonWriter out, V1Status value) throws IOException {
397397
@Override
398398
public V1Status read(JsonReader in) throws IOException {
399399
JsonElement jsonElement = elementAdapter.read(in);
400-
validateJsonElement(jsonElement);
400+
// Disable validation so delete API can tolerate non-status return object (graceful deletion)
401+
// validateJsonObject(jsonObj);
401402
return thisAdapter.fromJsonTree(jsonElement);
402403
}
403404

0 commit comments

Comments
 (0)