From 7ab84dabb5c9f457c9ad7e6cba8f85c42824baf4 Mon Sep 17 00:00:00 2001
From: Fabio Kung <fkung@netflix.com>
Date: Wed, 23 Oct 2019 11:11:29 -0700
Subject: [PATCH] no gson internals for date parsing/formatting

Reapply changes from #366 to the code generated by openapi-generator,
and keep the JSON file pinned (ignored by the generator) until those
changes make it into the generator.
---
 kubernetes/.openapi-generator-ignore                    | 3 +++
 kubernetes/src/main/java/io/kubernetes/client/JSON.java | 8 +++-----
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/kubernetes/.openapi-generator-ignore b/kubernetes/.openapi-generator-ignore
index f0efe74302..a3a858e063 100644
--- a/kubernetes/.openapi-generator-ignore
+++ b/kubernetes/.openapi-generator-ignore
@@ -4,3 +4,6 @@
 *sbt*
 git_push.sh
 README.md
+
+# Remove when changes in kubernetes-client/java#366 make into upstream openapi-generator
+src/main/java/io/kubernetes/client/JSON.java
\ No newline at end of file
diff --git a/kubernetes/src/main/java/io/kubernetes/client/JSON.java b/kubernetes/src/main/java/io/kubernetes/client/JSON.java
index b79a7434d9..3a146613ef 100644
--- a/kubernetes/src/main/java/io/kubernetes/client/JSON.java
+++ b/kubernetes/src/main/java/io/kubernetes/client/JSON.java
@@ -17,7 +17,6 @@
 import com.google.gson.GsonBuilder;
 import com.google.gson.JsonParseException;
 import com.google.gson.TypeAdapter;
-import com.google.gson.internal.bind.util.ISO8601Utils;
 import com.google.gson.stream.JsonReader;
 import com.google.gson.stream.JsonWriter;
 import com.google.gson.JsonElement;
@@ -37,7 +36,6 @@
 import java.lang.reflect.Type;
 import java.text.DateFormat;
 import java.text.ParseException;
-import java.text.ParsePosition;
 import java.util.Date;
 import java.util.Locale;
 import java.util.Map;
@@ -318,7 +316,7 @@ public java.sql.Date read(JsonReader in) throws IOException {
                         if (dateFormat != null) {
                             return new java.sql.Date(dateFormat.parse(date).getTime());
                         }
-                        return new java.sql.Date(ISO8601Utils.parse(date, new ParsePosition(0)).getTime());
+                        return new java.sql.Date(ISODateTimeFormat.basicDateTime().parseMillis(date));
                     } catch (ParseException e) {
                         throw new JsonParseException(e);
                     }
@@ -353,7 +351,7 @@ public void write(JsonWriter out, Date date) throws IOException {
                 if (dateFormat != null) {
                     value = dateFormat.format(date);
                 } else {
-                    value = ISO8601Utils.format(date, true);
+                    value = ISODateTimeFormat.basicDateTime().print(date.getTime());
                 }
                 out.value(value);
             }
@@ -372,7 +370,7 @@ public Date read(JsonReader in) throws IOException {
                             if (dateFormat != null) {
                                 return dateFormat.parse(date);
                             }
-                            return ISO8601Utils.parse(date, new ParsePosition(0));
+                            return ISODateTimeFormat.basicDateTime().parseDateTime(date).toDate();
                         } catch (ParseException e) {
                             throw new JsonParseException(e);
                         }