Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
59c67f2
Merge pull request #4 from OpenAPITools/master
jpfinne May 11, 2026
784da69
Merge branch 'OpenAPITools:master' into master
jpfinne May 12, 2026
9ee6075
Merge branch 'OpenAPITools:master' into master
jpfinne May 14, 2026
91ce7ba
Merge branch 'OpenAPITools:master' into master
jpfinne May 15, 2026
0808d0e
Merge branch 'OpenAPITools:master' into master
jpfinne May 17, 2026
46d9c9c
Merge branch 'OpenAPITools:master' into master
jpfinne May 18, 2026
7b6cf90
Merge branch 'OpenAPITools:master' into master
jpfinne May 30, 2026
b50a337
Merge branch 'OpenAPITools:master' into master
jpfinne Jun 1, 2026
ae1bff7
Merge branch 'OpenAPITools:master' into master
jpfinne Jun 2, 2026
5229d8d
Merge branch 'OpenAPITools:master' into master
jpfinne Jun 3, 2026
cdc74eb
Merge branch 'OpenAPITools:master' into master
jpfinne Jun 13, 2026
df30bd2
Merge branch 'OpenAPITools:master' into master
jpfinne Jul 4, 2026
246b21d
Merge branch 'OpenAPITools:master' into master
jpfinne Jul 8, 2026
8e39563
Merge branch 'OpenAPITools:master' into master
jpfinne Aug 1, 2026
deec130
Merge branch 'OpenAPITools:master' into master
jpfinne Aug 4, 2026
da9270c
Merge branch 'OpenAPITools:master' into master
jpfinne Aug 8, 2026
7e4ce22
Merge branch 'OpenAPITools:master' into master
jpfinne Aug 8, 2026
4f55095
Merge branch 'OpenAPITools:master' into master
jpfinne Aug 9, 2026
a614eb2
Merge branch 'OpenAPITools:master' into master
jpfinne Aug 10, 2026
e8f0a38
Merge branch 'OpenAPITools:master' into master
jpfinne Aug 13, 2026
8199a48
Merge branch 'OpenAPITools:master' into master
jpfinne Aug 18, 2026
4757c1f
Merge branch 'OpenAPITools:master' into master
jpfinne Aug 19, 2026
a410286
Fix spring-http-interface @Nullable if default
jpfinne Aug 19, 2026
16f02cc
Force build
jpfinne Aug 20, 2026
61eb6bf
Force build
jpfinne Aug 20, 2026
455affe
Refactoring of nullableAnnotation -> nullable_apiArgument for api par…
jpfinne Aug 20, 2026
9d1fc7d
Refactoring of nullableAnnotation -> nullable_apiArgument for api par…
jpfinne Aug 20, 2026
5d162d1
fix double @Nullable
jpfinne Aug 20, 2026
fb38a0c
Revert missing test
jpfinne Aug 20, 2026
c2003fa
Better default vs !default
jpfinne Aug 21, 2026
0923570
Fix typo
jpfinne Aug 21, 2026
4e821b1
Force build
jpfinne Aug 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{{#isBodyParam}}{{>paramDoc}}{{#useBeanValidation}} {{>beanValidationBodyParams}}@Valid{{/useBeanValidation}} @RequestBody{{^required}}(required = false){{/required}} {{^reactive}}{{>nullableAnnotation}}{{>optionalDataType}}{{/reactive}}{{#reactive}}{{^isArray}}Mono<{{{dataType}}}>{{/isArray}}{{#isArray}}Flux<{{{baseType}}}>{{/isArray}}{{/reactive}} {{paramName}}{{/isBodyParam}}
{{#isBodyParam}}{{>paramDoc}}{{#useBeanValidation}} {{>beanValidationBodyParams}}@Valid{{/useBeanValidation}} @RequestBody{{^required}}(required = false){{/required}} {{^reactive}}{{>nullableAnnotation_apiArgument}}{{>optionalDataType}}{{/reactive}}{{#reactive}}{{^isArray}}Mono<{{{dataType}}}>{{/isArray}}{{#isArray}}Flux<{{{baseType}}}>{{/isArray}}{{/reactive}} {{paramName}}{{/isBodyParam}}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{{#isCookieParam}}{{#useBeanValidation}}{{>beanValidationQueryParams}}{{/useBeanValidation}}{{>paramDoc}} @CookieValue(name = "{{baseName}}"{{^required}}, required = false{{/required}}{{#defaultValue}}, defaultValue = "{{{.}}}"{{/defaultValue}}){{>dateTimeParam}} {{>nullableAnnotation}}{{>optionalDataType}} {{paramName}}{{/isCookieParam}}
{{#isCookieParam}}{{#useBeanValidation}}{{>beanValidationQueryParams}}{{/useBeanValidation}}{{>paramDoc}} @CookieValue(name = "{{baseName}}"{{^required}}, required = false{{/required}}{{#defaultValue}}, defaultValue = "{{{.}}}"{{/defaultValue}}){{>dateTimeParam}} {{>nullableAnnotation_apiArgument}}{{>optionalDataType}} {{paramName}}{{/isCookieParam}}
Comment thread
jpfinne marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{{#isHeaderParam}}{{#vendorExtensions.x-field-extra-annotation}}{{{.}}} {{/vendorExtensions.x-field-extra-annotation}}{{#useBeanValidation}}{{>beanValidationQueryParams}}{{/useBeanValidation}}{{>paramDoc}} @RequestHeader(value = "{{baseName}}", required = {{#required}}true{{/required}}{{^required}}false{{/required}}{{#defaultValue}}, defaultValue = "{{{.}}}"{{/defaultValue}}){{>dateTimeParam}} {{>nullableAnnotation}}{{>optionalDataType}} {{paramName}}{{/isHeaderParam}}
{{#isHeaderParam}}{{#vendorExtensions.x-field-extra-annotation}}{{{.}}} {{/vendorExtensions.x-field-extra-annotation}}{{#useBeanValidation}}{{>beanValidationQueryParams}}{{/useBeanValidation}}{{>paramDoc}} @RequestHeader(value = "{{baseName}}", required = {{#required}}true{{/required}}{{^required}}false{{/required}}{{#defaultValue}}, defaultValue = "{{{.}}}"{{/defaultValue}}){{>dateTimeParam}} {{>nullableAnnotation_apiArgument}}{{>optionalDataType}} {{paramName}}{{/isHeaderParam}}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{{#lambda.jSpecifyNullable}}{{#defaultValue}}@Nullable {{/defaultValue}}{{^defaultValue}}{{^required}}{{^useOptional}}{{#openApiNullable}}{{^isNullable}}@Nullable {{/isNullable}}{{/openApiNullable}}{{^openApiNullable}}@Nullable {{/openApiNullable}}{{/useOptional}}{{/required}}{{/defaultValue}}{{/lambda.jSpecifyNullable}}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{{#paramName}}{{>nullableAnnotation_default}}{{/paramName}}{{^paramName}}{{>nullableAnnotation_jspecify}}{{^useJspecify}}{{!backward compatibility}}{{>nullableAnnotation_default}}{{/useJspecify}}{{/paramName}}
{{#useJspecify}}{{>nullableAnnotation_jspecify}}{{/useJspecify}}{{^useJspecify}}{{!backward compatibility}}{{>nullableAnnotation_default}}{{/useJspecify}}
Comment thread
jpfinne marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{{#lambda.jSpecifyNullable}}{{^required}}{{^defaultValue}}{{^useOptional}}{{#openApiNullable}}{{^isNullable}}@Nullable {{/isNullable}}{{/openApiNullable}}{{^openApiNullable}}@Nullable {{/openApiNullable}}{{/useOptional}}{{/defaultValue}}{{#defaultValue}}{{^openApiNullable}}{{#isNullable}}@Nullable {{/isNullable}}{{/openApiNullable}}{{/defaultValue}}{{/required}}{{/lambda.jSpecifyNullable}}
Comment thread
jpfinne marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{{#useJspecify}}{{#lambda.jSpecifyNullable}}{{#required}}{{#isNullable}}{{^openApiNullable}}@Nullable {{/openApiNullable}}{{/isNullable}}{{/required}}{{^required}}{{^useOptional}}{{#openApiNullable}}{{^isNullable}}@Nullable {{/isNullable}}{{/openApiNullable}}{{^openApiNullable}}@Nullable {{/openApiNullable}}{{/useOptional}}{{/required}}{{/lambda.jSpecifyNullable}}{{/useJspecify}}
{{#lambda.jSpecifyNullable}}{{#required}}{{#isNullable}}{{^openApiNullable}}@Nullable {{/openApiNullable}}{{/isNullable}}{{/required}}{{^required}}{{^useOptional}}{{#openApiNullable}}{{^isNullable}}@Nullable {{/isNullable}}{{/openApiNullable}}{{^openApiNullable}}@Nullable {{/openApiNullable}}{{/useOptional}}{{/required}}{{/lambda.jSpecifyNullable}}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{{#isPathParam}}{{#vendorExtensions.x-field-extra-annotation}}{{{.}}} {{/vendorExtensions.x-field-extra-annotation}}{{#useBeanValidation}}{{>beanValidationPathParams}}{{/useBeanValidation}}{{>paramDoc}} @PathVariable("{{baseName}}"){{>dateTimeParam}}{{#isDeprecated}} @Deprecated{{/isDeprecated}} {{>nullableAnnotation}}{{>optionalDataType}} {{paramName}}{{/isPathParam}}
{{#isPathParam}}{{#vendorExtensions.x-field-extra-annotation}}{{{.}}} {{/vendorExtensions.x-field-extra-annotation}}{{#useBeanValidation}}{{>beanValidationPathParams}}{{/useBeanValidation}}{{>paramDoc}} @PathVariable("{{baseName}}"){{>dateTimeParam}}{{#isDeprecated}} @Deprecated{{/isDeprecated}} {{>nullableAnnotation_apiArgument}}{{>optionalDataType}} {{paramName}}{{/isPathParam}}
Comment thread
jpfinne marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{{#isQueryParam}}{{#vendorExtensions.x-field-extra-annotation}}{{{.}}} {{/vendorExtensions.x-field-extra-annotation}}{{#useBeanValidation}}{{>beanValidationQueryParams}}{{/useBeanValidation}}{{>paramDoc}}{{#useBeanValidation}} @Valid{{/useBeanValidation}}{{^isModel}} @RequestParam(value = {{#isMap}}""{{/isMap}}{{^isMap}}"{{baseName}}"{{/isMap}}{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}{{#defaultValue}}, defaultValue = "{{{.}}}"{{/defaultValue}}){{/isModel}}{{>dateTimeParam}}{{#isDeprecated}} @Deprecated{{/isDeprecated}} {{>nullableAnnotation}}{{>optionalDataType}} {{paramName}}{{/isQueryParam}}
{{#isQueryParam}}{{#vendorExtensions.x-field-extra-annotation}}{{{.}}} {{/vendorExtensions.x-field-extra-annotation}}{{#useBeanValidation}}{{>beanValidationQueryParams}}{{/useBeanValidation}}{{>paramDoc}}{{#useBeanValidation}} @Valid{{/useBeanValidation}}{{^isModel}} @RequestParam(value = {{#isMap}}""{{/isMap}}{{^isMap}}"{{baseName}}"{{/isMap}}{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}{{#defaultValue}}, defaultValue = "{{{.}}}"{{/defaultValue}}){{/isModel}}{{>dateTimeParam}}{{#isDeprecated}} @Deprecated{{/isDeprecated}} {{>nullableAnnotation_apiArgument}}{{>optionalDataType}} {{paramName}}{{/isQueryParam}}
Original file line number Diff line number Diff line change
Expand Up @@ -7184,14 +7184,22 @@ public void testJspecify(String library, int springBootVersion) throws IOExcepti
"javax.annotation.Nullable",
"jakarta.annotation.Nullable")
.assertMethod("getRequiredDt").assertMethodAnnotations().containsWithName("NotNull").containsWithName("Valid");
Comment thread
cubic-dev-ai[bot] marked this conversation as resolved.
JavaFileAssert.assertThat(files.get("FooApi.java"))
JavaFileAssert fooApiAssert = JavaFileAssert.assertThat(files.get("FooApi.java"))
.assertTypeAnnotations().doesImportAnnotation("org.jspecify.annotations.Nullable").toType()
.fileContains(
"java.time.@Nullable Instant dtParam",
"java.time.@Nullable Instant dtQuery",
"java.time.@Nullable Instant dtCookie",
" @RequestParam(value = \"color\", required = false, defaultValue = \"red\") String color"
);
"java.time.@Nullable Instant dtCookie");

// SPRING_HTTP_INTERFACE has other requirements for default in api arguments
if (SPRING_HTTP_INTERFACE.equals(library)) {
Comment thread
cubic-dev-ai[bot] marked this conversation as resolved.
fooApiAssert.fileContains(
"@RequestParam(value = \"color\", required = false, defaultValue = \"red\") @Nullable String color");
} else {
fooApiAssert.fileContains(
"@RequestParam(value = \"color\", required = false, defaultValue = \"red\") String color");
}

JavaFileAssert.assertThat(files.get("RequiredAndNullable.java"))
.fileContains(
"private @Nullable String str = null;",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -248,9 +248,9 @@ ResponseEntity<Void> testEndpointParameters(
)
ResponseEntity<Void> testEnumParameters(
@RequestHeader(value = "enum_header_string_array", required = false) @Nullable List<String> enumHeaderStringArray,
@RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") String enumHeaderString,
@RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") @Nullable String enumHeaderString,
@Valid @RequestParam(value = "enum_query_string_array", required = false) @Nullable List<String> enumQueryStringArray,
@Valid @RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") String enumQueryString,
@Valid @RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") @Nullable String enumQueryString,
@Valid @RequestParam(value = "enum_query_integer", required = false) @Nullable Integer enumQueryInteger,
@Valid @RequestParam(value = "enum_query_double", required = false) @Nullable Double enumQueryDouble,
@Valid @RequestPart(value = "enum_form_string_array", required = false) List<String> enumFormStringArray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -255,9 +255,9 @@ void testEndpointParameters(
)
void testEnumParameters(
@RequestHeader(value = "enum_header_string_array", required = false) @Nullable List<String> enumHeaderStringArray,
@RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") String enumHeaderString,
@RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") @Nullable String enumHeaderString,
@RequestParam(value = "enum_query_string_array", required = false) @Nullable List<String> enumQueryStringArray,
@RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") String enumQueryString,
@RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") @Nullable String enumQueryString,
@RequestParam(value = "enum_query_integer", required = false) @Nullable Integer enumQueryInteger,
@RequestParam(value = "enum_query_double", required = false) @Nullable Double enumQueryDouble,
@RequestPart(value = "enum_form_string_array", required = false) List<String> enumFormStringArray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -252,9 +252,9 @@ Mono<ResponseEntity<Void>> testEndpointParameters(
)
Mono<ResponseEntity<Void>> testEnumParameters(
@RequestHeader(value = "enum_header_string_array", required = false) @Nullable List<String> enumHeaderStringArray,
@RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") String enumHeaderString,
@RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") @Nullable String enumHeaderString,
@Valid @RequestParam(value = "enum_query_string_array", required = false) @Nullable List<String> enumQueryStringArray,
@Valid @RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") String enumQueryString,
@Valid @RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") @Nullable String enumQueryString,
@Valid @RequestParam(value = "enum_query_integer", required = false) @Nullable Integer enumQueryInteger,
@Valid @RequestParam(value = "enum_query_double", required = false) @Nullable Double enumQueryDouble,
@Valid @RequestPart(value = "enum_form_string_array", required = false) List<String> enumFormStringArray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -259,9 +259,9 @@ Mono<Void> testEndpointParameters(
)
Mono<Void> testEnumParameters(
@RequestHeader(value = "enum_header_string_array", required = false) @Nullable List<String> enumHeaderStringArray,
@RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") String enumHeaderString,
@RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") @Nullable String enumHeaderString,
@RequestParam(value = "enum_query_string_array", required = false) @Nullable List<String> enumQueryStringArray,
@RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") String enumQueryString,
@RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") @Nullable String enumQueryString,
@RequestParam(value = "enum_query_integer", required = false) @Nullable Integer enumQueryInteger,
@RequestParam(value = "enum_query_double", required = false) @Nullable Double enumQueryDouble,
@RequestPart(value = "enum_form_string_array", required = false) List<String> enumFormStringArray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -249,9 +249,9 @@ Mono<ResponseEntity<Void>> testEndpointParameters(
)
Mono<ResponseEntity<Void>> testEnumParameters(
@RequestHeader(value = "enum_header_string_array", required = false) @Nullable List<String> enumHeaderStringArray,
@RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") String enumHeaderString,
@RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") @Nullable String enumHeaderString,
@RequestParam(value = "enum_query_string_array", required = false) @Nullable List<String> enumQueryStringArray,
@RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") String enumQueryString,
@RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") @Nullable String enumQueryString,
@RequestParam(value = "enum_query_integer", required = false) @Nullable Integer enumQueryInteger,
@RequestParam(value = "enum_query_double", required = false) @Nullable Double enumQueryDouble,
@RequestPart(value = "enum_form_string_array", required = false) List<String> enumFormStringArray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -248,9 +248,9 @@ ResponseEntity<Void> testEndpointParameters(
)
ResponseEntity<Void> testEnumParameters(
@RequestHeader(value = "enum_header_string_array", required = false) @Nullable List<String> enumHeaderStringArray,
@RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") String enumHeaderString,
@RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") @Nullable String enumHeaderString,
@Valid @RequestParam(value = "enum_query_string_array", required = false) @Nullable List<String> enumQueryStringArray,
@Valid @RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") String enumQueryString,
@Valid @RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") @Nullable String enumQueryString,
@Valid @RequestParam(value = "enum_query_integer", required = false) @Nullable Integer enumQueryInteger,
@Valid @RequestParam(value = "enum_query_double", required = false) @Nullable Double enumQueryDouble,
@Valid @RequestPart(value = "enum_form_string_array", required = false) List<String> enumFormStringArray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -248,9 +248,9 @@ ResponseEntity<Void> testEndpointParameters(
)
ResponseEntity<Void> testEnumParameters(
@RequestHeader(value = "enum_header_string_array", required = false) @Nullable List<String> enumHeaderStringArray,
@RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") String enumHeaderString,
@RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") @Nullable String enumHeaderString,
@Valid @RequestParam(value = "enum_query_string_array", required = false) @Nullable List<String> enumQueryStringArray,
@Valid @RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") String enumQueryString,
@Valid @RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") @Nullable String enumQueryString,
@Valid @RequestParam(value = "enum_query_integer", required = false) @Nullable Integer enumQueryInteger,
@Valid @RequestParam(value = "enum_query_double", required = false) @Nullable Double enumQueryDouble,
@Valid @RequestPart(value = "enum_form_string_array", required = false) List<String> enumFormStringArray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -245,9 +245,9 @@ ResponseEntity<Void> testEndpointParameters(
)
ResponseEntity<Void> testEnumParameters(
@RequestHeader(value = "enum_header_string_array", required = false) @Nullable List<String> enumHeaderStringArray,
@RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") String enumHeaderString,
@RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") @Nullable String enumHeaderString,
@RequestParam(value = "enum_query_string_array", required = false) @Nullable List<String> enumQueryStringArray,
@RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") String enumQueryString,
@RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") @Nullable String enumQueryString,
@RequestParam(value = "enum_query_integer", required = false) @Nullable Integer enumQueryInteger,
@RequestParam(value = "enum_query_double", required = false) @Nullable Double enumQueryDouble,
@RequestPart(value = "enum_form_string_array", required = false) List<String> enumFormStringArray,
Expand Down
Loading