Skip to content

Commit

Permalink
Fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
brendandburns committed Sep 9, 2024
1 parent 8e0a2b0 commit f1432c3
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 80 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import java.time.OffsetDateTime;
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;
Expand Down
86 changes: 6 additions & 80 deletions scripts/patches/json.diff
Original file line number Diff line number Diff line change
@@ -1,86 +1,12 @@
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 8d0f4c47d..cff284332 100644
index cff284332..42b65fbb3 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,8 @@ import com.google.gson.JsonElement;
import io.gsonfire.GsonFireBuilder;
import io.gsonfire.TypeSelector;

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

import java.io.IOException;
@@ -34,7 +36,9 @@ import java.time.LocalDate;
@@ -36,6 +36,7 @@ import java.time.LocalDate;
import java.time.OffsetDateTime;
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;
@@ -50,9 +54,19 @@ import java.util.TimeZone;
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();

@@ -65,7 +79,10 @@ public class JSON {
public static GsonBuilder createGson() {
GsonFireBuilder fireBuilder = new GsonFireBuilder()
;
- GsonBuilder builder = fireBuilder.createGsonBuilder();
+ GsonBuilder builder =
+ fireBuilder
+ .registerPreProcessor(V1Status.class, new V1StatusPreProcessor())
+ .createGsonBuilder();
return builder;
}

@@ -784,11 +801,15 @@ public class JSON {

@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
@@ -844,6 +865,12 @@ public class JSON {
if (date.endsWith("+0000")) {
date = date.substring(0, date.length()-5) + "Z";
}
+ try {
+ return OffsetDateTime.parse(date, formatter);
+ } catch (DateTimeParseException e) {
+ // backward-compatibility for ISO8601 timestamp format
+ return OffsetDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
+ }
return OffsetDateTime.parse(date, formatter);
}
}
+import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.format.DateTimeParseException;
import java.time.temporal.ChronoField;

0 comments on commit f1432c3

Please sign in to comment.