Skip to content

Commit f6ef4fb

Browse files
[kotlin][client] Add Jackson as serialization library (#5236)
* [kotlin][client] Add Jackson as serialization library * [kotlin][client] Add kotlin-client-jackson.sh to kotlin-client-all.sh * update kotlin client samples * update doc Co-authored-by: William Cheng <[email protected]>
1 parent 8b64f4d commit f6ef4fb

File tree

262 files changed

+3720
-257
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

262 files changed

+3720
-257
lines changed

bin/kotlin-client-all.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#!/bin/sh
22

33
./bin/kotlin-client-gson.sh
4+
./bin/kotlin-client-jackson.sh
45
./bin/kotlin-client-moshi-codegen.sh
56
./bin/kotlin-client-nonpublic.sh
67
./bin/kotlin-client-okhttp3.sh

bin/kotlin-client-jackson.sh

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/bin/sh
2+
3+
SCRIPT="$0"
4+
echo "# START SCRIPT: $SCRIPT"
5+
6+
while [ -h "$SCRIPT" ] ; do
7+
ls=$(ls -ld "$SCRIPT")
8+
link=$(expr "$ls" : '.*-> \(.*\)$')
9+
if expr "$link" : '/.*' > /dev/null; then
10+
SCRIPT="$link"
11+
else
12+
SCRIPT=$(dirname "$SCRIPT")/"$link"
13+
fi
14+
done
15+
16+
if [ ! -d "${APP_DIR}" ]; then
17+
APP_DIR=$(dirname "$SCRIPT")/..
18+
APP_DIR=$(cd "${APP_DIR}"; pwd)
19+
fi
20+
21+
executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar"
22+
23+
if [ ! -f "$executable" ]
24+
then
25+
mvn -B clean package
26+
fi
27+
28+
# if you've executed sbt assembly previously it will use that instead.
29+
export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties"
30+
ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-jackson --additional-properties serializationLibrary=jackson --additional-properties enumPropertyNaming=UPPERCASE -o samples/client/petstore/kotlin-jackson $@"
31+
32+
java ${JAVA_OPTS} -jar ${executable} ${ags}

docs/generators/kotlin-server.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ sidebar_label: kotlin-server
2020
|packageName|Generated artifact package name.| |org.openapitools.server|
2121
|parcelizeModels|toggle &quot;@Parcelize&quot; for generated models| |null|
2222
|serializableModel|boolean - toggle &quot;implements Serializable&quot; for generated models| |null|
23-
|serializationLibrary|What serialization library to use: 'moshi' (default), or 'gson'| |moshi|
23+
|serializationLibrary|What serialization library to use: 'moshi' (default), or 'gson' or 'jackson'| |moshi|
2424
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |null|
2525
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |null|
2626
|sourceFolder|source folder for generated code| |src/main/kotlin|

docs/generators/kotlin-spring.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ sidebar_label: kotlin-spring
2323
|parcelizeModels|toggle &quot;@Parcelize&quot; for generated models| |null|
2424
|reactive|use coroutines for reactive behavior| |false|
2525
|serializableModel|boolean - toggle &quot;implements Serializable&quot; for generated models| |null|
26-
|serializationLibrary|What serialization library to use: 'moshi' (default), or 'gson'| |moshi|
26+
|serializationLibrary|What serialization library to use: 'moshi' (default), or 'gson' or 'jackson'| |moshi|
2727
|serverPort|configuration the port in which the sever is to run on| |8080|
2828
|serviceImplementation|generate stub service implementations that extends service interfaces. If this is set to true service interfaces will also be generated| |false|
2929
|serviceInterface|generate service interfaces to go alongside controllers. In most cases this option would be used to update an existing project, so not to override implementations. Useful to help facilitate the generation gap pattern| |false|

docs/generators/kotlin-vertx.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ sidebar_label: kotlin-vertx
1414
|packageName|Generated artifact package name.| |org.openapitools|
1515
|parcelizeModels|toggle &quot;@Parcelize&quot; for generated models| |null|
1616
|serializableModel|boolean - toggle &quot;implements Serializable&quot; for generated models| |null|
17-
|serializationLibrary|What serialization library to use: 'moshi' (default), or 'gson'| |moshi|
17+
|serializationLibrary|What serialization library to use: 'moshi' (default), or 'gson' or 'jackson'| |moshi|
1818
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |null|
1919
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |null|
2020
|sourceFolder|source folder for generated code| |src/main/kotlin|

docs/generators/kotlin.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ sidebar_label: kotlin
1818
|parcelizeModels|toggle &quot;@Parcelize&quot; for generated models| |null|
1919
|requestDateConverter|JVM-Option. Defines in how to handle date-time objects that are used for a request (as query or parameter)|<dl><dt>**toJson**</dt><dd>[DEFAULT] Date formater option using a json converter.</dd><dt>**toString**</dt><dd>Use the 'toString'-method of the date-time object to retrieve the related string representation.</dd></dl>|toJson|
2020
|serializableModel|boolean - toggle &quot;implements Serializable&quot; for generated models| |null|
21-
|serializationLibrary|What serialization library to use: 'moshi' (default), or 'gson'| |moshi|
21+
|serializationLibrary|What serialization library to use: 'moshi' (default), or 'gson' or 'jackson'| |moshi|
2222
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |null|
2323
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |null|
2424
|sourceFolder|source folder for generated code| |src/main/kotlin|

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@
4141

4242
public abstract class AbstractKotlinCodegen extends DefaultCodegen implements CodegenConfig {
4343

44-
public static final String SERIALIZATION_LIBRARY_DESC = "What serialization library to use: 'moshi' (default), or 'gson'";
44+
public static final String SERIALIZATION_LIBRARY_DESC = "What serialization library to use: 'moshi' (default), or 'gson' or 'jackson'";
4545

46-
public enum SERIALIZATION_LIBRARY_TYPE {moshi, gson}
46+
public enum SERIALIZATION_LIBRARY_TYPE {moshi, gson, jackson}
4747

4848
public static final String MODEL_MUTABLE = "modelMutable";
4949
public static final String MODEL_MUTABLE_DESC = "Create mutable models";

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

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -323,18 +323,26 @@ private void processJVMRetrofit2Library(String infrastructureFolder) {
323323
private void addSupportingSerializerAdapters(final String infrastructureFolder) {
324324
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/Serializer.kt.mustache", infrastructureFolder, "Serializer.kt"));
325325
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/ByteArrayAdapter.kt.mustache", infrastructureFolder, "ByteArrayAdapter.kt"));
326-
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/LocalDateAdapter.kt.mustache", infrastructureFolder, "LocalDateAdapter.kt"));
327-
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/LocalDateTimeAdapter.kt.mustache", infrastructureFolder, "LocalDateTimeAdapter.kt"));
328-
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/OffsetDateTimeAdapter.kt.mustache", infrastructureFolder, "OffsetDateTimeAdapter.kt"));
329-
326+
330327
switch (getSerializationLibrary()) {
331328
case moshi:
332329
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/UUIDAdapter.kt.mustache", infrastructureFolder, "UUIDAdapter.kt"));
330+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/LocalDateAdapter.kt.mustache", infrastructureFolder, "LocalDateAdapter.kt"));
331+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/LocalDateTimeAdapter.kt.mustache", infrastructureFolder, "LocalDateTimeAdapter.kt"));
332+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/OffsetDateTimeAdapter.kt.mustache", infrastructureFolder, "OffsetDateTimeAdapter.kt"));
333333
break;
334334

335335
case gson:
336336
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/DateAdapter.kt.mustache", infrastructureFolder, "DateAdapter.kt"));
337+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/LocalDateAdapter.kt.mustache", infrastructureFolder, "LocalDateAdapter.kt"));
338+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/LocalDateTimeAdapter.kt.mustache", infrastructureFolder, "LocalDateTimeAdapter.kt"));
339+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/OffsetDateTimeAdapter.kt.mustache", infrastructureFolder, "OffsetDateTimeAdapter.kt"));
340+
break;
341+
342+
case jackson:
343+
//supportingFiles.add(new SupportingFile("jvm-common/infrastructure/DateAdapter.kt.mustache", infrastructureFolder, "DateAdapter.kt"));
337344
break;
345+
338346
}
339347
}
340348

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ dependencies {
4949
{{#gson}}
5050
compile "com.google.code.gson:gson:2.8.6"
5151
{{/gson}}
52+
{{#jackson}}
53+
compile "com.fasterxml.jackson.module:jackson-module-kotlin:2.10.2"
54+
compile "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.10.2"
55+
compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.10.2"
56+
{{/jackson}}
5257
{{#jvm-okhttp3}}
5358
compile "com.squareup.okhttp3:okhttp:3.12.6"
5459
{{/jvm-okhttp3}}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ import com.squareup.moshi.Json
88
import com.squareup.moshi.JsonClass
99
{{/moshiCodeGen}}
1010
{{/moshi}}
11+
{{#jackson}}
12+
import com.fasterxml.jackson.annotation.JsonProperty
13+
import com.fasterxml.jackson.annotation.JsonFormat
14+
{{/jackson}}
1115
{{#parcelizeModels}}
1216
import android.os.Parcelable
1317
import kotlinx.android.parcel.Parcelize
@@ -53,6 +57,7 @@ import java.io.Serializable
5357
* Values: {{#allowableValues}}{{#enumVars}}{{&name}}{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}}
5458
*/
5559
{{#multiplatform}}@Serializable(with = {{nameInCamelCase}}.Serializer::class){{/multiplatform}}
60+
{{#jackson}}{{#isPrimitiveType}}@JsonFormat(shape = JsonFormat.Shape.NATURAL){{/isPrimitiveType}}{{^isPrimitiveType}}@JsonFormat(shape = JsonFormat.Shape.OBJECT){{/isPrimitiveType}}{{/jackson}}
5661
{{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{{nameInCamelCase}}}(val value: {{#isListContainer}}{{{ nestedType }}}{{/isListContainer}}{{^isListContainer}}{{{dataType}}}{{/isListContainer}}){
5762
{{#allowableValues}}
5863
{{#enumVars}}
@@ -63,6 +68,9 @@ import java.io.Serializable
6368
{{#gson}}
6469
@SerializedName(value={{{value}}}) {{&name}}({{{value}}}){{^-last}},{{/-last}}{{#-last}};{{/-last}}
6570
{{/gson}}
71+
{{#jackson}}
72+
@JsonProperty(value={{{value}}}) {{&name}}({{{value}}}){{^-last}},{{/-last}}{{#-last}};{{/-last}}
73+
{{/jackson}}
6674
{{/multiplatform}}
6775
{{#multiplatform}}
6876
{{&name}}({{{value}}}){{^-last}},{{/-last}}{{#-last}};{{/-last}}

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,12 @@
88
{{#gson}}
99
@SerializedName("{{{vendorExtensions.x-base-name-literal}}}")
1010
{{/gson}}
11+
{{#jackson}}
12+
{{#isDateTime}}
13+
@JsonFormat
14+
(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy hh:mm:ss")
15+
{{/isDateTime}}
16+
@JsonProperty("{{{vendorExtensions.x-base-name-literal}}}")
17+
{{/jackson}}
1118
{{/multiplatform}}
12-
{{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isListContainer}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isListContainer}}{{^isListContainer}}{{classname}}.{{{nameInCamelCase}}}{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}
19+
{{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isListContainer}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isListContainer}}{{^isListContainer}}{{classname}}.{{{nameInCamelCase}}}{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,8 @@
88
{{#gson}}
99
@SerializedName("{{{vendorExtensions.x-base-name-literal}}}")
1010
{{/gson}}
11+
{{#jackson}}
12+
@JsonProperty("{{{vendorExtensions.x-base-name-literal}}}")
13+
{{/jackson}}
1114
{{/multiplatform}}
12-
{{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") @Required {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isListContainer}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isListContainer}}{{^isListContainer}}{{classname}}.{{{nameInCamelCase}}}{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#isNullable}}?{{/isNullable}}
15+
{{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") @Required {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isListContainer}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isListContainer}}{{^isListContainer}}{{classname}}.{{{nameInCamelCase}}}{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#isNullable}}?{{/isNullable}}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import kotlinx.serialization.internal.CommonEnumSerializer
1616
* Values: {{#allowableValues}}{{#enumVars}}{{&name}}{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}}
1717
*/
1818
{{#multiplatform}}@Serializable(with = {{classname}}.Serializer::class){{/multiplatform}}
19+
{{#jackson}}@JsonFormat(shape = JsonFormat.Shape.OBJECT){{/jackson}}
1920
{{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{classname}}(val value: {{{dataType}}}){
2021
2122
{{#allowableValues}}{{#enumVars}}
@@ -26,6 +27,9 @@ import kotlinx.serialization.internal.CommonEnumSerializer
2627
{{#gson}}
2728
@SerializedName(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}})
2829
{{/gson}}
30+
{{#jackson}}
31+
@JsonProperty(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}})
32+
{{/jackson}}
2933
{{/multiplatform}}
3034
{{#isListContainer}}
3135
{{#isList}}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,4 @@ import org.threeten.bp.format.DateTimeFormatter
6060
}
6161
}
6262
}
63-
{{/gson}}
63+
{{/gson}}

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ import org.threeten.bp.OffsetDateTime
2222
{{/threetenbp}}
2323
import java.util.UUID
2424
{{/gson}}
25+
{{#jackson}}
26+
import com.fasterxml.jackson.databind.ObjectMapper
27+
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module
28+
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
29+
import com.fasterxml.jackson.annotation.JsonInclude
30+
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
31+
{{/jackson}}
2532
import java.util.Date
2633

2734
{{#nonPublicApi}}internal {{/nonPublicApi}}object Serializer {
@@ -57,4 +64,11 @@ import java.util.Date
5764
gsonBuilder.create()
5865
}
5966
{{/gson}}
67+
{{#jackson}}
68+
@JvmStatic
69+
val jacksonObjectMapper: ObjectMapper = jacksonObjectMapper()
70+
.registerModule(Jdk8Module())
71+
.registerModule(JavaTimeModule())
72+
.setSerializationInclusion(JsonInclude.Include.NON_ABSENT)
73+
{{/jackson}}
6074
}

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,13 @@ import java.io.File
7878
{{#gson}}
7979
MediaType.parse(mediaType), Serializer.gson.toJson(content, T::class.java)
8080
{{/gson}}
81+
{{#jackson}}
82+
MediaType.parse(mediaType), Serializer.jackson.toJson(content, T::class.java)
83+
{{/jackson}}
8184
)
8285
{{/jvm-okhttp3}}
8386
{{#jvm-okhttp4}}
84-
mediaType == JsonMediaType -> {{#moshi}}Serializer.moshi.adapter(T::class.java).toJson(content){{/moshi}}{{#gson}}Serializer.gson.toJson(content, T::class.java){{/gson}}.toRequestBody(
87+
mediaType == JsonMediaType -> {{#moshi}}Serializer.moshi.adapter(T::class.java).toJson(content){{/moshi}}{{#gson}}Serializer.gson.toJson(content, T::class.java){{/gson}}{{#jackson}}Serializer.jacksonObjectMapper.writeValueAsString(content){{/jackson}}.toRequestBody(
8588
mediaType.toMediaTypeOrNull()
8689
)
8790
{{/jvm-okhttp4}}
@@ -99,7 +102,7 @@ import java.io.File
99102
return null
100103
}
101104
return when(mediaType) {
102-
JsonMediaType -> {{#moshi}}Serializer.moshi.adapter(T::class.java).fromJson(bodyContent){{/moshi}}{{#gson}}Serializer.gson.fromJson(bodyContent, T::class.java){{/gson}}
105+
JsonMediaType -> {{#moshi}}Serializer.moshi.adapter(T::class.java).fromJson(bodyContent){{/moshi}}{{#gson}}Serializer.gson.fromJson(bodyContent, T::class.java){{/gson}}{{#jackson}}Serializer.jacksonObjectMapper.readValue(bodyContent, T::class.java){{/jackson}}
103106
else -> throw UnsupportedOperationException("responseBody currently only supports JSON body.")
104107
}
105108
}
@@ -146,15 +149,15 @@ import java.io.File
146149
{{#isBasicBearer}}
147150
if (requestConfig.headers[Authorization].isNullOrEmpty()) {
148151
accessToken?.let { accessToken ->
149-
requestConfig.headers[Authorization] = "Bearer " + accessToken
152+
requestConfig.headers[Authorization] = "Bearer $accessToken"
150153
}
151154
}
152155
{{/isBasicBearer}}
153156
{{/isBasic}}
154157
{{#isOAuth}}
155158
if (requestConfig.headers[Authorization].isNullOrEmpty()) {
156159
accessToken?.let { accessToken ->
157-
requestConfig.headers[Authorization] = "Bearer " + accessToken
160+
requestConfig.headers[Authorization] = "Bearer $accessToken "
158161
}
159162
}
160163
{{/isOAuth}}
@@ -251,6 +254,7 @@ import java.io.File
251254
}
252255
}
253256
257+
{{^jackson}}
254258
protected inline fun <reified T: Any> parseDateToQueryString(value : T): String {
255259
{{#toJson}}
256260
/*
@@ -270,4 +274,5 @@ import java.io.File
270274
return value.toString()
271275
{{/toJson}}
272276
}
277+
{{/jackson}}
273278
}

samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ open class ApiClient(val baseUrl: String) {
8585
}
8686
if (requestConfig.headers[Authorization].isNullOrEmpty()) {
8787
accessToken?.let { accessToken ->
88-
requestConfig.headers[Authorization] = "Bearer " + accessToken
88+
requestConfig.headers[Authorization] = "Bearer $accessToken "
8989
}
9090
}
9191
}

samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,13 @@ import com.google.gson.annotations.SerializedName
2222

2323
data class ApiResponse (
2424
@SerializedName("code")
25-
val code: kotlin.Int? = null,
25+
val code: kotlin.Int? = null
26+
,
2627
@SerializedName("type")
27-
val type: kotlin.String? = null,
28+
val type: kotlin.String? = null
29+
,
2830
@SerializedName("message")
2931
val message: kotlin.String? = null
32+
3033
)
3134

samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Category.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@ import com.google.gson.annotations.SerializedName
2121

2222
data class Category (
2323
@SerializedName("id")
24-
val id: kotlin.Long? = null,
24+
val id: kotlin.Long? = null
25+
,
2526
@SerializedName("name")
2627
val name: kotlin.String? = null
28+
2729
)
2830

samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Order.kt

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,32 @@ import com.google.gson.annotations.SerializedName
2525

2626
data class Order (
2727
@SerializedName("id")
28-
val id: kotlin.Long? = null,
28+
val id: kotlin.Long? = null
29+
,
2930
@SerializedName("petId")
30-
val petId: kotlin.Long? = null,
31+
val petId: kotlin.Long? = null
32+
,
3133
@SerializedName("quantity")
32-
val quantity: kotlin.Int? = null,
34+
val quantity: kotlin.Int? = null
35+
,
3336
@SerializedName("shipDate")
34-
val shipDate: java.time.OffsetDateTime? = null,
37+
val shipDate: java.time.OffsetDateTime? = null
38+
,
3539
/* Order Status */
3640
@SerializedName("status")
37-
val status: Order.Status? = null,
41+
val status: Order.Status? = null
42+
,
3843
@SerializedName("complete")
3944
val complete: kotlin.Boolean? = null
45+
4046
) {
4147

4248
/**
4349
* Order Status
4450
* Values: placed,approved,delivered
4551
*/
4652

53+
4754
enum class Status(val value: kotlin.String){
4855
@SerializedName(value="placed") placed("placed"),
4956
@SerializedName(value="approved") approved("approved"),

0 commit comments

Comments
 (0)