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 077ed83
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 82 deletions.
4 changes: 3 additions & 1 deletion examples/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,12 @@
<name>client-java-examples-parent</name>

<modules>
<module>examples-release-17</module>
<!--
<module>examples-release-17</module>
<module>examples-release-18</module>
<module>examples-release-19</module>
<module>examples-release-20</module>
-->
<module>examples-release-latest</module>
</modules>

Expand Down
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 Expand Up @@ -871,7 +872,6 @@ public OffsetDateTime read(JsonReader in) throws IOException {
// backward-compatibility for ISO8601 timestamp format
return OffsetDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
}
return OffsetDateTime.parse(date, formatter);
}
}
}
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 42b65fbb3..0aade725e 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;
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";
@@ -872,7 +872,6 @@ public class JSON {
// backward-compatibility for ISO8601 timestamp format
return OffsetDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
}
+ 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);
- return OffsetDateTime.parse(date, formatter);
}
}
}
16 changes: 16 additions & 0 deletions util/src/main/java/io/kubernetes/client/util/Yaml.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.DumperOptions.FlowStyle;
import org.yaml.snakeyaml.LoaderOptions;
import org.yaml.snakeyaml.TypeDescription;
import org.yaml.snakeyaml.constructor.BaseConstructor;
Expand Down Expand Up @@ -275,6 +276,18 @@ public CustomRepresenter() {
this.representers.put(byte[].class, new RepresentByteArray());
this.representers.put(Quantity.class, new RepresentQuantity());
this.representers.put(OffsetDateTime.class, new RepresentDateTime());
/*
this.representers.put(ArrayList.class, new Represent() {
@Override
public Node representData(Object data) {
ArrayList arr = (ArrayList) data;
if (arr.size() == 0) {
// return representScalar(Tag.NULL, "null");
return null;
}
return representSequence(Tag.SEQ, arr, FlowStyle.AUTO);
}
});*/
}

private class RepresentDateTime implements Represent {
Expand Down Expand Up @@ -366,6 +379,9 @@ protected NodeTuple representJavaBeanProperty(
if (propertyValue == null) {
return null;
}
if (propertyValue instanceof ArrayList<?> && ((ArrayList<?>)propertyValue).size() == 0) {
return null;
}
return super.representJavaBeanProperty(javaBean, property, propertyValue, customTag);
}
}
Expand Down

0 comments on commit 077ed83

Please sign in to comment.