Skip to content

Commit e1d9f10

Browse files
authored
Merge pull request #1282 from PicnicSupermarket/hsener/request-mapping-info-handler-mapping
Use `ObjectProvider` to inject `RequestMappingInfoHandlerMapping`
2 parents e031c3b + a36db8a commit e1d9f10

File tree

4 files changed

+21
-18
lines changed

4 files changed

+21
-18
lines changed

springdoc-openapi-ui/src/main/java/org/springdoc/webmvc/ui/SwaggerConfig.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.springdoc.core.SwaggerUiConfigProperties;
3232
import org.springdoc.core.SwaggerUiOAuthProperties;
3333

34+
import org.springframework.beans.factory.ObjectProvider;
3435
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
3536
import org.springframework.boot.actuate.autoconfigure.web.server.ConditionalOnManagementPort;
3637
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
@@ -65,14 +66,14 @@ public class SwaggerConfig {
6566
* @param swaggerUiConfig the swagger ui config
6667
* @param springDocConfigProperties the spring doc config properties
6768
* @param swaggerUiConfigParameters the swagger ui config parameters
68-
* @param requestMappingInfoHandlerMappingOptional the request mapping info handler mapping optional
69+
* @param requestMappingInfoHandlerMappingObjectProvider the request mapping info handler mapping object provider
6970
* @return the swagger welcome
7071
*/
7172
@Bean
7273
@ConditionalOnMissingBean
7374
@ConditionalOnProperty(name = SPRINGDOC_USE_MANAGEMENT_PORT, havingValue = "false", matchIfMissing = true)
74-
SwaggerWelcomeWebMvc swaggerWelcome(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties, SwaggerUiConfigParameters swaggerUiConfigParameters, Optional<RequestMappingInfoHandlerMapping> requestMappingInfoHandlerMappingOptional) {
75-
return new SwaggerWelcomeWebMvc(swaggerUiConfig, springDocConfigProperties,swaggerUiConfigParameters, requestMappingInfoHandlerMappingOptional);
75+
SwaggerWelcomeWebMvc swaggerWelcome(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties, SwaggerUiConfigParameters swaggerUiConfigParameters, ObjectProvider<RequestMappingInfoHandlerMapping> requestMappingInfoHandlerMappingObjectProvider) {
76+
return new SwaggerWelcomeWebMvc(swaggerUiConfig, springDocConfigProperties,swaggerUiConfigParameters, requestMappingInfoHandlerMappingObjectProvider);
7677
}
7778

7879
/**

springdoc-openapi-ui/src/main/java/org/springdoc/webmvc/ui/SwaggerWelcomeWebMvc.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import java.util.List;
2525
import java.util.Map;
2626
import java.util.Map.Entry;
27-
import java.util.Optional;
2827
import java.util.Set;
2928

3029
import javax.annotation.PostConstruct;
@@ -37,6 +36,7 @@
3736
import org.springdoc.core.SwaggerUiConfigProperties;
3837
import org.springdoc.webmvc.api.OpenApiResource;
3938

39+
import org.springframework.beans.factory.ObjectProvider;
4040
import org.springframework.beans.factory.annotation.Value;
4141
import org.springframework.http.ResponseEntity;
4242
import org.springframework.stereotype.Controller;
@@ -73,27 +73,27 @@ public class SwaggerWelcomeWebMvc extends SwaggerWelcomeCommon {
7373
/**
7474
* The Request mapping handler mapping.
7575
*/
76-
private final Optional<RequestMappingInfoHandlerMapping> requestMappingInfoHandlerMappingOptional;
76+
private final ObjectProvider<RequestMappingInfoHandlerMapping> requestMappingInfoHandlerMappingObjectProvider;
7777

7878
/**
7979
* Instantiates a new Swagger welcome.
8080
*
8181
* @param swaggerUiConfig the swagger ui config
8282
* @param springDocConfigProperties the spring doc config properties
8383
* @param swaggerUiConfigParameters the swagger ui config parameters
84-
* @param requestMappingInfoHandlerMappingOptional the request mapping info handler mapping optional
84+
* @param requestMappingInfoHandlerMappingObjectProvider the request mapping info handler mapping object provider
8585
*/
86-
public SwaggerWelcomeWebMvc(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties,SwaggerUiConfigParameters swaggerUiConfigParameters, Optional<RequestMappingInfoHandlerMapping> requestMappingInfoHandlerMappingOptional) {
86+
public SwaggerWelcomeWebMvc(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties,SwaggerUiConfigParameters swaggerUiConfigParameters, ObjectProvider<RequestMappingInfoHandlerMapping> requestMappingInfoHandlerMappingObjectProvider) {
8787
super(swaggerUiConfig, springDocConfigProperties, swaggerUiConfigParameters);
88-
this.requestMappingInfoHandlerMappingOptional = requestMappingInfoHandlerMappingOptional;
88+
this.requestMappingInfoHandlerMappingObjectProvider = requestMappingInfoHandlerMappingObjectProvider;
8989
}
9090

9191
/**
9292
* Init.
9393
*/
9494
@PostConstruct
9595
private void init() {
96-
requestMappingInfoHandlerMappingOptional.ifPresent(requestMappingHandlerMapping -> {
96+
requestMappingInfoHandlerMappingObjectProvider.orderedStream().forEach(requestMappingHandlerMapping -> {
9797
Map<RequestMappingInfo, HandlerMethod> map = requestMappingHandlerMapping.getHandlerMethods();
9898
List<Entry<RequestMappingInfo, HandlerMethod>> entries = new ArrayList<>(map.entrySet());
9999
for (Map.Entry<RequestMappingInfo, HandlerMethod> entry : entries) {
@@ -168,4 +168,4 @@ protected String buildApiDocUrl() {
168168
protected String buildSwaggerConfigUrl() {
169169
return apiDocsUrl + DEFAULT_PATH_SEPARATOR + SWAGGGER_CONFIG_FILE;
170170
}
171-
}
171+
}

springdoc-openapi-webflux-ui/src/main/java/org/springdoc/webflux/ui/SwaggerConfig.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.springdoc.core.SwaggerUiConfigProperties;
3232
import org.springdoc.core.SwaggerUiOAuthProperties;
3333

34+
import org.springframework.beans.factory.ObjectProvider;
3435
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
3536
import org.springframework.boot.actuate.autoconfigure.web.server.ConditionalOnManagementPort;
3637
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
@@ -67,14 +68,14 @@ public class SwaggerConfig implements WebFluxConfigurer {
6768
* @param swaggerUiConfig the swagger ui config
6869
* @param springDocConfigProperties the spring doc config properties
6970
* @param swaggerUiConfigParameters the swagger ui config parameters
70-
* @param requestMappingHandlerMapping the request mapping handler mapping
71+
* @param requestMappingInfoHandlerMappingObjectProvider the request mapping handler mapping object provider
7172
* @return the swagger welcome web flux
7273
*/
7374
@Bean
7475
@ConditionalOnMissingBean
7576
@ConditionalOnProperty(name = SPRINGDOC_USE_MANAGEMENT_PORT, havingValue = "false", matchIfMissing = true)
76-
SwaggerWelcomeWebFlux swaggerWelcome(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties,SwaggerUiConfigParameters swaggerUiConfigParameters, Optional<RequestMappingInfoHandlerMapping> requestMappingHandlerMapping) {
77-
return new SwaggerWelcomeWebFlux(swaggerUiConfig,springDocConfigProperties,swaggerUiConfigParameters,requestMappingHandlerMapping);
77+
SwaggerWelcomeWebFlux swaggerWelcome(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties,SwaggerUiConfigParameters swaggerUiConfigParameters, ObjectProvider<RequestMappingInfoHandlerMapping> requestMappingInfoHandlerMappingObjectProvider) {
78+
return new SwaggerWelcomeWebFlux(swaggerUiConfig,springDocConfigProperties,swaggerUiConfigParameters,requestMappingInfoHandlerMappingObjectProvider);
7879
}
7980

8081
/**

springdoc-openapi-webflux-ui/src/main/java/org/springdoc/webflux/ui/SwaggerWelcomeWebFlux.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.springdoc.core.SpringDocConfigProperties;
3535
import org.springdoc.core.SwaggerUiConfigParameters;
3636
import org.springdoc.core.SwaggerUiConfigProperties;
37+
import org.springframework.beans.factory.ObjectProvider;
3738
import reactor.core.publisher.Mono;
3839

3940
import org.springframework.http.server.reactive.ServerHttpRequest;
@@ -61,7 +62,7 @@ public class SwaggerWelcomeWebFlux extends SwaggerWelcomeCommon {
6162
/**
6263
* The Request mapping handler mapping.
6364
*/
64-
private final Optional<RequestMappingInfoHandlerMapping> requestMappingInfoHandlerMappingOptional;
65+
private final ObjectProvider<RequestMappingInfoHandlerMapping> requestMappingInfoHandlerMappingObjectProvider;
6566

6667
/**
6768
* The Path prefix.
@@ -74,20 +75,20 @@ public class SwaggerWelcomeWebFlux extends SwaggerWelcomeCommon {
7475
* @param swaggerUiConfig the swagger ui config
7576
* @param springDocConfigProperties the spring doc config properties
7677
* @param swaggerUiConfigParameters the swagger ui config parameters
77-
* @param requestMappingInfoHandlerMappingOptional the request mapping handler mapping
78+
* @param requestMappingInfoHandlerMappingObjectProvider the request mapping handler mapping object provider
7879
*/
7980
public SwaggerWelcomeWebFlux(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties,
80-
SwaggerUiConfigParameters swaggerUiConfigParameters, Optional<RequestMappingInfoHandlerMapping> requestMappingInfoHandlerMappingOptional) {
81+
SwaggerUiConfigParameters swaggerUiConfigParameters, ObjectProvider<RequestMappingInfoHandlerMapping> requestMappingInfoHandlerMappingObjectProvider) {
8182
super(swaggerUiConfig, springDocConfigProperties, swaggerUiConfigParameters);
82-
this.requestMappingInfoHandlerMappingOptional = requestMappingInfoHandlerMappingOptional;
83+
this.requestMappingInfoHandlerMappingObjectProvider = requestMappingInfoHandlerMappingObjectProvider;
8384
}
8485

8586
/**
8687
* Init.
8788
*/
8889
@PostConstruct
8990
private void init() {
90-
requestMappingInfoHandlerMappingOptional.ifPresent(requestMappingHandlerMapping -> {
91+
requestMappingInfoHandlerMappingObjectProvider.orderedStream().forEach(requestMappingHandlerMapping -> {
9192
Map<RequestMappingInfo, HandlerMethod> map = requestMappingHandlerMapping.getHandlerMethods();
9293
List<Entry<RequestMappingInfo, HandlerMethod>> entries = new ArrayList<>(map.entrySet());
9394
for (Map.Entry<RequestMappingInfo, HandlerMethod> entry : entries) {

0 commit comments

Comments
 (0)