Skip to content

Commit 424dd6e

Browse files
Merge pull request #1014 from Backbase/fix-size-validation
Add missing @SiZe validation + do not replace \r\n pattern in fileds
2 parents f9d36a5 + d31dedc commit 424dd6e

File tree

5 files changed

+25
-2
lines changed

5 files changed

+25
-2
lines changed

boat-scaffold/src/main/java/com/backbase/oss/codegen/java/BoatSpringCodeGen.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,6 @@ public void execute(Fragment frag, Writer out) throws IOException {
124124
return;
125125
}
126126
String formatted = text
127-
.replace("\\n", SINGLE_SPACE)
128127
.replaceAll(WHITESPACE_REGEX, SINGLE_SPACE)
129128
.replaceAll("\\< ", "<")
130129
.replaceAll(" >", ">")
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: 20 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();
@@ -249,6 +259,7 @@ void shouldGenerateValidations(boolean useLombok, boolean bigDecimalsAsStrings)
249259
assertFieldValueAssignment(
250260
multiLinePaymentRequestUnit, "arrangementIds", "new ArrayList<>()");
251261
assertFieldAnnotation(multiLinePaymentRequestUnit, "uniqueLines", "NotNull");
262+
assertFieldAnnotation(multiLinePaymentRequestUnit, "name", "Pattern", "@Pattern(regexp = \"^[^\\\\r\\\\n]{1,64}$\")");
252263
assertFieldValueAssignment(
253264
multiLinePaymentRequestUnit, "uniqueArrangementIds", null);
254265

@@ -440,6 +451,15 @@ private static void assertFieldAnnotation(
440451
fieldDeclaration.getAnnotationByName(annotationName).isPresent(), is(true));
441452
}
442453

454+
private static void assertFieldAnnotation(
455+
CompilationUnit unit, String fieldName, String annotationName, String value) throws FileNotFoundException {
456+
FieldDeclaration fieldDeclaration = findFieldDeclaration(unit, fieldName);
457+
AnnotationExpr annotation = fieldDeclaration.getAnnotationByName(annotationName)
458+
.orElseThrow(() -> new AssertionError(
459+
"Expect annotation to be present on field: " + annotationName + " " + fieldName));
460+
assertThat(annotation.toString(), equalTo(value));
461+
}
462+
443463
private static void assertFieldValueAssignment(
444464
CompilationUnit unit, String fieldName, String valueAssignment) throws FileNotFoundException {
445465
FieldDeclaration fieldDeclaration = findFieldDeclaration(unit, fieldName);

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

Lines changed: 3 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:
@@ -313,6 +315,7 @@ components:
313315
description: Request name
314316
minLength: 3
315317
maxLength: 251
318+
pattern: "^[^\\r\\n]{1,64}$"
316319
amountNumberAsString:
317320
description: The amount string in number format
318321
type: string

0 commit comments

Comments
 (0)