Skip to content

Commit c2e1710

Browse files
committed
Upgrade swagger-core from version 2.2.43 to 2.2.45 - fixes #3245
1 parent fa4114d commit c2e1710

File tree

81 files changed

+27215
-26427
lines changed

Some content is hidden

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

81 files changed

+27215
-26427
lines changed

pom.xml

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

springdoc-openapi-starter-common/src/main/java/org/springdoc/api/AbstractOpenApiResource.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,9 @@ protected OpenAPI getOpenApi(String serverBaseUrl, Locale locale) {
402402
}
403403
getPaths(mappingsMap, finalLocale, openAPI);
404404

405+
if (OpenApiVersion.OPENAPI_3_1 == springDocConfigProperties.getApiDocs().getVersion())
406+
handleComponentSchemaTypes(openAPI);
407+
405408
if (springDocConfigProperties.isTrimKotlinIndent())
406409
this.trimIndent(openAPI);
407410

@@ -472,6 +475,20 @@ private void trimIndent(OpenAPI openAPI) {
472475
trimPaths(openAPI);
473476
}
474477

478+
/**
479+
* Fix component schemas for OAS 3.1 post-processing.
480+
*
481+
* @param openAPI the open api
482+
*/
483+
private static void handleComponentSchemaTypes(OpenAPI openAPI) {
484+
if (openAPI.getComponents() == null || openAPI.getComponents().getSchemas() == null) {
485+
return;
486+
}
487+
for (Schema<?> schema : openAPI.getComponents().getSchemas().values()) {
488+
SpringDocUtils.fixNullOnlyAdditionalProperties(schema);
489+
}
490+
}
491+
475492
/**
476493
* Trim the indent for descriptions in the 'components' of open api.
477494
*

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public Boolean hasRequiredMarker(AnnotatedMember annotatedMember) {
5757
if (schemaAnnotation.required() || requiredMode == Schema.RequiredMode.REQUIRED) {
5858
return true;
5959
}
60-
else if (requiredMode == Schema.RequiredMode.NOT_REQUIRED || StringUtils.isNotEmpty(schemaAnnotation.defaultValue())) {
60+
else if (requiredMode == Schema.RequiredMode.NOT_REQUIRED || (StringUtils.isNotEmpty(schemaAnnotation.defaultValue()) && !Schema.DEFAULT_SENTINEL.equals(schemaAnnotation.defaultValue()))) {
6161
return false;
6262
}
6363
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,8 @@ public String[] allowableValues() {
366366

367367
@Override
368368
public String defaultValue() {
369-
return getDefaultValue(parameterName, pageableDefault, parameterSchema.defaultValue());
369+
String defaultValue = getDefaultValue(parameterName, pageableDefault, parameterSchema.defaultValue());
370+
return defaultValue != null ? defaultValue : io.swagger.v3.oas.annotations.media.Schema.DEFAULT_SENTINEL;
370371
}
371372

372373
@Override
@@ -757,8 +758,8 @@ public String[] allowableValues() {
757758

758759
@Override
759760
public String defaultValue() {
760-
return getArrayDefaultValue(parameterName, pageableDefault, sortDefault, schema.defaultValue());
761-
761+
String defaultValue = getArrayDefaultValue(parameterName, pageableDefault, sortDefault, schema.defaultValue());
762+
return defaultValue != null ? defaultValue : io.swagger.v3.oas.annotations.media.Schema.DEFAULT_SENTINEL;
762763
}
763764

764765
@Override

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: 6 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.
@@ -106,6 +107,11 @@ public String name() {
106107
public String[] scopes() {
107108
return scopes;
108109
}
110+
111+
@Override
112+
public SecurityRequirementEntry[] combine() {
113+
return new SecurityRequirementEntry[0];
114+
}
109115
};
110116
}
111117
}

springdoc-openapi-starter-common/src/main/java/org/springdoc/core/providers/ObjectMapperProvider.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import io.swagger.v3.core.util.Yaml;
3636
import io.swagger.v3.core.util.Yaml31;
3737
import io.swagger.v3.oas.models.OpenAPI;
38+
import io.swagger.v3.core.util.PrimitiveType;
3839
import io.swagger.v3.oas.models.media.Schema;
3940
import org.springdoc.core.mixins.SortedOpenAPIMixin;
4041
import org.springdoc.core.mixins.SortedOpenAPIMixin31;
@@ -80,10 +81,14 @@ public ObjectMapperProvider(SpringDocConfigProperties springDocConfigProperties)
8081
if (springDocConfigProperties.isExplicitObjectSchema()) {
8182
System.setProperty(Schema.EXPLICIT_OBJECT_SCHEMA_PROPERTY, "true");
8283
}
84+
else {
85+
PrimitiveType.explicitObjectType = false;
86+
}
8387
}
8488
else {
8589
jsonMapper = Json.mapper();
8690
yamlMapper = Yaml.mapper();
91+
PrimitiveType.explicitObjectType = null;
8792
}
8893
}
8994

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -340,8 +340,13 @@ private void setSchema(io.swagger.v3.oas.annotations.Parameter parameterDoc, Com
340340
PrimitiveType primitiveType = PrimitiveType.fromTypeAndFormat(schema.getType(), schema.getFormat());
341341
if (primitiveType != null) {
342342
Schema<?> primitiveSchema = primitiveType.createProperty();
343-
primitiveSchema.setDefault(schema.getDefault());
344-
schema.setDefault(primitiveSchema.getDefault());
343+
if (schema.getDefault() instanceof String stringValue) {
344+
primitiveSchema.setDefault(propertyResolverUtils.resolve(stringValue, locale));
345+
} else {
346+
primitiveSchema.setDefault(schema.getDefault());
347+
}
348+
if (primitiveSchema.getDefault() != null)
349+
schema.setDefault(primitiveSchema.getDefault());
345350
}
346351
}
347352
}
@@ -353,7 +358,8 @@ private void setSchema(io.swagger.v3.oas.annotations.Parameter parameterDoc, Com
353358
// default value not set by swagger-core for array !
354359
if (schema != null) {
355360
Object defaultValue = SpringDocAnnotationsUtils.resolveDefaultValue(parameterDoc.array().arraySchema().defaultValue(), objectMapperProvider.jsonMapper());
356-
schema.setDefault(defaultValue);
361+
if (defaultValue != null)
362+
schema.setDefault(defaultValue);
357363
}
358364
}
359365
if (isOpenapi31())

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,8 @@ 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, new ObjectMapper()
251+
.setDefaultPropertyInclusion(com.fasterxml.jackson.annotation.JsonInclude.Value.construct(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL, com.fasterxml.jackson.annotation.JsonInclude.Include.ALWAYS)));
251252
}
252253

253254
if (apiDef.isPresent()) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ public static Object castDefaultValue(Schema schema, Object defaultValue) {
513513
*/
514514
public static Object resolveDefaultValue(String defaultValueStr, ObjectMapper objectMapper) {
515515
Object defaultValue = null;
516-
if (StringUtils.isNotEmpty(defaultValueStr)) {
516+
if (StringUtils.isNotEmpty(defaultValueStr) && !io.swagger.v3.oas.annotations.media.Schema.DEFAULT_SENTINEL.equals(defaultValueStr)) {
517517
try {
518518
defaultValue = objectMapper.readTree(defaultValueStr);
519519
}

0 commit comments

Comments
 (0)