Skip to content

Commit 8391747

Browse files
[kotlin][client] Explode query param properly
1 parent a06a2b4 commit 8391747

File tree

2 files changed

+66
-3
lines changed
  • modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp
  • samples/client/echo_api/kotlin-jvm-okhttp/src/main/kotlin/org/openapitools/client/apis

2 files changed

+66
-3
lines changed

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

+27
Original file line numberDiff line numberDiff line change
@@ -208,17 +208,44 @@ import {{packageName}}.infrastructure.toMultiValue
208208
{{#queryParams}}
209209
{{^required}}
210210
if ({{{paramName}}} != null) {
211+
{{#isModel}}
212+
{{#vars}}
213+
if ({{{paramName}}}.{{name}} != null) {
214+
put("{{#isDeepObject}}{{{paramName}}}[{{/isDeepObject}}{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}{{#isDeepObject}}]{{/isDeepObject}}", {{#isContainer}}toMultiValue({{{paramName}}}.{{name}}.toList(), "{{collectionFormat}}"){{/isContainer}}{{^isContainer}}listOf({{#isDateTime}}parseDateToQueryString({{{paramName}}}.{{name}}){{/isDateTime}}{{#isDate}}parseDateToQueryString({{{paramName}}}.{{name}}){{/isDate}}{{#isEnum}}{{#isString}}{{{paramName}}}.{{name}}.value{{/isString}}{{^isString}}{{{paramName}}}.{{name}}.toString(){{/isString}}{{/isEnum}}{{^isEnum}}{{^isDateTime}}{{^isDate}}{{{paramName}}}.{{name}}.toString(){{/isDate}}{{/isDateTime}}{{/isEnum}}){{/isContainer}})
215+
}
216+
{{/vars}}
217+
{{/isModel}}
218+
{{^isModel}}
211219
put("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", {{#isContainer}}toMultiValue({{{paramName}}}.toList(), "{{collectionFormat}}"){{/isContainer}}{{^isContainer}}listOf({{#isDateTime}}parseDateToQueryString({{{paramName}}}){{/isDateTime}}{{#isDate}}parseDateToQueryString({{{paramName}}}){{/isDate}}{{#isEnum}}{{#isString}}{{{paramName}}}.value{{/isString}}{{^isString}}{{{paramName}}}.toString(){{/isString}}{{/isEnum}}{{^isEnum}}{{^isDateTime}}{{^isDate}}{{{paramName}}}.toString(){{/isDate}}{{/isDateTime}}{{/isEnum}}){{/isContainer}})
220+
{{/isModel}}
212221
}
213222
{{/required}}
214223
{{#required}}
215224
{{#isNullable}}
216225
if ({{{paramName}}} != null) {
226+
{{#isModel}}
227+
{{#vars}}
228+
if ({{{paramName}}}.{{name}} != null) {
229+
put("{{#isDeepObject}}{{{paramName}}}[{{/isDeepObject}}{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}{{#isDeepObject}}]{{/isDeepObject}}", {{#isContainer}}toMultiValue({{{paramName}}}.{{name}}.toList(), "{{collectionFormat}}"){{/isContainer}}{{^isContainer}}listOf({{#isDateTime}}parseDateToQueryString({{{paramName}}}.{{name}}){{/isDateTime}}{{#isDate}}parseDateToQueryString({{{paramName}}}.{{name}}){{/isDate}}{{#isEnum}}{{#isString}}{{{paramName}}}.{{name}}.value{{/isString}}{{^isString}}{{{paramName}}}.{{name}}.toString(){{/isString}}{{/isEnum}}{{^isEnum}}{{^isDateTime}}{{^isDate}}{{{paramName}}}.{{name}}.toString(){{/isDate}}{{/isDateTime}}{{/isEnum}}){{/isContainer}})
230+
}
231+
{{/vars}}
232+
{{/isModel}}
233+
{{^isModel}}
217234
put("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", {{#isContainer}}toMultiValue({{{paramName}}}.toList(), "{{collectionFormat}}"){{/isContainer}}{{^isContainer}}listOf({{#isDateTime}}parseDateToQueryString({{{paramName}}}){{/isDateTime}}{{#isDate}}parseDateToQueryString({{{paramName}}}){{/isDate}}{{#isEnum}}{{#isString}}{{{paramName}}}.value{{/isString}}{{^isString}}{{{paramName}}}.toString(){{/isString}}{{/isEnum}}{{^isEnum}}{{^isDateTime}}{{^isDate}}{{{paramName}}}.toString(){{/isDate}}{{/isDateTime}}{{/isEnum}}){{/isContainer}})
235+
{{/isModel}}
218236
}
219237
{{/isNullable}}
220238
{{^isNullable}}
239+
{{#isModel}}
240+
{{#vars}}
241+
if ({{{paramName}}}.{{name}} != null) {
242+
put("{{#isDeepObject}}{{{paramName}}}[{{/isDeepObject}}{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}{{#isDeepObject}}]{{/isDeepObject}}", {{#isContainer}}toMultiValue({{{paramName}}}.{{name}}.toList(), "{{collectionFormat}}"){{/isContainer}}{{^isContainer}}listOf({{#isDateTime}}parseDateToQueryString({{{paramName}}}.{{name}}){{/isDateTime}}{{#isDate}}parseDateToQueryString({{{paramName}}}.{{name}}){{/isDate}}{{#isEnum}}{{#isString}}{{{paramName}}}.{{name}}.value{{/isString}}{{^isString}}{{{paramName}}}.{{name}}.toString(){{/isString}}{{/isEnum}}{{^isEnum}}{{^isDateTime}}{{^isDate}}{{{paramName}}}.{{name}}.toString(){{/isDate}}{{/isDateTime}}{{/isEnum}}){{/isContainer}})
243+
}
244+
{{/vars}}
245+
{{/isModel}}
246+
{{^isModel}}
221247
put("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", {{#isContainer}}toMultiValue({{{paramName}}}.toList(), "{{collectionFormat}}"){{/isContainer}}{{^isContainer}}listOf({{#isDateTime}}parseDateToQueryString({{{paramName}}}){{/isDateTime}}{{#isDate}}parseDateToQueryString({{{paramName}}}){{/isDate}}{{#isEnum}}{{#isString}}{{{paramName}}}.value{{/isString}}{{^isString}}{{{paramName}}}.toString(){{/isString}}{{/isEnum}}{{^isEnum}}{{^isDateTime}}{{^isDate}}{{{paramName}}}.toString(){{/isDate}}{{/isDateTime}}{{/isEnum}}){{/isContainer}})
248+
{{/isModel}}
222249
{{/isNullable}}
223250
{{/required}}
224251
{{/queryParams}}

samples/client/echo_api/kotlin-jvm-okhttp/src/main/kotlin/org/openapitools/client/apis/QueryApi.kt

+39-3
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,24 @@ class QueryApi(basePath: kotlin.String = defaultBasePath, client: Call.Factory =
391391
val localVariableQuery: MultiValueMap = mutableMapOf<kotlin.String, kotlin.collections.List<kotlin.String>>()
392392
.apply {
393393
if (queryObject != null) {
394-
put("query_object", listOf(queryObject.toString()))
394+
if (queryObject.id != null) {
395+
put("queryObject[id]", listOf(queryObject.id.toString()))
396+
}
397+
if (queryObject.name != null) {
398+
put("queryObject[name]", listOf(queryObject.name.toString()))
399+
}
400+
if (queryObject.category != null) {
401+
put("queryObject[category]", listOf(queryObject.category.toString()))
402+
}
403+
if (queryObject.photoUrls != null) {
404+
put("queryObject[photoUrls]", toMultiValue(queryObject.photoUrls.toList(), ""))
405+
}
406+
if (queryObject.tags != null) {
407+
put("queryObject[tags]", toMultiValue(queryObject.tags.toList(), ""))
408+
}
409+
if (queryObject.status != null) {
410+
put("queryObject[status]", listOf(queryObject.status.value))
411+
}
395412
}
396413
}
397414
val localVariableHeaders: MutableMap<String, String> = mutableMapOf()
@@ -469,7 +486,9 @@ class QueryApi(basePath: kotlin.String = defaultBasePath, client: Call.Factory =
469486
val localVariableQuery: MultiValueMap = mutableMapOf<kotlin.String, kotlin.collections.List<kotlin.String>>()
470487
.apply {
471488
if (queryObject != null) {
472-
put("query_object", listOf(queryObject.toString()))
489+
if (queryObject.propertyValues != null) {
490+
put("values", toMultiValue(queryObject.propertyValues.toList(), ""))
491+
}
473492
}
474493
}
475494
val localVariableHeaders: MutableMap<String, String> = mutableMapOf()
@@ -547,7 +566,24 @@ class QueryApi(basePath: kotlin.String = defaultBasePath, client: Call.Factory =
547566
val localVariableQuery: MultiValueMap = mutableMapOf<kotlin.String, kotlin.collections.List<kotlin.String>>()
548567
.apply {
549568
if (queryObject != null) {
550-
put("query_object", listOf(queryObject.toString()))
569+
if (queryObject.id != null) {
570+
put("id", listOf(queryObject.id.toString()))
571+
}
572+
if (queryObject.name != null) {
573+
put("name", listOf(queryObject.name.toString()))
574+
}
575+
if (queryObject.category != null) {
576+
put("category", listOf(queryObject.category.toString()))
577+
}
578+
if (queryObject.photoUrls != null) {
579+
put("photoUrls", toMultiValue(queryObject.photoUrls.toList(), ""))
580+
}
581+
if (queryObject.tags != null) {
582+
put("tags", toMultiValue(queryObject.tags.toList(), ""))
583+
}
584+
if (queryObject.status != null) {
585+
put("status", listOf(queryObject.status.value))
586+
}
551587
}
552588
}
553589
val localVariableHeaders: MutableMap<String, String> = mutableMapOf()

0 commit comments

Comments
 (0)