Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
manually apply JSON patch
Signed-off-by: Min Jin <[email protected]>
  • Loading branch information
yue9944882 committed Feb 4, 2025
commit f33cf28d4ad6fcf46c99fc23287f265fe37b5472
36 changes: 32 additions & 4 deletions kubernetes/src/main/java/io/kubernetes/client/openapi/JSON.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
import io.gsonfire.GsonFireBuilder;
import io.gsonfire.TypeSelector;

import io.kubernetes.client.gson.V1MetadataExclusionStrategy;
import io.kubernetes.client.gson.V1StatusPreProcessor;
import io.kubernetes.client.openapi.models.V1Status;
import okio.ByteString;

import java.io.IOException;
Expand All @@ -35,6 +38,9 @@
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.format.DateTimeParseException;
import java.time.temporal.ChronoField;
import java.util.Date;
import java.util.Locale;
import java.util.Map;
Expand All @@ -50,9 +56,20 @@
public class JSON {
private static Gson gson;
private static boolean isLenientOnJson = false;

private static final DateTimeFormatter RFC3339MICRO_FORMATTER =
new DateTimeFormatterBuilder()
.parseDefaulting(ChronoField.OFFSET_SECONDS, 0)
.append(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"))
.optionalStart()
.appendFraction(ChronoField.NANO_OF_SECOND, 6, 6, true)
.optionalEnd()
.appendLiteral("Z")
.toFormatter();

private static DateTypeAdapter dateTypeAdapter = new DateTypeAdapter();
private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter();
private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter();
private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(RFC3339MICRO_FORMATTER);
private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter();
private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter();

Expand All @@ -65,8 +82,11 @@ public class JSON {
public static GsonBuilder createGson() {
GsonFireBuilder fireBuilder = new GsonFireBuilder()
;
GsonBuilder builder = fireBuilder.createGsonBuilder();
return builder;
GsonBuilder builder =
fireBuilder
.registerPreProcessor(V1Status.class, new V1StatusPreProcessor())
.createGsonBuilder();
return builder.setExclusionStrategies(new V1MetadataExclusionStrategy());
}

private static String getDiscriminatorValue(JsonElement readElement, String discriminatorField) {
Expand Down Expand Up @@ -793,11 +813,14 @@ public static class ByteArrayAdapter extends TypeAdapter<byte[]> {

@Override
public void write(JsonWriter out, byte[] value) throws IOException {
boolean oldHtmlSafe = out.isHtmlSafe();
out.setHtmlSafe(false);
if (value == null) {
out.nullValue();
} else {
out.value(ByteString.of(value).base64());
}
out.setHtmlSafe(oldHtmlSafe);
}

@Override
Expand Down Expand Up @@ -853,7 +876,12 @@ public OffsetDateTime read(JsonReader in) throws IOException {
if (date.endsWith("+0000")) {
date = date.substring(0, date.length()-5) + "Z";
}
return OffsetDateTime.parse(date, formatter);
try {
return OffsetDateTime.parse(date, formatter);
} catch (DateTimeParseException e) {
// backward-compatibility for ISO8601 timestamp format
return OffsetDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
}
}
}
}
Expand Down
14 changes: 13 additions & 1 deletion scripts/patches/json.diff
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
From eeb5069c974d3146495f8a9dc52653f029d3cc2d Mon Sep 17 00:00:00 2001
From: Min Jin <[email protected]>
Date: Tue, 4 Feb 2025 11:59:25 -0800
Subject: [PATCH] manually apply JSON patch

---
.../io/kubernetes/client/openapi/JSON.java | 36 ++++++++++++++++---
1 file changed, 32 insertions(+), 4 deletions(-)

diff --git a/kubernetes/src/main/java/io/kubernetes/client/openapi/JSON.java b/kubernetes/src/main/java/io/kubernetes/client/openapi/JSON.java
index 870629244..d7d2d5579 100644
index dda3ec708..fe902b293 100644
--- a/kubernetes/src/main/java/io/kubernetes/client/openapi/JSON.java
+++ b/kubernetes/src/main/java/io/kubernetes/client/openapi/JSON.java
@@ -23,6 +23,9 @@ import com.google.gson.JsonElement;
Expand Down Expand Up @@ -87,3 +96,6 @@ index 870629244..d7d2d5579 100644
}
}
}
--
2.40.0