Skip to content

Commit b1f4c8a

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 640894e commit b1f4c8a

File tree

2 files changed

+34
-5
lines changed

2 files changed

+34
-5
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 io.kubernetes.client.openapi.models.*;
2831
import okio.ByteString;
2932

@@ -36,6 +39,9 @@
3639
import java.time.LocalDate;
3740
import java.time.OffsetDateTime;
3841
import java.time.format.DateTimeFormatter;
42+
import java.time.format.DateTimeFormatterBuilder;
43+
import java.time.format.DateTimeParseException;
44+
import java.time.temporal.ChronoField;
3945
import java.util.Date;
4046
import java.util.Locale;
4147
import java.util.Map;
@@ -44,17 +50,31 @@
4450
public class JSON {
4551
private Gson gson;
4652
private boolean isLenientOnJson = false;
53+
54+
private static final DateTimeFormatter RFC3339MICRO_FORMATTER =
55+
new DateTimeFormatterBuilder()
56+
.parseDefaulting(ChronoField.OFFSET_SECONDS, 0)
57+
.append(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"))
58+
.optionalStart()
59+
.appendFraction(ChronoField.NANO_OF_SECOND, 6, 6, true)
60+
.optionalEnd()
61+
.appendLiteral("Z")
62+
.toFormatter();
63+
4764
private DateTypeAdapter dateTypeAdapter = new DateTypeAdapter();
4865
private SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter();
49-
private OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter();
66+
private OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(RFC3339MICRO_FORMATTER);
5067
private LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter();
5168
private ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter();
5269

5370
public static GsonBuilder createGson() {
5471
GsonFireBuilder fireBuilder = new GsonFireBuilder()
5572
;
56-
GsonBuilder builder = fireBuilder.createGsonBuilder();
57-
return builder;
73+
GsonBuilder builder =
74+
fireBuilder
75+
.registerPreProcessor(V1Status.class, new V1StatusPreProcessor())
76+
.createGsonBuilder();
77+
return builder.setExclusionStrategies(new V1MetadataExclusionStrategy());
5878
}
5979

6080
private static String getDiscriminatorValue(JsonElement readElement, String discriminatorField) {
@@ -162,11 +182,14 @@ public class ByteArrayAdapter extends TypeAdapter<byte[]> {
162182

163183
@Override
164184
public void write(JsonWriter out, byte[] value) throws IOException {
185+
boolean oldHtmlSafe = out.isHtmlSafe();
186+
out.setHtmlSafe(false);
165187
if (value == null) {
166188
out.nullValue();
167189
} else {
168190
out.value(ByteString.of(value).base64());
169191
}
192+
out.setHtmlSafe(oldHtmlSafe);
170193
}
171194

172195
@Override
@@ -222,7 +245,12 @@ public OffsetDateTime read(JsonReader in) throws IOException {
222245
if (date.endsWith("+0000")) {
223246
date = date.substring(0, date.length()-5) + "Z";
224247
}
225-
return OffsetDateTime.parse(date, formatter);
248+
try {
249+
return OffsetDateTime.parse(date, formatter);
250+
} catch (DateTimeParseException e) {
251+
// backward-compatibility for ISO8601 timestamp format
252+
return OffsetDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
253+
}
226254
}
227255
}
228256
}

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
@@ -20,6 +20,7 @@
2020
import com.google.gson.annotations.SerializedName;
2121
import com.google.gson.stream.JsonReader;
2222
import com.google.gson.stream.JsonWriter;
23+
import io.kubernetes.client.custom.MapUtils;
2324
import io.kubernetes.client.openapi.models.V1ObjectMeta;
2425
import io.swagger.annotations.ApiModel;
2526
import io.swagger.annotations.ApiModelProperty;
@@ -250,7 +251,7 @@ public boolean equals(java.lang.Object o) {
250251
}
251252
V1Secret v1Secret = (V1Secret) o;
252253
return Objects.equals(this.apiVersion, v1Secret.apiVersion) &&
253-
Objects.equals(this.data, v1Secret.data) &&
254+
MapUtils.equals(this.data, v1Secret.data) &&
254255
Objects.equals(this.immutable, v1Secret.immutable) &&
255256
Objects.equals(this.kind, v1Secret.kind) &&
256257
Objects.equals(this.metadata, v1Secret.metadata) &&

0 commit comments

Comments
 (0)