1
1
package org .springdoc .core .utils ;
2
2
3
+ import java .lang .annotation .Annotation ;
4
+ import java .lang .reflect .Field ;
5
+ import java .math .BigDecimal ;
6
+ import java .util .Arrays ;
7
+ import java .util .Collection ;
8
+ import java .util .HashSet ;
9
+ import java .util .List ;
10
+ import java .util .Optional ;
11
+ import java .util .OptionalDouble ;
12
+ import java .util .OptionalInt ;
13
+ import java .util .OptionalLong ;
14
+ import java .util .Set ;
15
+ import java .util .stream .Collectors ;
16
+
3
17
import io .swagger .v3 .oas .annotations .Parameter ;
18
+ import io .swagger .v3 .oas .annotations .media .Schema .RequiredMode ;
4
19
import io .swagger .v3 .oas .models .media .Schema ;
5
- import jakarta .validation .constraints .*;
20
+ import jakarta .validation .constraints .DecimalMax ;
21
+ import jakarta .validation .constraints .DecimalMin ;
22
+ import jakarta .validation .constraints .Max ;
23
+ import jakarta .validation .constraints .Min ;
24
+ import jakarta .validation .constraints .NegativeOrZero ;
25
+ import jakarta .validation .constraints .Pattern ;
26
+ import jakarta .validation .constraints .PositiveOrZero ;
27
+ import jakarta .validation .constraints .Size ;
6
28
import kotlin .reflect .KProperty ;
7
29
import kotlin .reflect .jvm .ReflectJvmMapping ;
30
+
8
31
import org .springframework .core .KotlinDetector ;
9
32
import org .springframework .lang .Nullable ;
10
33
11
- import java .lang .annotation .Annotation ;
12
- import java .lang .reflect .Field ;
13
- import java .math .BigDecimal ;
14
- import java .util .*;
15
- import java .util .stream .Collectors ;
16
-
17
34
import static org .springdoc .core .utils .Constants .OPENAPI_ARRAY_TYPE ;
18
35
import static org .springdoc .core .utils .Constants .OPENAPI_STRING_TYPE ;
19
36
@@ -77,7 +94,7 @@ public static boolean swaggerVisible(@Nullable io.swagger.v3.oas.annotations.med
77
94
* @param schema the schema
78
95
* @param parameter the parameter
79
96
* @return the boolean or {@code null}
80
- * @see io.swagger.v3.oas.annotations. Parameter#required()
97
+ * @see Parameter#required()
81
98
* @see io.swagger.v3.oas.annotations.media.Schema#required()
82
99
* @see io.swagger.v3.oas.annotations.media.Schema#requiredMode()
83
100
*/
@@ -89,10 +106,10 @@ public static Boolean swaggerRequired(@Nullable io.swagger.v3.oas.annotations.me
89
106
}
90
107
if (schema != null ) {
91
108
if (schema .required ()
92
- || schema .requiredMode () == io . swagger . v3 . oas . annotations . media . Schema . RequiredMode .REQUIRED ) {
109
+ || schema .requiredMode () == RequiredMode .REQUIRED ) {
93
110
return true ;
94
111
}
95
- if (schema .requiredMode () == io . swagger . v3 . oas . annotations . media . Schema . RequiredMode .NOT_REQUIRED ) {
112
+ if (schema .requiredMode () == RequiredMode .NOT_REQUIRED ) {
96
113
return false ;
97
114
}
98
115
}
@@ -146,7 +163,7 @@ public static boolean fieldNullable(Field field) {
146
163
* @param schema the schema
147
164
* @param parameter the parameter
148
165
* @return the boolean
149
- * @see io.swagger.v3.oas.annotations. Parameter#required()
166
+ * @see Parameter#required()
150
167
* @see io.swagger.v3.oas.annotations.media.Schema#required()
151
168
* @see io.swagger.v3.oas.annotations.media.Schema#requiredMode()
152
169
*/
@@ -203,11 +220,14 @@ public static void applyValidationsToSchema(Schema<?> schema, List<Annotation> a
203
220
}
204
221
}
205
222
if (annotationName .equals (Size .class .getSimpleName ())) {
206
- if (OPENAPI_ARRAY_TYPE .equals (schema .getType ())) {
223
+ String type = schema .getType ();
224
+ if (type == null && schema .getTypes () != null && schema .getTypes ().size () == 1 )
225
+ type = schema .getTypes ().iterator ().next ();
226
+ if (OPENAPI_ARRAY_TYPE .equals (type )) {
207
227
schema .setMinItems (((Size ) anno ).min ());
208
228
schema .setMaxItems (((Size ) anno ).max ());
209
229
}
210
- else if (OPENAPI_STRING_TYPE .equals (schema . getType () )) {
230
+ else if (OPENAPI_STRING_TYPE .equals (type )) {
211
231
schema .setMinLength (((Size ) anno ).min ());
212
232
schema .setMaxLength (((Size ) anno ).max ());
213
233
}
0 commit comments