From 6dfe6a6da213de9e7e66947162a10c0109ab72ce Mon Sep 17 00:00:00 2001 From: Yurii Titov Date: Tue, 3 Mar 2026 11:36:33 +0100 Subject: [PATCH 1/2] feat: enable custom not null validation for items inside collection --- .../src/main/templates/boat-spring/beanValidationCore.mustache | 1 + 1 file changed, 1 insertion(+) diff --git a/boat-scaffold/src/main/templates/boat-spring/beanValidationCore.mustache b/boat-scaffold/src/main/templates/boat-spring/beanValidationCore.mustache index 7faf96bc9..1de563a6f 100644 --- a/boat-scaffold/src/main/templates/boat-spring/beanValidationCore.mustache +++ b/boat-scaffold/src/main/templates/boat-spring/beanValidationCore.mustache @@ -1,3 +1,4 @@ +{{#vendorExtensions.x-not-null}}@jakarta.validation.constraints.NotNull{{/vendorExtensions.x-not-null}} {{#pattern}}{{^isByteArray}}@Pattern(regexp = "{{{pattern}}}") {{/isByteArray}}{{/pattern}}{{! minLength && maxLength set }}{{#minLength}}{{#maxLength}}@Size(min = {{minLength}}, max = {{maxLength}}) {{/maxLength}}{{/minLength}}{{! From bb8edcfed4773c96fb384ad22b8dd97ee0d9d2d8 Mon Sep 17 00:00:00 2001 From: Yurii Titov Date: Tue, 3 Mar 2026 17:23:18 +0100 Subject: [PATCH 2/2] fix: add test cases --- .../templates/boat-spring/beanValidationCore.mustache | 2 +- .../test/resources/boat-spring/paths/array-types.yaml | 9 +++++++++ .../test/resources/boat-spring/paths/map-types.yaml | 9 +++++++++ .../test/resources/boat-spring/paths/set-types.yaml | 10 ++++++++++ .../test/resources/boat-spring/paths/simple-types.yaml | 10 ++++++++++ 5 files changed, 39 insertions(+), 1 deletion(-) diff --git a/boat-scaffold/src/main/templates/boat-spring/beanValidationCore.mustache b/boat-scaffold/src/main/templates/boat-spring/beanValidationCore.mustache index 1de563a6f..af85b9dd3 100644 --- a/boat-scaffold/src/main/templates/boat-spring/beanValidationCore.mustache +++ b/boat-scaffold/src/main/templates/boat-spring/beanValidationCore.mustache @@ -1,4 +1,4 @@ -{{#vendorExtensions.x-not-null}}@jakarta.validation.constraints.NotNull{{/vendorExtensions.x-not-null}} +{{#vendorExtensions.x-not-null}}@NotNull{{/vendorExtensions.x-not-null}} {{#pattern}}{{^isByteArray}}@Pattern(regexp = "{{{pattern}}}") {{/isByteArray}}{{/pattern}}{{! minLength && maxLength set }}{{#minLength}}{{#maxLength}}@Size(min = {{minLength}}, max = {{maxLength}}) {{/maxLength}}{{/minLength}}{{! diff --git a/boat-scaffold/src/test/resources/boat-spring/paths/array-types.yaml b/boat-scaffold/src/test/resources/boat-spring/paths/array-types.yaml index 54f86caef..3d00d823e 100644 --- a/boat-scaffold/src/test/resources/boat-spring/paths/array-types.yaml +++ b/boat-scaffold/src/test/resources/boat-spring/paths/array-types.yaml @@ -86,6 +86,15 @@ get: minLength: 1 maxLength: 36 pattern: '^[A-Z]+$' + - name: q-params-not-null + in: query + required: false + schema: + type: array + items: + type: string + x-not-null: true + pattern: '^[A-Z]+$' - name: q-params-set in: query required: false diff --git a/boat-scaffold/src/test/resources/boat-spring/paths/map-types.yaml b/boat-scaffold/src/test/resources/boat-spring/paths/map-types.yaml index 482e7d330..f5067a227 100644 --- a/boat-scaffold/src/test/resources/boat-spring/paths/map-types.yaml +++ b/boat-scaffold/src/test/resources/boat-spring/paths/map-types.yaml @@ -86,6 +86,15 @@ get: minLength: 1 maxLength: 36 pattern: '^[A-Z]+$' + - name: q-params-not-null + in: query + required: false + schema: + type: array + items: + type: string + x-not-null: true + pattern: '^[A-Z]+$' - name: q-params-set in: query required: false diff --git a/boat-scaffold/src/test/resources/boat-spring/paths/set-types.yaml b/boat-scaffold/src/test/resources/boat-spring/paths/set-types.yaml index e80d7c304..d17ced230 100644 --- a/boat-scaffold/src/test/resources/boat-spring/paths/set-types.yaml +++ b/boat-scaffold/src/test/resources/boat-spring/paths/set-types.yaml @@ -97,6 +97,16 @@ get: minLength: 1 maxLength: 36 pattern: '^[A-Z]+$' + - name: q-params-not-null + in: query + required: false + schema: + type: array + uniqueItems: true + items: + type: string + x-not-null: true + pattern: '^[A-Z]+$' - name: q-params-set-req in: query required: true diff --git a/boat-scaffold/src/test/resources/boat-spring/paths/simple-types.yaml b/boat-scaffold/src/test/resources/boat-spring/paths/simple-types.yaml index f347352b0..b3f101348 100644 --- a/boat-scaffold/src/test/resources/boat-spring/paths/simple-types.yaml +++ b/boat-scaffold/src/test/resources/boat-spring/paths/simple-types.yaml @@ -86,6 +86,16 @@ get: minLength: 1 maxLength: 36 pattern: '^[A-Z]+$' + - name: q-params-not-null + in: query + required: false + schema: + type: array + uniqueItems: true + items: + type: string + x-not-null: true + pattern: '^[A-Z]+$' - name: q-params-set in: query required: false