forked from loafle/openapi-generator-original
This commit is contained in:
parent
14669d226b
commit
6b0644115b
1
modules/openapi-generator/src/main/resources/JavaSpring/beanValidationBodyParams.mustache
vendored
Normal file
1
modules/openapi-generator/src/main/resources/JavaSpring/beanValidationBodyParams.mustache
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
{{! RequestBody required param is responsible for optional and nullability }}{{>beanValidationCore}}
|
@ -1 +1 @@
|
|||||||
{{#isBodyParam}}{{>paramDoc}}{{#useBeanValidation}} @Valid{{/useBeanValidation}} @RequestBody{{^required}}(required = false){{/required}} {{^reactive}}{{{dataType}}}{{/reactive}}{{#reactive}}{{^isArray}}Mono<{{{dataType}}}>{{/isArray}}{{#isArray}}Flux<{{{baseType}}}>{{/isArray}}{{/reactive}} {{paramName}}{{/isBodyParam}}
|
{{#isBodyParam}}{{>paramDoc}}{{#useBeanValidation}} @Valid{{>beanValidationBodyParams}}{{/useBeanValidation}} @RequestBody{{^required}}(required = false){{/required}} {{^reactive}}{{{dataType}}}{{/reactive}}{{#reactive}}{{^isArray}}Mono<{{{dataType}}}>{{/isArray}}{{#isArray}}Flux<{{{baseType}}}>{{/isArray}}{{/reactive}} {{paramName}}{{/isBodyParam}}
|
@ -1809,6 +1809,38 @@ public class SpringCodegenTest {
|
|||||||
.bodyContainsLines("return Arrays.equals(this.picture, testObject.picture);");
|
.bodyContainsLines("return Arrays.equals(this.picture, testObject.picture);");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void useBeanValidationGenerateAnnotationsForRequestBody_issue13932() throws IOException {
|
||||||
|
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
|
||||||
|
output.deleteOnExit();
|
||||||
|
|
||||||
|
OpenAPI openAPI = new OpenAPIParser()
|
||||||
|
.readLocation("src/test/resources/bugs/issue_13932.yml", null, new ParseOptions()).getOpenAPI();
|
||||||
|
SpringCodegen codegen = new SpringCodegen();
|
||||||
|
codegen.setLibrary(SPRING_BOOT);
|
||||||
|
codegen.setOutputDir(output.getAbsolutePath());
|
||||||
|
codegen.additionalProperties().put(SpringCodegen.INTERFACE_ONLY, "true");
|
||||||
|
codegen.additionalProperties().put(SpringCodegen.USE_BEANVALIDATION, "true");
|
||||||
|
codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "xyz.model");
|
||||||
|
codegen.additionalProperties().put(CodegenConstants.API_PACKAGE, "xyz.controller");
|
||||||
|
|
||||||
|
ClientOptInput input = new ClientOptInput()
|
||||||
|
.openAPI(openAPI)
|
||||||
|
.config(codegen);
|
||||||
|
|
||||||
|
DefaultGenerator generator = new DefaultGenerator();
|
||||||
|
Map<String, File> files = generator.opts(input).generate().stream()
|
||||||
|
.collect(Collectors.toMap(File::getName, Function.identity()));
|
||||||
|
|
||||||
|
JavaFileAssert.assertThat(files.get("AddApi.java"))
|
||||||
|
.printFileContent()
|
||||||
|
.assertMethod("addPost")
|
||||||
|
.hasParameter("body")
|
||||||
|
.assertParameterAnnotations()
|
||||||
|
.containsWithNameAndAttributes("Min", ImmutableMap.of("value", "2"));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldHandleSeparatelyInterfaceAndModelAdditionalAnnotations() throws IOException {
|
public void shouldHandleSeparatelyInterfaceAndModelAdditionalAnnotations() throws IOException {
|
||||||
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
|
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
openapi: 3.0.3
|
||||||
|
info:
|
||||||
|
version: 1.0.0
|
||||||
|
description: Specification to reproduce beanValidation bodyParam issue
|
||||||
|
title: RequestBodyValidationTest Api
|
||||||
|
paths:
|
||||||
|
/add:
|
||||||
|
post:
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
title: quantity
|
||||||
|
minimum: 2
|
||||||
|
required: true
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: boolean
|
Loading…
x
Reference in New Issue
Block a user