Merge branch 'bugfix/fix-formparams-defaultvalue' of https://github.com/JoseLora/openapi-generator into JoseLora-bugfix/fix-formparams-defaultvalue

This commit is contained in:
William Cheng
2025-10-29 18:19:47 +08:00
3 changed files with 66 additions and 1 deletions

View File

@@ -1 +1 @@
{{#isFormParam}}{{^isFile}}{{>paramDoc}}{{#useBeanValidation}} {{>beanValidationBodyParams}}@Valid{{/useBeanValidation}} {{#isModel}}@RequestPart{{/isModel}}{{^isModel}}{{#isArray}}@RequestPart{{/isArray}}{{^isArray}}{{#reactive}}@RequestPart{{/reactive}}{{^reactive}}@RequestParam{{/reactive}}{{/isArray}}{{/isModel}}(value = "{{baseName}}"{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}){{>dateTimeParam}} {{^required}}{{#useOptional}}Optional<{{/useOptional}}{{/required}}{{{dataType}}}{{^required}}{{#useOptional}}>{{/useOptional}}{{/required}} {{paramName}}{{/isFile}}{{#isFile}}{{>paramDoc}} @RequestPart(value = "{{baseName}}"{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}) {{#reactive}}{{#isArray}}Flux<{{/isArray}}Part{{#isArray}}>{{/isArray}}{{/reactive}}{{^reactive}}{{#isArray}}List<{{/isArray}}MultipartFile{{#isArray}}>{{/isArray}}{{/reactive}} {{paramName}}{{/isFile}}{{/isFormParam}}
{{#isFormParam}}{{^isFile}}{{>paramDoc}}{{#useBeanValidation}} {{>beanValidationBodyParams}}@Valid{{/useBeanValidation}} {{#isModel}}@RequestPart{{/isModel}}{{^isModel}}{{#isArray}}@RequestPart{{/isArray}}{{^isArray}}{{#reactive}}@RequestPart{{/reactive}}{{^reactive}}@RequestParam{{/reactive}}{{/isArray}}{{/isModel}}(value = "{{baseName}}"{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}{{#defaultValue}}, defaultValue = "{{{.}}}"{{/defaultValue}}){{>dateTimeParam}} {{^required}}{{#useOptional}}Optional<{{/useOptional}}{{/required}}{{{dataType}}}{{^required}}{{#useOptional}}>{{/useOptional}}{{/required}} {{paramName}}{{/isFile}}{{#isFile}}{{>paramDoc}} @RequestPart(value = "{{baseName}}"{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}) {{#reactive}}{{#isArray}}Flux<{{/isArray}}Part{{#isArray}}>{{/isArray}}{{/reactive}}{{^reactive}}{{#isArray}}List<{{/isArray}}MultipartFile{{#isArray}}>{{/isArray}}{{/reactive}} {{paramName}}{{/isFile}}{{/isFormParam}}

View File

@@ -5316,6 +5316,29 @@ public class SpringCodegenTest {
.doesNotHaveAnnotation("Deprecated");
}
@Test
public void testRequestBodyFormParamsDefaultValue() {
final var tempDir = TestUtils.newTempFolder();
final CodegenConfigurator configurator = new CodegenConfigurator()
.setInputSpec("src/test/resources/3_0/spring/formParams_defaultValue.yaml")
.setGeneratorName("spring")
.setOutputDir(tempDir.toString());
new DefaultGenerator().opts(configurator.toClientOptInput()).generate();
JavaFileAssert.assertThat(tempDir.resolve("src/main/java/org/openapitools/api/SomeApi.java"))
.assertMethod("someDummyEndpoint", "String", "String")
.assertParameter("productId")
.assertParameterAnnotations()
.containsWithNameAndAttributes("RequestParam",
Map.of("value", "\"product_id\"", "required", "true"))
.toParameter().toMethod()
.assertParameter("locale")
.assertParameterAnnotations()
.containsWithNameAndAttributes("RequestParam",
Map.of("value", "\"locale\"", "required", "false", "defaultValue", "\"en_US\""));
}
@Test
public void shouldAnnotateNonRequiredFieldsAsNullable() throws IOException {
SpringCodegen codegen = new SpringCodegen();

View File

@@ -0,0 +1,42 @@
openapi: 3.0.0
info:
version: "1.0.0"
title: formParams-defaultValue-test
paths:
/some/dummy/endpoint:
post:
operationId: someDummyEndpoint
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/DummyRequest'
responses:
200:
description: Successfully created
content:
application/json:
schema:
type: object
additionalProperties:
$ref: '#/components/schemas/DummyResponse'
components:
schemas:
DummyResponse:
required:
- status
type: object
properties:
status:
type: string
DummyRequest:
required:
- product_id
type: object
properties:
product_id:
type: string
locale:
type: string
default: "en_US"