Skip to content

Commit 02d33fd

Browse files
committed
Revert "fix(kotlin-client): fix Jackson 3 package imports and add ktor/spring-restclient support"
Block useJackson3 for kotlin-client with a clear error until client template support is added in a follow-up PR.
1 parent 741d4b2 commit 02d33fd

18 files changed

Lines changed: 35 additions & 111 deletions

File tree

docs/generators/kotlin.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
4949
|sourceFolder|source folder for generated code| |src/main/kotlin|
5050
|supportAndroidApiLevel25AndBelow|[WARNING] This flag will generate code that has a known security vulnerability. It uses `kotlin.io.createTempFile` instead of `java.nio.file.Files.createTempFile` in order to support Android API level 25 and below. For more info, please check the following links https://github.com/OpenAPITools/openapi-generator/security/advisories/GHSA-23x4-m842-fmwf, https://github.com/OpenAPITools/openapi-generator/pull/9284| |false|
5151
|useCoroutines|Whether to use the Coroutines adapter with the retrofit2 library.| |false|
52+
|useJackson3|Use Jackson 3 dependencies (tools.jackson package). Not yet supported for kotlin-client; reserved for future use.| |false|
5253
|useNonAsciiHeaders|Allow to use non-ascii headers with the okhttp library| |false|
5354
|useResponseAsReturnType|When using retrofit2 and coroutines, use `Response`<`T`> as return type instead of `T`.| |true|
5455
|useRxJava3|Whether to use the RxJava3 adapter with the retrofit2 library.| |false|

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ public KotlinClientCodegen() {
295295
cliOptions.add(CliOption.newBoolean(USE_RESPONSE_AS_RETURN_TYPE, "When using retrofit2 and coroutines, use `Response`<`T`> as return type instead of `T`.", true));
296296

297297
cliOptions.add(CliOption.newBoolean(USE_JACKSON_3,
298-
"Use Jackson 3 dependencies (tools.jackson package). Requires serializationLibrary=jackson. Incompatible with openApiNullable. Only supported with jvm-okhttp4 and jvm-vertx libraries."));
298+
"Use Jackson 3 dependencies (tools.jackson package). Not yet supported for kotlin-client; reserved for future use."));
299299
}
300300

301301
@Override
@@ -460,28 +460,18 @@ public void processOpts() {
460460
convertPropertyToBooleanAndWriteBack(USE_SPRING_BOOT3);
461461
}
462462

463+
if (isUseJackson3()) {
464+
throw new IllegalArgumentException(
465+
"useJackson3 is not yet supported for kotlin-client. Jackson 3 support for kotlin-client will be added in a future release.");
466+
}
467+
463468
if (additionalProperties.containsKey(CodegenConstants.SERIALIZATION_LIBRARY)) {
464469
setSerializationLibrary((String) additionalProperties.get(CodegenConstants.SERIALIZATION_LIBRARY));
465470
additionalProperties.put(this.serializationLibrary.name(), true);
466471
} else {
467472
additionalProperties.put(this.serializationLibrary.name(), true);
468473
}
469474

470-
if (isUseJackson3()) {
471-
if (this.serializationLibrary != SERIALIZATION_LIBRARY_TYPE.jackson) {
472-
throw new IllegalArgumentException("useJackson3 requires serializationLibrary=jackson");
473-
}
474-
if (additionalProperties.containsKey("openApiNullable")
475-
&& Boolean.parseBoolean(additionalProperties.get("openApiNullable").toString())) {
476-
throw new IllegalArgumentException("openApiNullable cannot be set with useJackson3");
477-
}
478-
String lib = getLibrary();
479-
if (!JVM_OKHTTP4.equals(lib) && !JVM_VERTX.equals(lib) && !JVM_KTOR.equals(lib) && !JVM_SPRING_RESTCLIENT.equals(lib)) {
480-
throw new IllegalArgumentException(
481-
"useJackson3 is only supported with jvm-okhttp4, jvm-vertx, jvm-ktor, and jvm-spring-restclient libraries, but got: " + lib);
482-
}
483-
}
484-
485475
if (additionalProperties.containsKey(MAP_FILE_BINARY_TO_BYTE_ARRAY)) {
486476
setMapFileBinaryToByteArray(convertPropertyToBooleanAndWriteBack(MAP_FILE_BINARY_TO_BYTE_ARRAY));
487477
}

modules/openapi-generator/src/main/resources/kotlin-client/anyof_class.mustache

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ import com.squareup.moshi.JsonClass
1818
{{/moshi}}
1919
{{#jackson}}
2020
{{#enumUnknownDefaultCase}}
21-
import {{jacksonPackage}}.annotation.JsonEnumDefaultValue
21+
import com.fasterxml.jackson.annotation.JsonEnumDefaultValue
2222
{{/enumUnknownDefaultCase}}
23-
import {{jacksonPackage}}.annotation.JsonProperty
23+
import com.fasterxml.jackson.annotation.JsonProperty
2424
{{#discriminator}}
25-
import {{jacksonPackage}}.annotation.JsonSubTypes
26-
import {{jacksonPackage}}.annotation.JsonTypeInfo
25+
import com.fasterxml.jackson.annotation.JsonSubTypes
26+
import com.fasterxml.jackson.annotation.JsonTypeInfo
2727
{{/discriminator}}
2828
{{/jackson}}
2929
{{#kotlinx_serialization}}

modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,7 @@ wrapper {
1111
buildscript {
1212
ext.kotlin_version = '2.2.20'
1313
{{#jvm-ktor}}
14-
{{#useJackson3}}
15-
ext.ktor_version = '3.4.0'
16-
{{/useJackson3}}
17-
{{^useJackson3}}
1814
ext.ktor_version = '3.2.3'
19-
{{/useJackson3}}
2015
{{/jvm-ktor}}
2116
{{#jvm-retrofit2}}
2217
ext.retrofitVersion = '3.0.0'
@@ -28,17 +23,12 @@ buildscript {
2823
ext.vertx_version = "5.0.4"
2924
{{/jvm-vertx}}
3025
{{#jvm-spring}}
31-
{{#useJackson3}}
32-
ext.spring_boot_version = "4.0.3"
33-
{{/useJackson3}}
34-
{{^useJackson3}}
3526
{{#useSpringBoot3}}
3627
ext.spring_boot_version = "3.5.5"
3728
{{/useSpringBoot3}}
3829
{{^useSpringBoot3}}
3930
ext.spring_boot_version = "2.7.18"
4031
{{/useSpringBoot3}}
41-
{{/useJackson3}}
4232
{{/jvm-spring}}
4333
ext.spotless_version = "7.2.1"
4434

@@ -173,13 +163,8 @@ dependencies {
173163
{{/gson}}
174164
{{#jackson}}
175165
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
176-
{{#useJackson3}}
177-
implementation "tools.jackson.module:jackson-module-kotlin:3.0.1"
178-
{{/useJackson3}}
179-
{{^useJackson3}}
180166
implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.20.0"
181167
implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.20.0"
182-
{{/useJackson3}}
183168
{{/jackson}}
184169
{{#kotlinx_serialization}}
185170
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0"

modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ import com.squareup.moshi.JsonClass
1919
{{/moshi}}
2020
{{#jackson}}
2121
{{#enumUnknownDefaultCase}}
22-
import {{jacksonPackage}}.annotation.JsonEnumDefaultValue
22+
import com.fasterxml.jackson.annotation.JsonEnumDefaultValue
2323
{{/enumUnknownDefaultCase}}
24-
import {{jacksonPackage}}.annotation.JsonProperty
24+
import com.fasterxml.jackson.annotation.JsonProperty
2525
{{#discriminator}}
26-
import {{jacksonPackage}}.annotation.JsonIgnoreProperties
27-
import {{jacksonPackage}}.annotation.JsonSubTypes
28-
import {{jacksonPackage}}.annotation.JsonTypeInfo
26+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
27+
import com.fasterxml.jackson.annotation.JsonSubTypes
28+
import com.fasterxml.jackson.annotation.JsonTypeInfo
2929
{{/discriminator}}
3030
{{/jackson}}
3131
{{#kotlinx_serialization}}

modules/openapi-generator/src/main/resources/kotlin-client/enum_class.mustache

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ import com.squareup.moshi.Json
77
import com.squareup.moshi.JsonClass
88
{{/moshi}}
99
{{#jackson}}
10-
import {{jacksonPackage}}.annotation.JsonCreator
10+
import com.fasterxml.jackson.annotation.JsonCreator
1111
{{#enumUnknownDefaultCase}}
12-
import {{jacksonPackage}}.annotation.JsonEnumDefaultValue
12+
import com.fasterxml.jackson.annotation.JsonEnumDefaultValue
1313
{{/enumUnknownDefaultCase}}
14-
import {{jacksonPackage}}.annotation.JsonProperty
15-
import {{jacksonPackage}}.annotation.JsonValue
14+
import com.fasterxml.jackson.annotation.JsonProperty
15+
import com.fasterxml.jackson.annotation.JsonValue
1616
import kotlin.jvm.JvmStatic
1717
{{/jackson}}
1818
{{#kotlinx_serialization}}

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

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -30,24 +30,11 @@ import kotlinx.datetime.LocalTime
3030
import java.util.UUID
3131
{{/gson}}
3232
{{#jackson}}
33-
{{^useJackson3}}
3433
import com.fasterxml.jackson.databind.DeserializationFeature
3534
import com.fasterxml.jackson.databind.ObjectMapper
3635
import com.fasterxml.jackson.databind.SerializationFeature
3736
import com.fasterxml.jackson.annotation.JsonInclude
3837
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
39-
{{/useJackson3}}
40-
{{#useJackson3}}
41-
import {{jacksonPackage}}.databind.DeserializationFeature
42-
import {{jacksonPackage}}.databind.ObjectMapper
43-
import {{jacksonPackage}}.databind.cfg.DateTimeFeature
44-
{{#enumUnknownDefaultCase}}
45-
import {{jacksonPackage}}.databind.cfg.EnumFeature
46-
{{/enumUnknownDefaultCase}}
47-
import {{jacksonPackage}}.annotation.JsonInclude
48-
import {{jacksonPackage}}.module.kotlin.jsonMapper
49-
import {{jacksonPackage}}.module.kotlin.kotlinModule
50-
{{/useJackson3}}
5138
{{/jackson}}
5239
{{#kotlinx_serialization}}
5340
import java.math.BigDecimal
@@ -133,7 +120,6 @@ import java.util.concurrent.atomic.AtomicLong
133120
}
134121
{{/gson}}
135122
{{#jackson}}
136-
{{^useJackson3}}
137123
@JvmStatic
138124
val jacksonObjectMapper: ObjectMapper = jacksonObjectMapper()
139125
.findAndRegisterModules()
@@ -143,24 +129,6 @@ import java.util.concurrent.atomic.AtomicLong
143129
{{/enumUnknownDefaultCase}}
144130
.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
145131
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, {{failOnUnknownProperties}})
146-
{{/useJackson3}}
147-
{{#useJackson3}}
148-
@JvmStatic
149-
val jacksonObjectMapper: ObjectMapper = jsonMapper {
150-
addModule(kotlinModule())
151-
changeDefaultPropertyInclusion { it.withValueInclusion(JsonInclude.Include.NON_ABSENT) }
152-
{{#enumUnknownDefaultCase}}
153-
enable(EnumFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE)
154-
{{/enumUnknownDefaultCase}}
155-
disable(DateTimeFeature.WRITE_DATES_AS_TIMESTAMPS)
156-
{{#failOnUnknownProperties}}
157-
enable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
158-
{{/failOnUnknownProperties}}
159-
{{^failOnUnknownProperties}}
160-
disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
161-
{{/failOnUnknownProperties}}
162-
}
163-
{{/useJackson3}}
164132
{{/jackson}}
165133
{{#kotlinx_serialization}}
166134
private var isAdaptersInitialized = false

modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/api.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import com.google.gson.GsonBuilder
1515
import java.text.DateFormat
1616
{{/gson}}
1717
{{#jackson}}
18-
import {{jacksonPackage}}.databind.ObjectMapper
18+
import com.fasterxml.jackson.databind.ObjectMapper
1919
{{/jackson}}
2020

2121
{{#operations}}

modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/infrastructure/ApiClient.kt.mustache

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,12 @@ import java.text.DateFormat
2929
{{/gson}}
3030
{{#jackson}}
3131
import io.ktor.serialization.jackson.*
32-
{{^useJackson3}}
3332
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
3433
import com.fasterxml.jackson.databind.ObjectMapper
3534
import com.fasterxml.jackson.databind.SerializationFeature
3635
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
3736
import com.fasterxml.jackson.core.util.DefaultIndenter
3837
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter
39-
{{/useJackson3}}
40-
{{#useJackson3}}
41-
import {{jacksonPackage}}.databind.ObjectMapper
42-
import {{jacksonPackage}}.databind.SerializationFeature
43-
import {{jacksonPackage}}.core.util.DefaultIndenter
44-
import {{jacksonPackage}}.core.util.DefaultPrettyPrinter
45-
{{/useJackson3}}
4638
{{/jackson}}
4739
import {{packageName}}.auth.*
4840

@@ -104,9 +96,7 @@ import {{packageName}}.auth.*
10496
indentArraysWith(DefaultPrettyPrinter.FixedSpaceIndenter.instance)
10597
indentObjectsWith(DefaultIndenter(" ", "\n"))
10698
})
107-
{{^useJackson3}}
10899
registerModule(JavaTimeModule())
109-
{{/useJackson3}}
110100
}
111101
{{/jackson}}
112102
protected val UNSAFE_HEADERS: List<String> = listOf(HttpHeaders.ContentType)

modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/api.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import com.google.gson.annotations.SerializedName
1616
import com.squareup.moshi.Json
1717
{{/moshi}}
1818
{{#jackson}}
19-
import {{jacksonPackage}}.annotation.JsonProperty
19+
import com.fasterxml.jackson.annotation.JsonProperty
2020
{{/jackson}}
2121
{{#kotlinx_serialization}}
2222
import kotlinx.serialization.SerialName

0 commit comments

Comments
 (0)