diff --git a/README.md b/README.md index 0cd3191a9..0ae168b35 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,10 @@ It currently consists of # Release Notes BOAT is still under development and subject to change. + +## 0.17.75 +* Added support for type-level validation in collections via the `x-not-null` vendor extension to allow `@NotNull` annotations on generic type arguments. + ## 0.17.74 * Swift5: Removed deprecated initializer from model objects. The initializer is now internal and only accessible through the Builder pattern, preventing breaking code from deprecation warnings. diff --git a/boat-scaffold/src/main/templates/boat-spring/beanValidationCore.mustache b/boat-scaffold/src/main/templates/boat-spring/beanValidationCore.mustache index 7faf96bc9..af85b9dd3 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}}@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