Skip to content

Commit 07c66ea

Browse files
Fix: add missing @SiZe validations when request body is a collection
1 parent f9d36a5 commit 07c66ea

File tree

4 files changed

+14
-1
lines changed

4 files changed

+14
-1
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{{^useOptional}}{{>beanValidationCore}}{{/useOptional}}{{#useOptional}}{{#required}}{{>beanValidationCore}}{{/required}}{{/useOptional}}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +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}}{{#useBeanValidation}}{{#addBindingResult}}, BindingResult bindingResult{{/addBindingResult}}{{/useBeanValidation}}{{/isBodyParam}}
1+
{{#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}}{{#useBeanValidation}}{{#addBindingResult}}, BindingResult bindingResult{{/addBindingResult}}{{/useBeanValidation}}{{/isBodyParam}}

boat-scaffold/src/test/java/com/backbase/oss/codegen/java/BoatSpringCodeGenTests.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.github.javaparser.ast.body.MethodDeclaration;
2323
import com.github.javaparser.ast.body.Parameter;
2424
import com.github.javaparser.ast.body.VariableDeclarator;
25+
import com.github.javaparser.ast.expr.AnnotationExpr;
2526
import com.github.javaparser.ast.expr.Expression;
2627
import com.github.javaparser.ast.type.ClassOrInterfaceType;
2728
import com.github.javaparser.ast.type.Type;
@@ -216,6 +217,15 @@ void shouldGenerateValidations(boolean useLombok, boolean bigDecimalsAsStrings)
216217
assertHasCollectionParamWithType(getPaymentsMethod, "status", "List", "String");
217218
assertHasCollectionParamWithType(getPaymentsMethod, "headerParams", "List", "String");
218219

220+
MethodDeclaration createPaymentsMethod = StaticJavaParser.parse(paymentsApiFile)
221+
.findAll(MethodDeclaration.class)
222+
.stream()
223+
.filter(it -> "createPayments".equals(it.getName().toString()))
224+
.findFirst().orElseThrow();
225+
AnnotationExpr sizeAnnotation = createPaymentsMethod.getParameterByName("multiLinePaymentRequest").orElseThrow()
226+
.getAnnotationByName("Size").orElseThrow();
227+
assertEquals("@Size(min = 1, max = 55)", sizeAnnotation.toString());
228+
219229
File paymentRequestLine = files.stream().filter(file -> file.getName().equals("PaymentRequestLine.java"))
220230
.findFirst()
221231
.get();

boat-scaffold/src/test/resources/boat-spring/openapi.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ paths:
100100
application/json:
101101
schema:
102102
type: array
103+
maxItems: 55
104+
minItems: 1
103105
items:
104106
$ref: '#/components/schemas/MultiLinePaymentRequest'
105107
responses:

0 commit comments

Comments
 (0)