Skip to content

Commit c822fd5

Browse files
committed
updated kotlin client templates
1 parent 47d6886 commit c822fd5

File tree

6 files changed

+48
-19
lines changed

6 files changed

+48
-19
lines changed

src/main/java/io/swagger/codegen/v3/generators/kotlin/AbstractKotlinCodegen.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import io.swagger.v3.oas.models.media.MapSchema;
1010
import io.swagger.v3.oas.models.media.ObjectSchema;
1111
import io.swagger.v3.oas.models.media.Schema;
12+
import org.apache.commons.lang3.StringUtils;
1213
import org.slf4j.Logger;
1314
import org.slf4j.LoggerFactory;
1415
import com.github.jknack.handlebars.helper.StringHelpers;
@@ -182,6 +183,7 @@ public AbstractKotlinCodegen() {
182183
typeMapping.put("binary", "kotlin.Array<kotlin.Byte>");
183184
typeMapping.put("Date", "java.time.LocalDate");
184185
typeMapping.put("DateTime", "java.time.LocalDateTime");
186+
typeMapping.put("ByteArray", "kotlin.ByteArray");
185187

186188
instantiationTypes.put("array", "arrayOf");
187189
instantiationTypes.put("list", "arrayOf");
@@ -508,6 +510,11 @@ public String toVarName(String name) {
508510
return super.toVarName(sanitizeKotlinSpecificNames(name));
509511
}
510512

513+
@Override
514+
public String toEnumName(CodegenProperty property) {
515+
return StringUtils.capitalize(property.name);
516+
}
517+
511518
@Override
512519
public void addHandlebarHelpers(Handlebars handlebars) {
513520
super.addHandlebarHelpers(handlebars);

src/main/resources/handlebars/kotlin-client/api.mustache

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,29 @@ class {{classname}}(basePath: kotlin.String = "{{{basePath}}}") : ApiClient(base
2525
{{#or hasFormParams hasBodyParam}}
2626
val localVariableBody: kotlin.Any? = {{^isForm}}{{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}{{/isForm}}{{#isForm}}{{#hasFormParams}}mapOf({{#formParams}}"{{{baseName}}}" to "${{paramName}}"{{#hasMore}}, {{/hasMore}}{{/formParams}}){{/hasFormParams}}{{^hasFormParams}}null{{/hasFormParams}}{{/isForm}}
2727
{{/or}}
28-
{{#hasQueryParams}}val localVariableQuery: MultiValueMap = mapOf({{#queryParams}}"{{baseName}}" to {{#isContainer}}toMultiValue({{paramName}}{{^required}}!!{{/required}}.toList(), "{{collectionFormat}}"){{/isContainer}}{{^isContainer}}listOf("${{paramName}}"){{/isContainer}}{{#hasMore}}, {{/hasMore}}{{/queryParams}}){{/hasQueryParams}}
28+
{{#hasQueryParams}}
29+
val localVariableQuery: MultiValueMap = mutableMapOf<kotlin.String, kotlin.collections.List<kotlin.String>>().apply {
30+
{{#queryParams}}
31+
{{^required}}
32+
if ({{{paramName}}} != null) {
33+
put("{{baseName}}", {{#isContainer}}toMultiValue({{{paramName}}}.toList(), "{{collectionFormat}}"){{/isContainer}}{{^isContainer}}listOf({{#isDateTime}}parseDateToQueryString({{{paramName}}}){{/isDateTime}}{{#isDate}}parseDateToQueryString({{{paramName}}}){{/isDate}}{{^isDateTime}}{{^isDate}}{{{paramName}}}.toString(){{/isDate}}{{/isDateTime}}){{/isContainer}})
34+
}
35+
{{/required}}
36+
{{#required}}
37+
put("{{baseName}}", {{#isContainer}}toMultiValue({{{paramName}}}.toList(), "{{collectionFormat}}"){{/isContainer}}{{^isContainer}}listOf({{#isDateTime}}parseDateToQueryString({{{paramName}}}){{/isDateTime}}{{#isDate}}parseDateToQueryString({{{paramName}}}){{/isDate}}{{^isDateTime}}{{^isDate}}{{{paramName}}}.toString(){{/isDate}}{{/isDateTime}}){{/isContainer}})
38+
{{/required}}
39+
{{/queryParams}}
40+
}
41+
{{/hasQueryParams}}
2942
{{#or hasFormParams hasHeaderParams}}
30-
val localVariableHeaders: kotlin.collections.Map<kotlin.String, kotlin.String> = mapOf({{#hasFormParams}}"Content-Type" to "multipart/form-data"{{/hasFormParams}}{{^hasHeaderParams}}){{/hasHeaderParams}}{{#hasHeaderParams}}{{#hasFormParams}}, {{/hasFormParams}}{{#headerParams}}"{{baseName}}" to {{#isContainer}}{{paramName}}.joinToString(separator = collectionDelimiter("{{collectionFormat}}"){{/isContainer}}{{^isContainer}}{{paramName}}{{^required}}.toString(){{/required}}{{/isContainer}}{{#hasMore}}, {{/hasMore}}{{/headerParams}}){{/hasHeaderParams}}
43+
val localVariableHeaders: MutableMap<String, String> = mutableMapOf({{#hasFormParams}}"Content-Type" to {{^consumes}}"multipart/form-data"{{/consumes}}{{#consumes.0}}"{{{mediaType}}}"{{/consumes.0}}{{/hasFormParams}})
44+
{{#headerParams}}
45+
{{{paramName}}}{{^required}}?{{/required}}.apply {
46+
localVariableHeaders["{{baseName}}"] = {{#isContainer}}this.joinToString(separator = collectionDelimiter("{{collectionFormat}}")){{/isContainer}}{{^isContainer}}this.toString(){{/isContainer}}
47+
}
48+
{{/headerParams}}
49+
{{^hasFormParams}}{{#hasConsumes}}{{#consumes}}localVariableHeaders["Content-Type"] = "{{{mediaType}}}"
50+
{{/consumes}}{{/hasConsumes}}{{/hasFormParams}}{{#hasProduces}}localVariableHeaders["Accept"] = "{{#produces}}{{{mediaType}}}{{^@last}}, {{/@last}}{{/produces}}"{{/hasProduces}}
3151
{{/or}}
3252
val localVariableConfig = RequestConfig(
3353
RequestMethod.{{httpMethod}},

src/main/resources/handlebars/kotlin-client/build.gradle.mustache

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ group '{{groupId}}'
22
version '{{artifactVersion}}'
33

44
wrapper {
5-
gradleVersion = '5.3'
5+
gradleVersion = '7.5'
66
distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
77
}
88

99
buildscript {
10-
ext.kotlin_version = '1.4.30'
10+
ext.kotlin_version = '1.8.0'
1111
1212
repositories {
1313
maven { url "https://repo1.maven.org/maven2" }
@@ -24,10 +24,10 @@ repositories {
2424
}
2525

2626
dependencies {
27-
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
28-
compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
29-
compile "com.squareup.moshi:moshi-kotlin:1.11.0"
30-
compile "com.squareup.moshi:moshi-adapters:1.11.0"
31-
compile "com.squareup.okhttp3:okhttp:4.9.0"
32-
testCompile "io.kotlintest:kotlintest:2.0.7"
27+
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
28+
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
29+
implementation "com.squareup.moshi:moshi-kotlin:1.11.0"
30+
implementation "com.squareup.moshi:moshi-adapters:1.11.0"
31+
implementation "com.squareup.okhttp3:okhttp:4.9.0"
32+
testImplementation "io.kotlintest:kotlintest:2.0.7"
3333
}
Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,33 @@
11
/**
22
* {{{description}}}
3-
{{#allVars}}
3+
{{#vars}}
44
* @param {{name}} {{{description}}}
5-
{{/allVars}}
5+
{{/vars}}
66
*/
77
{{#hasVars}}data {{/hasVars}}class {{classname}} (
88

9-
{{#allVars}}
9+
{{#vars}}
1010
{{#required}}
1111
{{>data_class_req_var}}{{^@last}},{{/@last}}
1212
{{/required}}
1313
{{^required}}
1414
{{>data_class_opt_var}}{{^@last}},{{/@last}}
1515
{{/required}}
16-
{{/allVars}}
16+
{{/vars}}
1717
) {
18-
{{#allVars}}
18+
{{#vars}}
19+
{{#baseItems this}}
1920
{{#isEnum}}
2021
/**
2122
* {{{description}}}
2223
* Values: {{#allowableValues}}{{#enumVars}}{{&name}}{{^@last}},{{/@last}}{{/enumVars}}{{/allowableValues}}
2324
*/
24-
enum class {{nameInCamelCase}}(val value: {{datatype}}{{#isNullable}}?{{/isNullable}}){
25+
enum class {{{datatypeWithEnum}}}(val value: {{{datatype}}}{{#isNullable}}?{{/isNullable}}){
2526
{{#allowableValues}}{{#enumVars}}
2627
{{&name}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}},{{/@last}}{{#@last}};{{/@last}}
2728
{{/enumVars}}{{/allowableValues}}
2829
}
2930
{{/isEnum}}
30-
{{/allVars}}
31+
{{/baseItems}}
32+
{{/vars}}
3133
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{{#description}}
22
/* {{{description}}} */
33
{{/description}}
4-
val {{{name}}}: {{#is this 'enum'}}{{classname}}.{{nameInCamelCase}}{{/is}}{{#isNot this 'enum'}}{{{datatype}}}{{/isNot}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}
4+
val {{{name}}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{datatype}}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{{#description}}
22
/* {{{description}}} */
33
{{/description}}
4-
val {{{name}}}: {{#is this 'enum'}}{{classname}}.{{nameInCamelCase}}{{/is}}{{#isNot this 'enum'}}{{{datatype}}}{{/isNot}}
4+
val {{{name}}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{datatype}}}{{/isEnum}}

0 commit comments

Comments
 (0)