001package com.box.sdkgen.internal.utils;
002
003import static com.box.sdkgen.internal.utils.UtilsManager.dateTimeFromString;
004import static com.box.sdkgen.internal.utils.UtilsManager.dateTimeToString;
005
006import com.fasterxml.jackson.core.JsonGenerator;
007import com.fasterxml.jackson.core.JsonParser;
008import com.fasterxml.jackson.databind.DeserializationContext;
009import com.fasterxml.jackson.databind.JsonDeserializer;
010import com.fasterxml.jackson.databind.JsonSerializer;
011import com.fasterxml.jackson.databind.SerializerProvider;
012import java.io.IOException;
013import java.time.OffsetDateTime;
014
015public class DateTimeUtils {
016
017  public static class DateTimeSerializer extends JsonSerializer<OffsetDateTime> {
018    @Override
019    public void serialize(OffsetDateTime value, JsonGenerator gen, SerializerProvider serializers)
020        throws IOException {
021      String formattedDate = dateTimeToString(value);
022      gen.writeString(formattedDate);
023    }
024  }
025
026  public static class DateTimeDeserializer extends JsonDeserializer<OffsetDateTime> {
027    @Override
028    public OffsetDateTime deserialize(JsonParser p, DeserializationContext ctx) throws IOException {
029      String dateString = p.getValueAsString();
030      OffsetDateTime d = dateTimeFromString(dateString);
031      if (d == null) {
032        throw new IOException("Invalid date time format: " + dateString);
033      }
034      return d;
035    }
036  }
037}