mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-10-14 00:13:50 +00:00
[kotlin] Fix defaultValue in query parameters (#22002)
This commit is contained in:
parent
67b24330c9
commit
5e8dcc9f07
@ -1113,6 +1113,22 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void postProcessParameter(CodegenParameter parameter) {
|
||||||
|
super.postProcessParameter(parameter);
|
||||||
|
adjustEnumRefDefault(parameter);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void adjustEnumRefDefault(CodegenParameter param) {
|
||||||
|
if (StringUtils.isEmpty(param.defaultValue) || !(param.isEnum || param.isEnumRef)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String type = StringUtils.defaultIfEmpty(param.datatypeWithEnum, param.dataType);
|
||||||
|
param.enumDefaultValue = toEnumVarName(param.defaultValue, type);
|
||||||
|
param.defaultValue = type + "." + param.enumDefaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void postProcess() {
|
public void postProcess() {
|
||||||
System.out.println("################################################################################");
|
System.out.println("################################################################################");
|
||||||
|
@ -91,6 +91,24 @@ public class KotlinClientCodegenApiTest {
|
|||||||
assertFileContainsLine(lines, "suspend fun deletePet(@Path(\"petId\") petId: kotlin.Long, @Header(\"api_key\") apiKey: kotlin.String? = null)" + expectedUnitResponse);
|
assertFileContainsLine(lines, "suspend fun deletePet(@Path(\"petId\") petId: kotlin.Long, @Header(\"api_key\") apiKey: kotlin.String? = null)" + expectedUnitResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEnumDefaultForReferencedSchemaParameterJvmOkhttp4() throws IOException {
|
||||||
|
OpenAPI openAPI = readOpenAPI("3_0/kotlin/enum-default-query.yaml");
|
||||||
|
|
||||||
|
KotlinClientCodegen codegen = createCodegen(ClientLibrary.JVM_OKHTTP4);
|
||||||
|
codegen.additionalProperties().put("enumPropertyNaming", "UPPERCASE");
|
||||||
|
|
||||||
|
ClientOptInput input = createClientOptInput(openAPI, codegen);
|
||||||
|
|
||||||
|
DefaultGenerator generator = new DefaultGenerator();
|
||||||
|
enableOnlyApiGeneration(generator);
|
||||||
|
|
||||||
|
List<File> files = generator.opts(input).generate();
|
||||||
|
File statusApi = files.stream().filter(file -> file.getName().equals("StatusApi.kt")).findAny().orElseThrow();
|
||||||
|
|
||||||
|
assertFileContains(statusApi.toPath(), "state: PetStatus? = PetStatus.AVAILABLE");
|
||||||
|
}
|
||||||
|
|
||||||
private static void assertFileContainsLine(List<String> lines, String line) {
|
private static void assertFileContainsLine(List<String> lines, String line) {
|
||||||
Assert.assertListContains(lines, s -> s.equals(line), line);
|
Assert.assertListContains(lines, s -> s.equals(line), line);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
openapi: 3.0.1
|
||||||
|
info:
|
||||||
|
title: Enum default test
|
||||||
|
version: 1.0.0
|
||||||
|
paths:
|
||||||
|
/status:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- Status
|
||||||
|
operationId: getStatus
|
||||||
|
parameters:
|
||||||
|
- name: state
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/PetStatus'
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: OK
|
||||||
|
components:
|
||||||
|
schemas:
|
||||||
|
PetStatus:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- available
|
||||||
|
- pending
|
||||||
|
default: available
|
@ -52,13 +52,13 @@ try {
|
|||||||
| **pathDefault** | **kotlin.String**| path default | |
|
| **pathDefault** | **kotlin.String**| path default | |
|
||||||
| **pathNullable** | **kotlin.String**| path_nullable | |
|
| **pathNullable** | **kotlin.String**| path_nullable | |
|
||||||
| **queryDefault** | **kotlin.String**| query default | [optional] [default to "available"] |
|
| **queryDefault** | **kotlin.String**| query default | [optional] [default to "available"] |
|
||||||
| **queryDefaultEnum** | **kotlin.String**| query default enum | [optional] [default to B] [enum: A, B, C] |
|
| **queryDefaultEnum** | **kotlin.String**| query default enum | [optional] [default to QueryDefaultEnum.B] [enum: A, B, C] |
|
||||||
| **queryDefaultInt** | **java.math.BigDecimal**| query default int | [optional] [default to 3] |
|
| **queryDefaultInt** | **java.math.BigDecimal**| query default int | [optional] [default to 3] |
|
||||||
| **headerDefault** | **kotlin.String**| header default | [optional] [default to "available"] |
|
| **headerDefault** | **kotlin.String**| header default | [optional] [default to "available"] |
|
||||||
| **headerDefaultEnum** | **kotlin.String**| header default enum | [optional] [default to B] [enum: A, B, C] |
|
| **headerDefaultEnum** | **kotlin.String**| header default enum | [optional] [default to HeaderDefaultEnum.B] [enum: A, B, C] |
|
||||||
| **headerDefaultInt** | **java.math.BigDecimal**| header default int | [optional] [default to 3] |
|
| **headerDefaultInt** | **java.math.BigDecimal**| header default int | [optional] [default to 3] |
|
||||||
| **cookieDefault** | **kotlin.String**| cookie default | [optional] [default to "available"] |
|
| **cookieDefault** | **kotlin.String**| cookie default | [optional] [default to "available"] |
|
||||||
| **cookieDefaultEnum** | **kotlin.String**| cookie default enum | [optional] [default to B] [enum: A, B, C] |
|
| **cookieDefaultEnum** | **kotlin.String**| cookie default enum | [optional] [default to CookieDefaultEnum.B] [enum: A, B, C] |
|
||||||
| **cookieDefaultInt** | **java.math.BigDecimal**| cookie default int | [optional] [default to 3] |
|
| **cookieDefaultInt** | **java.math.BigDecimal**| cookie default int | [optional] [default to 3] |
|
||||||
| **queryNullable** | **kotlin.String**| query nullable | [optional] |
|
| **queryNullable** | **kotlin.String**| query nullable | [optional] |
|
||||||
| **headerNullable** | **kotlin.String**| header nullable | [optional] |
|
| **headerNullable** | **kotlin.String**| header nullable | [optional] |
|
||||||
|
@ -105,13 +105,13 @@ class DefaultApi(basePath: kotlin.String = defaultBasePath, client: Call.Factory
|
|||||||
* @param pathDefault path default
|
* @param pathDefault path default
|
||||||
* @param pathNullable path_nullable
|
* @param pathNullable path_nullable
|
||||||
* @param queryDefault query default (optional, default to "available")
|
* @param queryDefault query default (optional, default to "available")
|
||||||
* @param queryDefaultEnum query default enum (optional, default to B)
|
* @param queryDefaultEnum query default enum (optional, default to QueryDefaultEnum.B)
|
||||||
* @param queryDefaultInt query default int (optional, default to 3)
|
* @param queryDefaultInt query default int (optional, default to 3)
|
||||||
* @param headerDefault header default (optional, default to "available")
|
* @param headerDefault header default (optional, default to "available")
|
||||||
* @param headerDefaultEnum header default enum (optional, default to B)
|
* @param headerDefaultEnum header default enum (optional, default to HeaderDefaultEnum.B)
|
||||||
* @param headerDefaultInt header default int (optional, default to 3)
|
* @param headerDefaultInt header default int (optional, default to 3)
|
||||||
* @param cookieDefault cookie default (optional, default to "available")
|
* @param cookieDefault cookie default (optional, default to "available")
|
||||||
* @param cookieDefaultEnum cookie default enum (optional, default to B)
|
* @param cookieDefaultEnum cookie default enum (optional, default to CookieDefaultEnum.B)
|
||||||
* @param cookieDefaultInt cookie default int (optional, default to 3)
|
* @param cookieDefaultInt cookie default int (optional, default to 3)
|
||||||
* @param queryNullable query nullable (optional)
|
* @param queryNullable query nullable (optional)
|
||||||
* @param headerNullable header nullable (optional)
|
* @param headerNullable header nullable (optional)
|
||||||
@ -150,13 +150,13 @@ class DefaultApi(basePath: kotlin.String = defaultBasePath, client: Call.Factory
|
|||||||
* @param pathDefault path default
|
* @param pathDefault path default
|
||||||
* @param pathNullable path_nullable
|
* @param pathNullable path_nullable
|
||||||
* @param queryDefault query default (optional, default to "available")
|
* @param queryDefault query default (optional, default to "available")
|
||||||
* @param queryDefaultEnum query default enum (optional, default to B)
|
* @param queryDefaultEnum query default enum (optional, default to QueryDefaultEnum.B)
|
||||||
* @param queryDefaultInt query default int (optional, default to 3)
|
* @param queryDefaultInt query default int (optional, default to 3)
|
||||||
* @param headerDefault header default (optional, default to "available")
|
* @param headerDefault header default (optional, default to "available")
|
||||||
* @param headerDefaultEnum header default enum (optional, default to B)
|
* @param headerDefaultEnum header default enum (optional, default to HeaderDefaultEnum.B)
|
||||||
* @param headerDefaultInt header default int (optional, default to 3)
|
* @param headerDefaultInt header default int (optional, default to 3)
|
||||||
* @param cookieDefault cookie default (optional, default to "available")
|
* @param cookieDefault cookie default (optional, default to "available")
|
||||||
* @param cookieDefaultEnum cookie default enum (optional, default to B)
|
* @param cookieDefaultEnum cookie default enum (optional, default to CookieDefaultEnum.B)
|
||||||
* @param cookieDefaultInt cookie default int (optional, default to 3)
|
* @param cookieDefaultInt cookie default int (optional, default to 3)
|
||||||
* @param queryNullable query nullable (optional)
|
* @param queryNullable query nullable (optional)
|
||||||
* @param headerNullable header nullable (optional)
|
* @param headerNullable header nullable (optional)
|
||||||
@ -181,13 +181,13 @@ class DefaultApi(basePath: kotlin.String = defaultBasePath, client: Call.Factory
|
|||||||
* @param pathDefault path default
|
* @param pathDefault path default
|
||||||
* @param pathNullable path_nullable
|
* @param pathNullable path_nullable
|
||||||
* @param queryDefault query default (optional, default to "available")
|
* @param queryDefault query default (optional, default to "available")
|
||||||
* @param queryDefaultEnum query default enum (optional, default to B)
|
* @param queryDefaultEnum query default enum (optional, default to QueryDefaultEnum.B)
|
||||||
* @param queryDefaultInt query default int (optional, default to 3)
|
* @param queryDefaultInt query default int (optional, default to 3)
|
||||||
* @param headerDefault header default (optional, default to "available")
|
* @param headerDefault header default (optional, default to "available")
|
||||||
* @param headerDefaultEnum header default enum (optional, default to B)
|
* @param headerDefaultEnum header default enum (optional, default to HeaderDefaultEnum.B)
|
||||||
* @param headerDefaultInt header default int (optional, default to 3)
|
* @param headerDefaultInt header default int (optional, default to 3)
|
||||||
* @param cookieDefault cookie default (optional, default to "available")
|
* @param cookieDefault cookie default (optional, default to "available")
|
||||||
* @param cookieDefaultEnum cookie default enum (optional, default to B)
|
* @param cookieDefaultEnum cookie default enum (optional, default to CookieDefaultEnum.B)
|
||||||
* @param cookieDefaultInt cookie default int (optional, default to 3)
|
* @param cookieDefaultInt cookie default int (optional, default to 3)
|
||||||
* @param queryNullable query nullable (optional)
|
* @param queryNullable query nullable (optional)
|
||||||
* @param headerNullable header nullable (optional)
|
* @param headerNullable header nullable (optional)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user