2021.5.1
copied from openapi-processor-core
openapi-processor/openapi-processor-spring#132, fixed missing bean validation on request body
the processor did not always generate proper bean validation annotations on a parameter/request body. In the example below the @Size() annotation was missing on the request body array with size constraints:
openapi-processor-mapping: v2
options:
# ...
bean-validation: true
map:
types:
- type: array => java.util.List
...
requestBody:
content:
application/json:
schema:
type: array
items:
type: string
minLength: 2
maxLength: 2
...public interface Api {
@PostMapping(path = "/foo", consumes = {"application/json"})
void postFoo(@RequestBody(required = false) List<@Size(min = 2, max = 2) String> body);
}This fix includes a general change in the annotation order. The bean validation annotation moved nearer to the parameter type behind the mapping annotations. (Note that @Parameter is just a placeholder for the Spring/Micronaut mapping annotations)
before
@Mapping("/items")
void getItems(
@Size(min = 2) @Parameter String[] min,
@Size(max = 4) @Parameter String[] max,
@Size(min = 2, max = 4) @Parameter String[] minMax);after
@Mapping("/items")
void getItems(
@Parameter @Size(min = 2) String[] min,
@Parameter @Size(max = 4) String[] max,
@Parameter @Size(min = 2, max = 4) String[] minMax);