Skip to content

Commit 44ea4b2

Browse files
authored
Merge branch 'master' into issues/1054
2 parents fa4c33b + 78ed26c commit 44ea4b2

23 files changed

+173
-119
lines changed

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.swagger.codegen.v3.generators.kotlin;
22

3+
import com.github.jknack.handlebars.helper.ConditionalHelpers;
34
import io.swagger.codegen.v3.CliOption;
45
import io.swagger.codegen.v3.CodegenConstants;
56
import io.swagger.codegen.v3.CodegenModel;
@@ -9,6 +10,7 @@
910
import io.swagger.v3.oas.models.media.MapSchema;
1011
import io.swagger.v3.oas.models.media.ObjectSchema;
1112
import io.swagger.v3.oas.models.media.Schema;
13+
import org.apache.commons.lang3.StringUtils;
1214
import org.slf4j.Logger;
1315
import org.slf4j.LoggerFactory;
1416
import com.github.jknack.handlebars.helper.StringHelpers;
@@ -182,6 +184,7 @@ public AbstractKotlinCodegen() {
182184
typeMapping.put("binary", "kotlin.Array<kotlin.Byte>");
183185
typeMapping.put("Date", "java.time.LocalDate");
184186
typeMapping.put("DateTime", "java.time.LocalDateTime");
187+
typeMapping.put("ByteArray", "kotlin.ByteArray");
185188

186189
instantiationTypes.put("array", "arrayOf");
187190
instantiationTypes.put("list", "arrayOf");
@@ -508,10 +511,16 @@ public String toVarName(String name) {
508511
return super.toVarName(sanitizeKotlinSpecificNames(name));
509512
}
510513

514+
@Override
515+
public String toEnumName(CodegenProperty property) {
516+
return StringUtils.capitalize(property.name);
517+
}
518+
511519
@Override
512520
public void addHandlebarHelpers(Handlebars handlebars) {
513521
super.addHandlebarHelpers(handlebars);
514522
handlebars.registerHelpers(StringHelpers.class);
523+
handlebars.registerHelpers(ConditionalHelpers.class);
515524
}
516525

517526
/**

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

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,6 @@ public KotlinClientCodegen() {
5757
cliOptions.add(dateLibrary);
5858
}
5959

60-
@Override
61-
public void addHandlebarHelpers(Handlebars handlebars) {
62-
super.addHandlebarHelpers(handlebars);
63-
handlebars.registerHelpers(ConditionalHelpers.class);
64-
}
65-
6660
@Override
6761
public String getDefaultTemplateDir() {
6862
return "kotlin-client";

src/main/java/io/swagger/codegen/v3/generators/php/PhpClientCodegen.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ public PhpClientCodegen() {
110110

111111
instantiationTypes.put("array", "array");
112112
instantiationTypes.put("map", "map");
113-
113+
114114
// provide primitives to mustache template
115115
List<String> sortedLanguageSpecificPrimitives= new ArrayList<String>(languageSpecificPrimitives);
116116
Collections.sort(sortedLanguageSpecificPrimitives);
@@ -295,6 +295,12 @@ public void processOpts() {
295295
if (additionalProperties.containsKey(VARIABLE_NAMING_CONVENTION)) {
296296
this.setParameterNamingConvention((String) additionalProperties.get(VARIABLE_NAMING_CONVENTION));
297297
}
298+
if (StringUtils.isBlank(composerVendorName) && additionalProperties.get(CodegenConstants.GIT_USER_ID) != null) {
299+
additionalProperties.put(CodegenConstants.GIT_USER_ID, StringUtils.lowerCase(additionalProperties.get(CodegenConstants.GIT_USER_ID).toString()));
300+
}
301+
if (StringUtils.isBlank(composerProjectName) && additionalProperties.get(CodegenConstants.GIT_REPO_ID) != null) {
302+
additionalProperties.put(CodegenConstants.GIT_REPO_ID, StringUtils.lowerCase(additionalProperties.get(CodegenConstants.GIT_REPO_ID).toString()));
303+
}
298304

299305
additionalProperties.put("escapedInvokerPackage", invokerPackage.replace("\\", "\\\\"));
300306

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}}
Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,33 @@
11
/**
22
* {{{description}}}
3-
{{~#vars}}
3+
{{#vars}}
44
* @param {{name}} {{{description}}}
5-
{{~/vars~}}
5+
{{/vars}}
66
*/
7-
data class {{classname}} (
8-
{{~#requiredVars~}}
9-
{{>data_class_req_var}}{{^@last}},{{/@last}}
10-
{{~/requiredVars~}}
11-
{{#has this 'required'}}{{#has this 'optional'}},{{/has}}{{/has}}
12-
{{~#optionalVars}}{{>data_class_opt_var}}{{^@last}},{{/@last}}{{/optionalVars}}
7+
{{#hasVars}}data {{/hasVars}}class {{classname}} (
8+
9+
{{#vars}}
10+
{{#required}}
11+
{{>data_class_req_var}}{{^@last}},{{/@last}}
12+
{{/required}}
13+
{{^required}}
14+
{{>data_class_opt_var}}{{^@last}},{{/@last}}
15+
{{/required}}
16+
{{/vars}}
1317
) {
14-
{{#has this 'enums'}}{{#vars}}{{#is this 'enum'}}
18+
{{#vars}}
19+
{{#baseItems this}}
20+
{{#isEnum}}
1521
/**
1622
* {{{description}}}
1723
* Values: {{#allowableValues}}{{#enumVars}}{{&name}}{{^@last}},{{/@last}}{{/enumVars}}{{/allowableValues}}
1824
*/
19-
enum class {{nameInCamelCase}}(val value: {{datatype}}){
25+
enum class {{{datatypeWithEnum}}}(val value: {{{datatype}}}{{#isNullable}}?{{/isNullable}}){
2026
{{#allowableValues}}{{#enumVars}}
21-
{{&name}}({{{value}}}){{^@last}},{{/@last}}{{#@last}};{{/@last}}
27+
{{&name}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}},{{/@last}}{{#@last}};{{/@last}}
2228
{{/enumVars}}{{/allowableValues}}
2329
}
24-
{{/is}}{{/vars}}{{/has}}
30+
{{/isEnum}}
31+
{{/baseItems}}
32+
{{/vars}}
2533
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{{#description}}
22
/* {{{description}}} */
3-
{{~/description}}
4-
val {{{name}}}: {{#is this 'enum'}}{{classname}}.{{nameInCamelCase}}{{/is}}{{#isNot this 'enum'}}{{{datatype}}}{{/isNot}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}
3+
{{/description}}
4+
val {{{name}}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{datatype}}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}

0 commit comments

Comments
 (0)