Skip to content

Commit b0a8b77

Browse files
committed
failed to load api definition after spring boot 3.4.0-M2. Fixes #2687
1 parent 96324c0 commit b0a8b77

File tree

17 files changed

+69
-353
lines changed

17 files changed

+69
-353
lines changed

pom.xml

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<parent>
1212
<groupId>org.springframework.boot</groupId>
1313
<artifactId>spring-boot-starter-parent</artifactId>
14-
<version>3.3.0</version>
14+
<version>3.4.0-M3</version>
1515
</parent>
1616

1717
<licenses>
@@ -65,8 +65,8 @@
6565
<gmavenplus-plugin.version>1.13.1</gmavenplus-plugin.version>
6666
<jjwt.version>0.9.1</jjwt.version>
6767
<therapi-runtime-javadoc.version>0.15.0</therapi-runtime-javadoc.version>
68-
<spring-cloud-function.version>4.1.2</spring-cloud-function.version>
69-
<spring-security-oauth2-authorization-server.version>1.3.0</spring-security-oauth2-authorization-server.version>
68+
<spring-cloud-function.version>4.2.0-M1</spring-cloud-function.version>
69+
<spring-security-oauth2-authorization-server.version>1.4.0-M2</spring-security-oauth2-authorization-server.version>
7070
</properties>
7171

7272
<dependencyManagement>
@@ -319,6 +319,14 @@
319319
<enabled>true</enabled>
320320
</snapshots>
321321
</repository>
322+
<repository>
323+
<id>spring-milestones</id>
324+
<name>Spring Milestones</name>
325+
<url>https://repo.spring.io/milestone</url>
326+
<snapshots>
327+
<enabled>false</enabled>
328+
</snapshots>
329+
</repository>
322330
</repositories>
323331
<pluginRepositories>
324332
<pluginRepository>

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

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@
7474
import org.springdoc.core.filters.GlobalOpenApiMethodFilter;
7575
import org.springdoc.core.filters.OpenApiMethodFilter;
7676
import org.springdoc.core.models.GroupedOpenApi;
77-
import org.springdoc.core.parsers.ReturnTypeParser;
7877
import org.springdoc.core.properties.SpringDocConfigProperties;
7978
import org.springdoc.core.providers.ActuatorProvider;
8079
import org.springdoc.core.providers.CloudFunctionProvider;
@@ -361,18 +360,7 @@ RequestBodyService requestBodyBuilder(GenericParameterService parameterBuilder,
361360
SecurityService securityParser(PropertyResolverUtils propertyResolverUtils) {
362361
return new SecurityService(propertyResolverUtils);
363362
}
364-
365-
/**
366-
* Generic return type parser return type parser.
367-
*
368-
* @return the return type parser
369-
*/
370-
@Bean
371-
@Lazy(false)
372-
ReturnTypeParser genericReturnTypeParser() {
373-
return new ReturnTypeParser() {};
374-
}
375-
363+
376364
/**
377365
* Parameter builder generic parameter builder.
378366
*

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

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package org.springdoc.core.configuration
22

33
import io.swagger.v3.oas.annotations.Parameter
44
import org.springdoc.core.customizers.ParameterCustomizer
5-
import org.springdoc.core.parsers.KotlinCoroutinesReturnTypeParser
65
import org.springdoc.core.utils.Constants
76
import org.springdoc.core.utils.SpringDocUtils
87
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean
@@ -46,18 +45,6 @@ class SpringDocKotlinConfiguration() {
4645
.addDeprecatedType(Deprecated::class.java)
4746
}
4847

49-
/**
50-
* Kotlin coroutines return type parser kotlin coroutines return type parser.
51-
*
52-
* @return the kotlin coroutines return type parser
53-
*/
54-
@Bean
55-
@Lazy(false)
56-
@ConditionalOnMissingBean
57-
fun kotlinCoroutinesReturnTypeParser(): KotlinCoroutinesReturnTypeParser {
58-
return KotlinCoroutinesReturnTypeParser()
59-
}
60-
6148
/**
6249
* Kotlin springdoc-openapi ParameterCustomizer
6350
*

springdoc-openapi-starter-common/src/main/java/org/springdoc/core/data/DataRestResponseService.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@
3939
import io.swagger.v3.oas.models.responses.ApiResponse;
4040
import io.swagger.v3.oas.models.responses.ApiResponses;
4141
import org.springdoc.core.models.MethodAttributes;
42-
import org.springdoc.core.parsers.ReturnTypeParser;
4342
import org.springdoc.core.service.GenericResponseService;
4443
import org.springdoc.core.utils.SpringDocDataRestUtils;
4544

45+
import org.springframework.core.GenericTypeResolver;
4646
import org.springframework.core.MethodParameter;
4747
import org.springframework.core.ResolvableType;
4848
import org.springframework.data.rest.core.mapping.MethodResourceMapping;
@@ -197,7 +197,7 @@ private void addResponse(RequestMethod requestMethod, String operationPath, ApiR
197197
*/
198198
private Type findSearchReturnType(MethodResourceMapping methodResourceMapping, Class<?> domainType) {
199199
Type returnType;
200-
Type returnRepoType = ReturnTypeParser.resolveType(methodResourceMapping.getMethod().getGenericReturnType(), methodResourceMapping.getMethod().getDeclaringClass());
200+
Type returnRepoType = GenericTypeResolver.resolveType(methodResourceMapping.getMethod().getGenericReturnType(), methodResourceMapping.getMethod().getDeclaringClass());
201201
if (methodResourceMapping.isPagingResource()) {
202202
returnType = resolveGenericType(PagedModel.class, EntityModel.class, domainType);
203203
}
@@ -224,7 +224,7 @@ else if (ClassUtils.isPrimitiveOrWrapper(methodResourceMapping.getReturnedDomain
224224
* @return the type
225225
*/
226226
private Type getType(MethodParameter methodParameterReturn, RequestMethod requestMethod, DataRestRepository dataRestRepository, ResourceMetadata resourceMetadata) {
227-
Type returnType = ReturnTypeParser.resolveType(methodParameterReturn.getGenericParameterType(), methodParameterReturn.getContainingClass());
227+
Type returnType = GenericTypeResolver.resolveType(methodParameterReturn.getGenericParameterType(), methodParameterReturn.getContainingClass());
228228
Class returnedEntityType = dataRestRepository.getReturnType();
229229

230230
if (returnType instanceof ParameterizedType) {
@@ -240,7 +240,7 @@ else if ((HttpEntity.class.equals(parameterizedType.getRawType())
240240
}
241241
}
242242
else if ((CollectionModel.class.equals(parameterizedType.getRawType())
243-
&& Object.class.equals(parameterizedType.getActualTypeArguments()[0]))) {
243+
&& parameterizedType.getActualTypeArguments()[0]!=null)) {
244244
return getTypeForCollectionModel(returnedEntityType, resourceMetadata.isPagingResource());
245245
}
246246
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@
5252

5353
import io.swagger.v3.core.util.PrimitiveType;
5454
import io.swagger.v3.oas.annotations.Parameter;
55-
import org.springdoc.core.parsers.ReturnTypeParser;
5655

56+
import org.springframework.core.GenericTypeResolver;
5757
import org.springframework.core.MethodParameter;
5858

5959
import static org.springdoc.core.utils.Constants.DOT;
@@ -158,7 +158,7 @@ private static Stream<MethodParameter> fromGetterOfField(Class<?> paramClass, Fi
158158
private static Class<?> extractType(Class<?> paramClass, Field field) {
159159
Class<?> type = field.getType();
160160
if (field.getGenericType() instanceof TypeVariable<?>) {
161-
Type fieldType = ReturnTypeParser.resolveType(field.getGenericType(), paramClass);
161+
Type fieldType = GenericTypeResolver.resolveType(field.getGenericType(), paramClass);
162162

163163
if (fieldType instanceof Class<?>)
164164
type = (Class<?>) fieldType;

springdoc-openapi-starter-common/src/main/java/org/springdoc/core/parsers/KotlinCoroutinesReturnTypeParser.java

Lines changed: 0 additions & 63 deletions
This file was deleted.

0 commit comments

Comments
 (0)