@@ -22,12 +22,7 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
2222import com.fasterxml.jackson.module.kotlin.kotlinModule
2323import java.io.InputStream
2424import java.time.DateTimeException
25- import java.time.LocalDate
26- import java.time.LocalDateTime
2725import java.time.OffsetDateTime
28- import java.time.ZonedDateTime
29- import java.time.format.DateTimeFormatter
30- import java.time.temporal.ChronoField
3126
3227fun jsonMapper (): JsonMapper =
3328 JsonMapper .builder()
@@ -38,7 +33,6 @@ fun jsonMapper(): JsonMapper =
3833 SimpleModule ()
3934 .addSerializer(InputStreamSerializer )
4035 .addDeserializer(OffsetDateTime ::class .java, LenientOffsetDateTimeDeserializer ())
41- .addDeserializer(OffsetDateTime ::class .java, LenientOffsetDateTimeDeserializer ())
4236 )
4337 .withCoercionConfig(LogicalType .Boolean ) {
4438 it.setCoercion(CoercionInputShape .Integer , CoercionAction .Fail )
@@ -131,51 +125,6 @@ private object InputStreamSerializer : BaseSerializer<InputStream>(InputStream::
131125 }
132126}
133127
134- /* *
135- * A deserializer that can deserialize [OffsetDateTime] from datetimes, dates, and zoned datetimes.
136- */
137- private class LenientOffsetDateTimeDeserializer :
138- StdDeserializer <OffsetDateTime >(OffsetDateTime ::class .java) {
139-
140- companion object {
141-
142- private val DATE_TIME_FORMATTERS =
143- listOf (
144- DateTimeFormatter .ISO_LOCAL_DATE_TIME ,
145- DateTimeFormatter .ISO_LOCAL_DATE ,
146- DateTimeFormatter .ISO_ZONED_DATE_TIME ,
147- )
148- }
149-
150- override fun logicalType (): LogicalType = LogicalType .DateTime
151-
152- override fun deserialize (p : JsonParser , context : DeserializationContext ): OffsetDateTime {
153- val exceptions = mutableListOf<Exception >()
154-
155- for (formatter in DATE_TIME_FORMATTERS ) {
156- try {
157- val temporal = formatter.parse(p.text)
158-
159- return when {
160- ! temporal.isSupported(ChronoField .HOUR_OF_DAY ) ->
161- LocalDate .from(temporal).atStartOfDay()
162- ! temporal.isSupported(ChronoField .OFFSET_SECONDS ) ->
163- LocalDateTime .from(temporal)
164- else -> ZonedDateTime .from(temporal).toLocalDateTime()
165- }
166- .atZone(context.timeZone.toZoneId())
167- .toOffsetDateTime()
168- } catch (e: DateTimeException ) {
169- exceptions.add(e)
170- }
171- }
172-
173- throw JsonParseException (p, " Cannot parse `OffsetDateTime` from value: ${p.text} " ).apply {
174- exceptions.forEach { addSuppressed(it) }
175- }
176- }
177- }
178-
179128/* *
180129 * A deserializer that can deserialize [OffsetDateTime], assuming UTC when a timezone isn't given.
181130 */
0 commit comments