Skip to content

Commit

Permalink
Fix up patches for new codegen.
Browse files Browse the repository at this point in the history
  • Loading branch information
brendandburns committed Sep 9, 2024
1 parent 8ddc6a0 commit 9499cd8
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 30 deletions.
29 changes: 15 additions & 14 deletions scripts/patches/json.diff
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
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 4406c2199..f56413a25 100644
index 8d0f4c47d..cff284332 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;
Expand All @@ -11,21 +11,21 @@ index 4406c2199..f56413a25 100644
import okio.ByteString;

import java.io.IOException;
@@ -34,6 +36,9 @@ import java.text.ParsePosition;
import java.time.LocalDate;
@@ -34,7 +36,9 @@ import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
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;
@@ -48,9 +53,19 @@ import java.util.HashMap;
@@ -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)
Expand All @@ -35,31 +35,33 @@ index 4406c2199..f56413a25 100644
+ .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();

@@ -58,7 +73,10 @@ public class JSON {
@@ -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();
+ fireBuilder
+ .registerPreProcessor(V1Status.class, new V1StatusPreProcessor())
+ .createGsonBuilder();
return builder;
}

@@ -721,11 +739,14 @@ public class JSON {
@@ -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 {
Expand All @@ -69,17 +71,16 @@ index 4406c2199..f56413a25 100644
}

@Override
@@ -781,7 +802,12 @@ public class JSON {
@@ -844,6 +865,12 @@ public class JSON {
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);
+ }
return OffsetDateTime.parse(date, formatter);
}
}
}
11 changes: 5 additions & 6 deletions scripts/patches/list-meta.diff
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
diff --git a/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1ListMeta.java b/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1ListMeta.java
index 60381b312..7fb47e230 100644
index f161284a2..d3d563bbb 100644
--- a/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1ListMeta.java
+++ b/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1ListMeta.java
@@ -266,7 +266,9 @@ public class V1ListMeta {
@@ -258,7 +258,8 @@ public class V1ListMeta {
@Override
public V1ListMeta read(JsonReader in) throws IOException {
JsonObject jsonObj = elementAdapter.read(in).getAsJsonObject();
- validateJsonObject(jsonObj);
+
JsonElement jsonElement = elementAdapter.read(in);
- validateJsonElement(jsonElement);
+ // Disable validation so delete API can tolerate non-status return object (graceful deletion)
+ // validateJsonObject(jsonObj);
return thisAdapter.fromJsonTree(jsonObj);
return thisAdapter.fromJsonTree(jsonElement);
}

12 changes: 7 additions & 5 deletions scripts/patches/secret.diff
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
diff --git a/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1Secret.java b/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1Secret.java
index 8fdadaac6..5fe296242 100644
index 5684f4776..aa77bd40f 100644
--- a/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1Secret.java
+++ b/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1Secret.java
@@ -19,6 +19,7 @@ import com.google.gson.annotations.JsonAdapter;
@@ -18,6 +18,7 @@ import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
+import io.kubernetes.client.custom.MapUtils;
import io.kubernetes.client.openapi.models.V1ObjectMeta;
import java.io.IOException;
import java.util.HashMap;
@@ -259,7 +260,7 @@ public class V1Secret implements io.kubernetes.client.common.KubernetesObject {
import java.util.Arrays;
@@ -243,8 +244,8 @@ public class V1Secret implements io.kubernetes.client.common.KubernetesObject {
return false;
}
V1Secret v1Secret = (V1Secret) o;
return Objects.equals(this.apiVersion, v1Secret.apiVersion) &&
- return Objects.equals(this.apiVersion, v1Secret.apiVersion) &&
- Objects.equals(this.data, v1Secret.data) &&
+ return Objects.equals(this.apiVersion, v1Secret.apiVersion) &&
+ MapUtils.equals(this.data, v1Secret.data) &&
Objects.equals(this.immutable, v1Secret.immutable) &&
Objects.equals(this.kind, v1Secret.kind) &&
Expand Down
10 changes: 5 additions & 5 deletions scripts/patches/status.diff
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
diff --git a/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1Status.java b/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1Status.java
index b2b6db803..8a8a9765d 100644
index b529e3455..c2268419a 100644
--- a/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1Status.java
+++ b/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1Status.java
@@ -394,7 +394,8 @@ public class V1Status {
@@ -378,7 +378,8 @@ public class V1Status {
@Override
public V1Status read(JsonReader in) throws IOException {
JsonObject jsonObj = elementAdapter.read(in).getAsJsonObject();
- validateJsonObject(jsonObj);
JsonElement jsonElement = elementAdapter.read(in);
- validateJsonElement(jsonElement);
+ // Disable validation so delete API can tolerate non-status return object (graceful deletion)
+ // validateJsonObject(jsonObj);
return thisAdapter.fromJsonTree(jsonObj);
return thisAdapter.fromJsonTree(jsonElement);
}

0 comments on commit 9499cd8

Please sign in to comment.