Skip to content

Commit d34ab27

Browse files
committed
Revert "Automatically add required if a field is @NotNull or @notblank. Fixes springdoc#2817"
This reverts commit 39ef9f4.
1 parent 280905b commit d34ab27

File tree

3 files changed

+14
-27
lines changed

3 files changed

+14
-27
lines changed

springdoc-openapi-starter-common/src/main/java/org/springdoc/core/extractor/MethodParameterPojoExtractor.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -159,12 +159,11 @@ private static Stream<MethodParameter> fromGetterOfField(Class<?> paramClass, Fi
159159
return Stream.empty();
160160
}
161161
String prefix = fieldNamePrefix + resolveName(parameter, schema).orElse(field.getName()) + DOT;
162-
Set<String> annotationSimpleNames = Arrays.stream(field.getDeclaredAnnotations())
162+
boolean notNullAnnotationsPresent = AbstractRequestService.hasNotNullAnnotation(Arrays.stream(field.getDeclaredAnnotations())
163163
.map(Annotation::annotationType)
164164
.map(Class::getSimpleName)
165-
.collect(Collectors.toSet());
166-
boolean notNullAnnotationsPresent = AbstractRequestService.hasNotNullAnnotation(annotationSimpleNames);
167-
return extractFrom(type, prefix, resolveRequired(schema, parameter, !notNullAnnotationsPresent));
165+
.collect(Collectors.toSet()));
166+
return extractFrom(type, prefix, parentRequired && resolveRequired(schema, parameter, !notNullAnnotationsPresent));
168167
}
169168
}
170169

@@ -271,12 +270,10 @@ private static Stream<MethodParameter> fromSimpleClass(Class<?> paramClass, Fiel
271270
return Stream.empty();
272271
}
273272

274-
Set<String> annotationSimpleNames = Arrays.stream(field.getDeclaredAnnotations())
273+
boolean isNotRequired = !(isParentRequired && resolveRequired(schema, parameter, !AbstractRequestService.hasNotNullAnnotation(Arrays.stream(fieldAnnotations)
275274
.map(Annotation::annotationType)
276275
.map(Class::getSimpleName)
277-
.collect(Collectors.toSet());
278-
279-
boolean isNotRequired = !resolveRequired(schema, parameter, !AbstractRequestService.hasNotNullAnnotation(annotationSimpleNames));
276+
.collect(Collectors.toSet()))));
280277
Annotation[] notNullFieldAnnotations = Arrays.stream(fieldAnnotations)
281278
.filter(annotation -> AbstractRequestService.hasNotNullAnnotation(List.of(annotation.annotationType().getSimpleName())))
282279
.toArray(Annotation[]::new);

springdoc-openapi-starter-webmvc-api/src/test/java/test/org/springdoc/api/v30/app233/ParameterController.java

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727

2828
import io.swagger.v3.oas.annotations.Parameter;
2929
import io.swagger.v3.oas.annotations.media.Schema;
30-
import jakarta.validation.constraints.NotBlank;
3130
import jakarta.validation.constraints.NotNull;
3231
import org.springdoc.core.annotations.ParameterObject;
3332

@@ -73,24 +72,15 @@ public void nestedParameterObjectWithOptionalParentField(@ParameterObject Parame
7372
}
7473

7574
public record ParameterObjectWithOptionalField(
76-
NestedRequiredParameterObject schemaNotRequiredNestedParameterObject,
77-
NestedNonNullParameterObject nestedNonNullParameterObject,
78-
NestedNotBlankParameterObject nestedNotBlankParameterObject
75+
@Schema(requiredMode = Schema.RequiredMode.NOT_REQUIRED) NestedRequiredParameterObject schemaNotRequiredNestedParameterObject,
76+
@Parameter NestedRequiredParameterObject parameterNotRequiredNestedParameterObject,
77+
@Parameter(required = true) NestedRequiredParameterObject requiredNestedParameterObject
7978
) {
8079

8180
}
8281

8382
public record NestedRequiredParameterObject(
84-
@Schema(requiredMode = Schema.RequiredMode.REQUIRED) String requiredParameterField) {
83+
@Schema(requiredMode = Schema.RequiredMode.REQUIRED) @NotNull String requiredParameterField) {
8584
}
8685

87-
public record NestedNonNullParameterObject(
88-
@NotNull String requiredParameterField) {
89-
}
90-
91-
public record NestedNotBlankParameterObject(
92-
@NotBlank String requiredParameterField) {
93-
}
94-
95-
9686
}

springdoc-openapi-starter-webmvc-api/src/test/resources/results/3.0.1/app233.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,21 +60,21 @@
6060
{
6161
"name": "schemaNotRequiredNestedParameterObject.requiredParameterField",
6262
"in": "query",
63-
"required": true,
63+
"required": false,
6464
"schema": {
6565
"type": "string"
6666
}
6767
},
6868
{
69-
"name": "nestedNonNullParameterObject.requiredParameterField",
69+
"name": "parameterNotRequiredNestedParameterObject.requiredParameterField",
7070
"in": "query",
71-
"required": true,
71+
"required": false,
7272
"schema": {
7373
"type": "string"
7474
}
7575
},
7676
{
77-
"name": "nestedNotBlankParameterObject.requiredParameterField",
77+
"name": "requiredNestedParameterObject.requiredParameterField",
7878
"in": "query",
7979
"required": true,
8080
"schema": {
@@ -114,4 +114,4 @@
114114
}
115115
},
116116
"components": {}
117-
}
117+
}

0 commit comments

Comments
 (0)