001package com.box.sdkgen.internal.utils;
002
003import static com.box.sdkgen.internal.utils.UtilsManager.dateFromString;
004import static com.box.sdkgen.internal.utils.UtilsManager.dateToString;
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 DateUtils {
016  public static class DateSerializer extends JsonSerializer<OffsetDateTime> {
017    @Override
018    public void serialize(OffsetDateTime value, JsonGenerator gen, SerializerProvider serializers)
019        throws IOException {
020      String formattedDate = dateToString(value);
021      gen.writeString(formattedDate);
022    }
023  }
024
025  public static class DateDeserializer extends JsonDeserializer<OffsetDateTime> {
026    @Override
027    public OffsetDateTime deserialize(JsonParser p, DeserializationContext ctx) throws IOException {
028      String dateString = p.getValueAsString();
029      OffsetDateTime d = dateFromString(dateString);
030      if (d == null) {
031        throw new IOException("Invalid date format: " + dateString);
032      }
033      return d;
034    }
035  }
036}