Generalize LocalDateTimeTypeAdapter 62/115562/1
authorJim Hahn <jrh3@att.com>
Mon, 30 Nov 2020 19:34:29 +0000 (14:34 -0500)
committerJim Hahn <jrh3@att.com>
Mon, 30 Nov 2020 19:46:56 +0000 (14:46 -0500)
The GSON DateTime type adapter uses a hard-coded formatter.  Generalized
it to allow a different formatter to be provided to the constructor.

Issue-ID: POLICY-2903
Change-Id: Icdd51190f465bc4c73cd593d6d1b2003165a4b60
Signed-off-by: Jim Hahn <jrh3@att.com>
gson/src/main/java/org/onap/policy/common/gson/LocalDateTimeTypeAdapter.java

index 2b297cb..4d87ca4 100644 (file)
@@ -32,10 +32,18 @@ import java.time.format.DateTimeParseException;
 
 /**
  * GSON Type Adapter for "LocalDateTime" fields, that uses the standard
- * ISO_LOCAL_DATE_TIME formatter.
+ * ISO_LOCAL_DATE_TIME formatter, by default.
  */
 public class LocalDateTimeTypeAdapter extends TypeAdapter<LocalDateTime> {
-    private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
+    private DateTimeFormatter formatter;
+
+    public LocalDateTimeTypeAdapter() {
+        this(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
+    }
+
+    public LocalDateTimeTypeAdapter(DateTimeFormatter formatter) {
+        this.formatter = formatter;
+    }
 
     @Override
     public LocalDateTime read(JsonReader in) throws IOException {
@@ -44,7 +52,7 @@ public class LocalDateTimeTypeAdapter extends TypeAdapter<LocalDateTime> {
                 in.nextNull();
                 return null;
             } else {
-                return LocalDateTime.parse(in.nextString(), FORMATTER);
+                return LocalDateTime.parse(in.nextString(), formatter);
             }
 
         } catch (DateTimeParseException e) {
@@ -57,7 +65,7 @@ public class LocalDateTimeTypeAdapter extends TypeAdapter<LocalDateTime> {
         if (value == null) {
             out.nullValue();
         } else {
-            String text = value.format(FORMATTER);
+            String text = value.format(formatter);
             out.value(text);
         }
     }