19package com.basistech.df.cybertriage.autopsy.ctapi.util;
21import com.fasterxml.jackson.core.JsonParser;
22import com.fasterxml.jackson.core.JacksonException;
23import com.fasterxml.jackson.databind.DeserializationContext;
24import com.fasterxml.jackson.databind.JsonDeserializer;
25import com.fasterxml.jackson.databind.JsonNode;
26import com.fasterxml.jackson.databind.ObjectMapper;
27import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
28import java.io.IOException;
29import java.time.DateTimeException;
30import java.time.Instant;
31import java.time.LocalDate;
32import java.time.LocalDateTime;
33import java.time.ZoneOffset;
34import java.time.ZonedDateTime;
35import java.time.format.DateTimeFormatter;
36import java.time.format.DateTimeFormatterBuilder;
37import java.time.format.DateTimeParseException;
38import java.util.Locale;
39import java.util.function.Function;
57 ObjectMapper defaultMapper =
new ObjectMapper();
58 defaultMapper.registerModule(
new JavaTimeModule());
71 public ZonedDateTime
deserialize(JsonParser jp, DeserializationContext dc)
throws IOException, JacksonException {
72 String date = jp.getText();
78 LocalDateTime ldt = LocalDateTime.parse(date,
formatter);
79 return ZonedDateTime.of(ldt, ZoneOffset.UTC);
80 }
catch (DateTimeParseException ex) {
89 super(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
98 this.formatter =
new DateTimeFormatterBuilder()
99 .parseCaseInsensitive()
100 .appendPattern(
"MMM d, [uuuu][uu]")
101 .toFormatter(Locale.ENGLISH);
105 public ZonedDateTime
deserialize(JsonParser jp, DeserializationContext dc)
throws IOException, JacksonException {
106 String date = jp.getText();
112 LocalDate ld = LocalDate.parse(date,
formatter);
113 LocalDateTime ldt = ld.atStartOfDay();
114 return ZonedDateTime.of(ldt, ZoneOffset.UTC);
115 }
catch (DateTimeParseException ex) {
130 public T
deserialize(JsonParser jp, DeserializationContext dc)
throws IOException, JacksonException {
131 JsonNode node = jp.getCodec().readTree(jp);
134 if (node.isNumber()) {
135 timeVal = node.asLong();
137 String nodeText = node.asText();
139 timeVal = Long.parseLong(nodeText);
140 }
catch (NumberFormatException ex) {
145 if (timeVal !=
null) {
148 }
catch (DateTimeException ex) {
163 private static Instant
convert(Long longVal) {
165 return Instant.ofEpochMilli(longVal);
166 }
catch (DateTimeException ex) {
180 private static Instant
convert(Long longVal) {
182 return Instant.ofEpochSecond(longVal);
183 }
catch (DateTimeException ex) {
static Instant convert(Long longVal)
InstantEpochMillisDeserializer()
final Function< Long, T > timeDeserializer
T deserialize(JsonParser jp, DeserializationContext dc)
EpochTimeDeserializer(Function< Long, T > timeDeserializer)
ZonedDateTime deserialize(JsonParser jp, DeserializationContext dc)
final DateTimeFormatter formatter
ZonedDateTimeDeserializer()
InstantEpochSecsDeserializer()
static Instant convert(Long longVal)
UTCBaseZonedDateTimeDeserializer(DateTimeFormatter formatter)
ZonedDateTime deserialize(JsonParser jp, DeserializationContext dc)
final DateTimeFormatter formatter
static final ObjectMapperUtil instance
ObjectMapper getDefaultObjectMapper()
static ObjectMapperUtil getInstance()