Skip to content

Commit 9a6cdf6

Browse files
Upgrade swagger-core from version 2.2.43 to 2.2.45
1 parent 3e7b337 commit 9a6cdf6

File tree

111 files changed

+1286
-584
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

111 files changed

+1286
-584
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
<central-publishing-maven-plugin.version>0.7.0
5656
</central-publishing-maven-plugin.version>
5757
<flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version>
58-
<swagger-api.version>2.2.43</swagger-api.version>
58+
<swagger-api.version>2.2.45</swagger-api.version>
5959
<swagger-ui.version>5.32.0</swagger-ui.version>
6060
<gmavenplus-plugin.version>1.13.1</gmavenplus-plugin.version>
6161
<jjwt.version>0.9.1</jjwt.version>

springdoc-openapi-starter-common/src/main/java/org/springdoc/core/configuration/SpringDocRequiredModule.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@
3030
import com.fasterxml.jackson.databind.module.SimpleModule;
3131
import io.swagger.v3.core.jackson.SwaggerAnnotationIntrospector;
3232
import io.swagger.v3.oas.annotations.media.Schema;
33-
import org.apache.commons.lang3.StringUtils;
33+
34+
import static org.springdoc.core.utils.SpringDocAnnotationsUtils.hasADefaultValue;
3435

3536
/**
3637
* The type Spring doc required module.
@@ -57,7 +58,7 @@ public Boolean hasRequiredMarker(AnnotatedMember annotatedMember) {
5758
if (schemaAnnotation.required() || requiredMode == Schema.RequiredMode.REQUIRED) {
5859
return true;
5960
}
60-
else if (requiredMode == Schema.RequiredMode.NOT_REQUIRED || StringUtils.isNotEmpty(schemaAnnotation.defaultValue())) {
61+
else if (requiredMode == Schema.RequiredMode.NOT_REQUIRED || hasADefaultValue(schemaAnnotation)) {
6162
return false;
6263
}
6364
}

springdoc-openapi-starter-common/src/main/java/org/springdoc/core/customizers/DataRestDelegatingMethodParameterCustomizer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1122,7 +1122,7 @@ private String getDescription(String parameterName, String originalDescription)
11221122
* @return the default value
11231123
*/
11241124
private String getDefaultValue(String parameterName, PageableDefault pageableDefault, String defaultSchemaVal) {
1125-
String defaultValue = null;
1125+
String defaultValue = defaultSchemaVal;
11261126
switch (parameterName) {
11271127
case "size":
11281128
if (pageableDefault != null) {

springdoc-openapi-starter-common/src/main/java/org/springdoc/core/fn/builders/schema/Builder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ public class Builder {
197197
/**
198198
* Provides a default value.
199199
*/
200-
private String defaultValue = "";
200+
private String defaultValue = Schema.DEFAULT_SENTINEL;
201201

202202
/**
203203
* Provides a discriminator property value.

springdoc-openapi-starter-common/src/main/java/org/springdoc/core/fn/builders/securityrequirement/Builder.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.lang.annotation.Annotation;
3030

3131
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
32+
import io.swagger.v3.oas.annotations.security.SecurityRequirementEntry;
3233

3334
/**
3435
* The type Security requirement builder.
@@ -47,6 +48,12 @@ public class Builder {
4748
*/
4849
private String[] scopes = {};
4950

51+
/**
52+
* If multiple requirements apply at the same time, use this value instead of {@link #name} and {@link #scopes}.
53+
* If any one of multiple security schemes is required, use multiple {@link SecurityRequirement} annotations instead.
54+
* <p>Exactly one of this and {@link #name} must be set.</p>
55+
*/
56+
private SecurityRequirementEntry[] securityRequirementEntries = {};
5057

5158
/**
5259
* Instantiates a new Security requirement builder.
@@ -85,6 +92,17 @@ public Builder scopes(String[] scopes) {
8592
return this;
8693
}
8794

95+
/**
96+
* SecurityRequirementEntries security requirement builder.
97+
*
98+
* @param securityRequirementEntries the securityRequirementEntries
99+
* @return the security requirement builder
100+
*/
101+
public Builder securityRequirementEntries(SecurityRequirementEntry[] securityRequirementEntries) {
102+
this.securityRequirementEntries = securityRequirementEntries;
103+
return this;
104+
}
105+
88106
/**
89107
* Build security requirement.
90108
*
@@ -106,6 +124,11 @@ public String name() {
106124
public String[] scopes() {
107125
return scopes;
108126
}
127+
128+
@Override
129+
public SecurityRequirementEntry[] combine() {
130+
return securityRequirementEntries;
131+
}
109132
};
110133
}
111134
}

springdoc-openapi-starter-common/src/main/java/org/springdoc/core/service/AbstractRequestService.java

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -35,22 +35,10 @@
3535
import java.lang.reflect.Field;
3636
import java.lang.reflect.Method;
3737
import java.security.Principal;
38+
import java.time.LocalDate;
3839
import java.time.ZoneId;
39-
import java.util.ArrayList;
40-
import java.util.Arrays;
41-
import java.util.Collection;
42-
import java.util.Collections;
43-
import java.util.HashMap;
44-
import java.util.Iterator;
45-
import java.util.LinkedHashMap;
46-
import java.util.List;
47-
import java.util.Locale;
48-
import java.util.Map;
40+
import java.util.*;
4941
import java.util.Map.Entry;
50-
import java.util.Objects;
51-
import java.util.Optional;
52-
import java.util.Set;
53-
import java.util.TimeZone;
5442
import java.util.stream.Collectors;
5543
import java.util.stream.Stream;
5644

@@ -639,21 +627,36 @@ public Parameter buildParam(ParameterInfo parameterInfo, Components components,
639627
Schema<?> schema = parameterBuilder.calculateSchema(components, parameterInfo, null,
640628
jsonView);
641629
if (parameterInfo.getDefaultValue() != null && schema != null) {
642-
Object defaultValue = parameterInfo.getDefaultValue();
643-
// Cast default value
644630
PrimitiveType primitiveType = PrimitiveType.fromTypeAndFormat(schema.getType(), schema.getFormat());
645-
if (primitiveType != null) {
646-
Schema<?> primitiveSchema = primitiveType.createProperty();
647-
primitiveSchema.setDefault(parameterInfo.getDefaultValue());
648-
defaultValue = primitiveSchema.getDefault();
649-
}
631+
Object defaultValue = castDefaultValue(primitiveType, parameterInfo.getDefaultValue());
650632
schema.setDefault(defaultValue);
651633
}
652634
parameter.setSchema(schema);
653635
}
654636
return parameter;
655637
}
656638

639+
/**
640+
* Cast the default value so that it matches the {@link PrimitiveType}
641+
*
642+
* @param primitiveType the primitive type
643+
* @param defaultValue the default value
644+
* @return the cast default value
645+
*/
646+
private Object castDefaultValue(PrimitiveType primitiveType, Object defaultValue) {
647+
if (primitiveType != null) {
648+
Schema<?> primitiveSchema = primitiveType.createProperty();
649+
if (primitiveType.equals(PrimitiveType.DATE) && defaultValue instanceof LocalDate localDate) {
650+
defaultValue = localDate.toString();
651+
}
652+
primitiveSchema.setDefault(defaultValue);
653+
if (primitiveSchema.getDefault() != null) {
654+
defaultValue = primitiveSchema.getDefault();
655+
}
656+
}
657+
return defaultValue;
658+
}
659+
657660
/**
658661
* Apply bean validator annotations.
659662
*

springdoc-openapi-starter-common/src/main/java/org/springdoc/core/service/GenericParameterService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ private void setSchema(io.swagger.v3.oas.annotations.Parameter parameterDoc, Com
357357
if (schema == null && parameterDoc.array() != null) {
358358
schema = AnnotationsUtils.getSchema(parameterDoc.schema(), parameterDoc.array(), true, parameterDoc.array().schema().implementation(), components, jsonView, propertyResolverUtils.isOpenapi31()).orElse(null);
359359
// default value not set by swagger-core for array !
360-
if (schema != null) {
360+
if (schema != null && SpringDocAnnotationsUtils.hasADefaultValue(parameterDoc.array().arraySchema())) {
361361
Object defaultValue = SpringDocAnnotationsUtils.resolveDefaultValue(parameterDoc.array().arraySchema().defaultValue(), objectMapperProvider.jsonMapper());
362362
schema.setDefault(defaultValue);
363363
}

springdoc-openapi-starter-common/src/main/java/org/springdoc/core/service/OpenAPIService.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,17 +51,16 @@
5151
import com.fasterxml.jackson.databind.ObjectMapper;
5252
import io.swagger.v3.core.jackson.TypeNameResolver;
5353
import io.swagger.v3.core.util.AnnotationsUtils;
54+
import io.swagger.v3.core.util.Json;
55+
import io.swagger.v3.core.util.Json31;
5456
import io.swagger.v3.oas.annotations.Hidden;
5557
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
5658
import io.swagger.v3.oas.annotations.Webhook;
5759
import io.swagger.v3.oas.annotations.Webhooks;
5860
import io.swagger.v3.oas.annotations.security.SecuritySchemes;
5961
import io.swagger.v3.oas.annotations.tags.Tag;
6062
import io.swagger.v3.oas.annotations.tags.Tags;
61-
import io.swagger.v3.oas.models.Components;
62-
import io.swagger.v3.oas.models.OpenAPI;
63-
import io.swagger.v3.oas.models.Operation;
64-
import io.swagger.v3.oas.models.Paths;
63+
import io.swagger.v3.oas.models.*;
6564
import io.swagger.v3.oas.models.info.Contact;
6665
import io.swagger.v3.oas.models.info.Info;
6766
import io.swagger.v3.oas.models.info.License;
@@ -76,6 +75,7 @@
7675
import org.springdoc.core.customizers.ServerBaseUrlCustomizer;
7776
import org.springdoc.core.properties.SpringDocConfigProperties;
7877
import org.springdoc.core.providers.JavadocProvider;
78+
import org.springdoc.core.providers.ObjectMapperProvider;
7979
import org.springdoc.core.utils.PropertyResolverUtils;
8080

8181
import org.springframework.beans.BeansException;
@@ -247,7 +247,7 @@ public OpenAPI build(Locale locale) {
247247
calculatedOpenAPI.setPaths(new Paths());
248248
}
249249
else {
250-
calculatedOpenAPI = cloneViaJson(openAPI, OpenAPI.class, new ObjectMapper());
250+
calculatedOpenAPI = cloneViaJson(openAPI, OpenAPI.class, ObjectMapperProvider.createJson(springDocConfigProperties));
251251
}
252252

253253
if (apiDef.isPresent()) {

springdoc-openapi-starter-common/src/main/java/org/springdoc/core/utils/SpringDocAnnotationsUtils.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,16 @@ private static boolean isArray(io.swagger.v3.oas.annotations.media.Content annot
468468
return isArray;
469469
}
470470

471+
/**
472+
* Whether the schema has defined a default value.
473+
*
474+
* @param schema The schema annotation
475+
* @return Whether the schema annotation has defined a default value
476+
*/
477+
public static boolean hasADefaultValue(io.swagger.v3.oas.annotations.media.Schema schema) {
478+
return schema != null && !schema.defaultValue().equals(io.swagger.v3.oas.annotations.media.Schema.DEFAULT_SENTINEL);
479+
}
480+
471481
/**
472482
* Resolve default value object.
473483
*
@@ -519,7 +529,7 @@ public static Optional<Map<String, Header>> getHeaders(io.swagger.v3.oas.annotat
519529
public static void clearCache(JavadocProvider javadocProvider) {
520530
if (javadocProvider != null)
521531
javadocProvider.clearCache();
522-
MODEL_CONVERTER_CONTEXT_MAP.remove();;
532+
MODEL_CONVERTER_CONTEXT_MAP.remove();
523533
}
524534

525535
/**

springdoc-openapi-starter-webflux-api/src/test/resources/results/3.0.1/app102.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
"in": "query",
2424
"required": false,
2525
"schema": {
26-
"type": "string"
26+
"type": "string",
27+
"nullable": true
2728
}
2829
},
2930
{
@@ -86,7 +87,8 @@
8687
"in": "query",
8788
"required": false,
8889
"schema": {
89-
"type": "string"
90+
"type": "string",
91+
"nullable": true
9092
}
9193
},
9294
{

0 commit comments

Comments
 (0)