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}