Skip to content

Commit 1117720

Browse files
committed
fix(kotlin-client): handle Jackson 3 API changes in Serializer template
Jackson 3 moved/renamed several APIs: - findAndRegisterModules() not needed (modules auto-discovered) - SerializationFeature.WRITE_DATES_AS_TIMESTAMPS -> DateTimeFeature - DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE -> EnumFeature Add conditionals in Serializer.kt.mustache for Jackson 2 vs 3.
1 parent 7829af0 commit 1117720

2 files changed

Lines changed: 24 additions & 4 deletions

File tree

  • modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure
  • samples/client/petstore/kotlin-jackson3/src/main/kotlin/org/openapitools/client/infrastructure

modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,15 @@ import java.util.UUID
3232
{{#jackson}}
3333
import {{jacksonPackage}}.databind.DeserializationFeature
3434
import {{jacksonPackage}}.databind.ObjectMapper
35+
{{^useJackson3}}
3536
import {{jacksonPackage}}.databind.SerializationFeature
37+
{{/useJackson3}}
38+
{{#useJackson3}}
39+
import {{jacksonPackage}}.databind.cfg.DateTimeFeature
40+
{{#enumUnknownDefaultCase}}
41+
import {{jacksonPackage}}.databind.cfg.EnumFeature
42+
{{/enumUnknownDefaultCase}}
43+
{{/useJackson3}}
3644
import com.fasterxml.jackson.annotation.JsonInclude
3745
import {{jacksonPackage}}.module.kotlin.jacksonObjectMapper
3846
{{/jackson}}
@@ -122,12 +130,24 @@ import java.util.concurrent.atomic.AtomicLong
122130
{{#jackson}}
123131
@JvmStatic
124132
val jacksonObjectMapper: ObjectMapper = jacksonObjectMapper()
133+
{{^useJackson3}}
125134
.findAndRegisterModules()
135+
{{/useJackson3}}
126136
.setSerializationInclusion(JsonInclude.Include.NON_ABSENT)
127137
{{#enumUnknownDefaultCase}}
138+
{{#useJackson3}}
139+
.configure(EnumFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE, true)
140+
{{/useJackson3}}
141+
{{^useJackson3}}
128142
.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE, true)
143+
{{/useJackson3}}
129144
{{/enumUnknownDefaultCase}}
145+
{{#useJackson3}}
146+
.configure(DateTimeFeature.WRITE_DATES_AS_TIMESTAMPS, false)
147+
{{/useJackson3}}
148+
{{^useJackson3}}
130149
.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
150+
{{/useJackson3}}
131151
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, {{failOnUnknownProperties}})
132152
{{/jackson}}
133153
{{#kotlinx_serialization}}

samples/client/petstore/kotlin-jackson3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@ package org.openapitools.client.infrastructure
22

33
import tools.jackson.databind.DeserializationFeature
44
import tools.jackson.databind.ObjectMapper
5-
import tools.jackson.databind.SerializationFeature
5+
import tools.jackson.databind.cfg.DateTimeFeature
6+
import tools.jackson.databind.cfg.EnumFeature
67
import com.fasterxml.jackson.annotation.JsonInclude
78
import tools.jackson.module.kotlin.jacksonObjectMapper
89

910
object Serializer {
1011
@JvmStatic
1112
val jacksonObjectMapper: ObjectMapper = jacksonObjectMapper()
12-
.findAndRegisterModules()
1313
.setSerializationInclusion(JsonInclude.Include.NON_ABSENT)
14-
.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE, true)
15-
.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
14+
.configure(EnumFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE, true)
15+
.configure(DateTimeFeature.WRITE_DATES_AS_TIMESTAMPS, false)
1616
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
1717
}

0 commit comments

Comments
 (0)