diff options
author | Pamela Dragosh <pdragosh@research.att.com> | 2021-02-18 09:57:23 -0600 |
---|---|---|
committer | Pamela Dragosh <pdragosh@research.att.com> | 2021-02-18 10:31:55 -0600 |
commit | 00ee2d5b4f1e847d8e272c79f66230aa30cb11d6 (patch) | |
tree | 0244e22a68626e1f2175ec8d7f5c4491f8712948 /gson/src/main/java/org/onap/policy/common/gson/LocalDateTypeAdapter.java | |
parent | 564ef19e77b5f8b47fe54822939e806162b7b5fb (diff) |
Add more java.time adapters
The time extensions require these adapters for anyone using our
gson adapter to serialize/deserialize the DecisionRequest.
Issue-ID: POLICY-2810
Change-Id: I64a7e4a5a256c77bd67dab867664e41b61cd0050
Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
Diffstat (limited to 'gson/src/main/java/org/onap/policy/common/gson/LocalDateTypeAdapter.java')
-rw-r--r-- | gson/src/main/java/org/onap/policy/common/gson/LocalDateTypeAdapter.java | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/gson/src/main/java/org/onap/policy/common/gson/LocalDateTypeAdapter.java b/gson/src/main/java/org/onap/policy/common/gson/LocalDateTypeAdapter.java new file mode 100644 index 00000000..8e33e464 --- /dev/null +++ b/gson/src/main/java/org/onap/policy/common/gson/LocalDateTypeAdapter.java @@ -0,0 +1,68 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP + * ================================================================================ + * Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.common.gson; + +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +public class LocalDateTypeAdapter extends TypeAdapter<LocalDate> { + private DateTimeFormatter formatter; + + public LocalDateTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE); + } + + public LocalDateTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + @Override + public LocalDate read(JsonReader in) throws IOException { + try { + if (in.peek() == JsonToken.NULL) { + in.nextNull(); + return null; + } else { + return LocalDate.parse(in.nextString(), formatter); + } + + } catch (DateTimeParseException e) { + throw new JsonParseException("invalid date", e); + } + } + + @Override + public void write(JsonWriter out, LocalDate value) throws IOException { + if (value == null) { + out.nullValue(); + } else { + String text = value.format(formatter); + out.value(text); + } + } +} |