From a36db8a38af892e141db9f46bb47dcc8fd2caba7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20=C5=9Eener?= Date: Mon, 4 Oct 2021 13:37:30 +0200 Subject: [PATCH] Use `ObjectProvider` to inject `RequestMappingInfoHandlerMapping` --- .../org/springdoc/webmvc/ui/SwaggerConfig.java | 7 ++++--- .../springdoc/webmvc/ui/SwaggerWelcomeWebMvc.java | 14 +++++++------- .../org/springdoc/webflux/ui/SwaggerConfig.java | 7 ++++--- .../webflux/ui/SwaggerWelcomeWebFlux.java | 11 ++++++----- 4 files changed, 21 insertions(+), 18 deletions(-) diff --git a/springdoc-openapi-ui/src/main/java/org/springdoc/webmvc/ui/SwaggerConfig.java b/springdoc-openapi-ui/src/main/java/org/springdoc/webmvc/ui/SwaggerConfig.java index 2772a2db8..fe571f80e 100644 --- a/springdoc-openapi-ui/src/main/java/org/springdoc/webmvc/ui/SwaggerConfig.java +++ b/springdoc-openapi-ui/src/main/java/org/springdoc/webmvc/ui/SwaggerConfig.java @@ -31,6 +31,7 @@ import org.springdoc.core.SwaggerUiConfigProperties; import org.springdoc.core.SwaggerUiOAuthProperties; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties; import org.springframework.boot.actuate.autoconfigure.web.server.ConditionalOnManagementPort; import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType; @@ -65,14 +66,14 @@ public class SwaggerConfig { * @param swaggerUiConfig the swagger ui config * @param springDocConfigProperties the spring doc config properties * @param swaggerUiConfigParameters the swagger ui config parameters - * @param requestMappingInfoHandlerMappingOptional the request mapping info handler mapping optional + * @param requestMappingInfoHandlerMappingObjectProvider the request mapping info handler mapping object provider * @return the swagger welcome */ @Bean @ConditionalOnMissingBean @ConditionalOnProperty(name = SPRINGDOC_USE_MANAGEMENT_PORT, havingValue = "false", matchIfMissing = true) - SwaggerWelcomeWebMvc swaggerWelcome(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties, SwaggerUiConfigParameters swaggerUiConfigParameters, Optional requestMappingInfoHandlerMappingOptional) { - return new SwaggerWelcomeWebMvc(swaggerUiConfig, springDocConfigProperties,swaggerUiConfigParameters, requestMappingInfoHandlerMappingOptional); + SwaggerWelcomeWebMvc swaggerWelcome(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties, SwaggerUiConfigParameters swaggerUiConfigParameters, ObjectProvider requestMappingInfoHandlerMappingObjectProvider) { + return new SwaggerWelcomeWebMvc(swaggerUiConfig, springDocConfigProperties,swaggerUiConfigParameters, requestMappingInfoHandlerMappingObjectProvider); } /** diff --git a/springdoc-openapi-ui/src/main/java/org/springdoc/webmvc/ui/SwaggerWelcomeWebMvc.java b/springdoc-openapi-ui/src/main/java/org/springdoc/webmvc/ui/SwaggerWelcomeWebMvc.java index e696b1f28..93812e330 100644 --- a/springdoc-openapi-ui/src/main/java/org/springdoc/webmvc/ui/SwaggerWelcomeWebMvc.java +++ b/springdoc-openapi-ui/src/main/java/org/springdoc/webmvc/ui/SwaggerWelcomeWebMvc.java @@ -24,7 +24,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; -import java.util.Optional; import java.util.Set; import javax.annotation.PostConstruct; @@ -37,6 +36,7 @@ import org.springdoc.core.SwaggerUiConfigProperties; import org.springdoc.webmvc.api.OpenApiResource; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; @@ -73,7 +73,7 @@ public class SwaggerWelcomeWebMvc extends SwaggerWelcomeCommon { /** * The Request mapping handler mapping. */ - private final Optional requestMappingInfoHandlerMappingOptional; + private final ObjectProvider requestMappingInfoHandlerMappingObjectProvider; /** * Instantiates a new Swagger welcome. @@ -81,11 +81,11 @@ public class SwaggerWelcomeWebMvc extends SwaggerWelcomeCommon { * @param swaggerUiConfig the swagger ui config * @param springDocConfigProperties the spring doc config properties * @param swaggerUiConfigParameters the swagger ui config parameters - * @param requestMappingInfoHandlerMappingOptional the request mapping info handler mapping optional + * @param requestMappingInfoHandlerMappingObjectProvider the request mapping info handler mapping object provider */ - public SwaggerWelcomeWebMvc(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties,SwaggerUiConfigParameters swaggerUiConfigParameters, Optional requestMappingInfoHandlerMappingOptional) { + public SwaggerWelcomeWebMvc(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties,SwaggerUiConfigParameters swaggerUiConfigParameters, ObjectProvider requestMappingInfoHandlerMappingObjectProvider) { super(swaggerUiConfig, springDocConfigProperties, swaggerUiConfigParameters); - this.requestMappingInfoHandlerMappingOptional = requestMappingInfoHandlerMappingOptional; + this.requestMappingInfoHandlerMappingObjectProvider = requestMappingInfoHandlerMappingObjectProvider; } /** @@ -93,7 +93,7 @@ public SwaggerWelcomeWebMvc(SwaggerUiConfigProperties swaggerUiConfig, SpringDoc */ @PostConstruct private void init() { - requestMappingInfoHandlerMappingOptional.ifPresent(requestMappingHandlerMapping -> { + requestMappingInfoHandlerMappingObjectProvider.orderedStream().forEach(requestMappingHandlerMapping -> { Map map = requestMappingHandlerMapping.getHandlerMethods(); List> entries = new ArrayList<>(map.entrySet()); for (Map.Entry entry : entries) { @@ -168,4 +168,4 @@ protected String buildApiDocUrl() { protected String buildSwaggerConfigUrl() { return apiDocsUrl + DEFAULT_PATH_SEPARATOR + SWAGGGER_CONFIG_FILE; } -} \ No newline at end of file +} diff --git a/springdoc-openapi-webflux-ui/src/main/java/org/springdoc/webflux/ui/SwaggerConfig.java b/springdoc-openapi-webflux-ui/src/main/java/org/springdoc/webflux/ui/SwaggerConfig.java index caf58b179..3d67f324c 100644 --- a/springdoc-openapi-webflux-ui/src/main/java/org/springdoc/webflux/ui/SwaggerConfig.java +++ b/springdoc-openapi-webflux-ui/src/main/java/org/springdoc/webflux/ui/SwaggerConfig.java @@ -31,6 +31,7 @@ import org.springdoc.core.SwaggerUiConfigProperties; import org.springdoc.core.SwaggerUiOAuthProperties; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties; import org.springframework.boot.actuate.autoconfigure.web.server.ConditionalOnManagementPort; import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType; @@ -67,14 +68,14 @@ public class SwaggerConfig implements WebFluxConfigurer { * @param swaggerUiConfig the swagger ui config * @param springDocConfigProperties the spring doc config properties * @param swaggerUiConfigParameters the swagger ui config parameters - * @param requestMappingHandlerMapping the request mapping handler mapping + * @param requestMappingInfoHandlerMappingObjectProvider the request mapping handler mapping object provider * @return the swagger welcome web flux */ @Bean @ConditionalOnMissingBean @ConditionalOnProperty(name = SPRINGDOC_USE_MANAGEMENT_PORT, havingValue = "false", matchIfMissing = true) - SwaggerWelcomeWebFlux swaggerWelcome(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties,SwaggerUiConfigParameters swaggerUiConfigParameters, Optional requestMappingHandlerMapping) { - return new SwaggerWelcomeWebFlux(swaggerUiConfig,springDocConfigProperties,swaggerUiConfigParameters,requestMappingHandlerMapping); + SwaggerWelcomeWebFlux swaggerWelcome(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties,SwaggerUiConfigParameters swaggerUiConfigParameters, ObjectProvider requestMappingInfoHandlerMappingObjectProvider) { + return new SwaggerWelcomeWebFlux(swaggerUiConfig,springDocConfigProperties,swaggerUiConfigParameters,requestMappingInfoHandlerMappingObjectProvider); } /** diff --git a/springdoc-openapi-webflux-ui/src/main/java/org/springdoc/webflux/ui/SwaggerWelcomeWebFlux.java b/springdoc-openapi-webflux-ui/src/main/java/org/springdoc/webflux/ui/SwaggerWelcomeWebFlux.java index e9c630033..77be30225 100644 --- a/springdoc-openapi-webflux-ui/src/main/java/org/springdoc/webflux/ui/SwaggerWelcomeWebFlux.java +++ b/springdoc-openapi-webflux-ui/src/main/java/org/springdoc/webflux/ui/SwaggerWelcomeWebFlux.java @@ -34,6 +34,7 @@ import org.springdoc.core.SpringDocConfigProperties; import org.springdoc.core.SwaggerUiConfigParameters; import org.springdoc.core.SwaggerUiConfigProperties; +import org.springframework.beans.factory.ObjectProvider; import reactor.core.publisher.Mono; import org.springframework.http.server.reactive.ServerHttpRequest; @@ -61,7 +62,7 @@ public class SwaggerWelcomeWebFlux extends SwaggerWelcomeCommon { /** * The Request mapping handler mapping. */ - private final Optional requestMappingInfoHandlerMappingOptional; + private final ObjectProvider requestMappingInfoHandlerMappingObjectProvider; /** * The Path prefix. @@ -74,12 +75,12 @@ public class SwaggerWelcomeWebFlux extends SwaggerWelcomeCommon { * @param swaggerUiConfig the swagger ui config * @param springDocConfigProperties the spring doc config properties * @param swaggerUiConfigParameters the swagger ui config parameters - * @param requestMappingInfoHandlerMappingOptional the request mapping handler mapping + * @param requestMappingInfoHandlerMappingObjectProvider the request mapping handler mapping object provider */ public SwaggerWelcomeWebFlux(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties, - SwaggerUiConfigParameters swaggerUiConfigParameters, Optional requestMappingInfoHandlerMappingOptional) { + SwaggerUiConfigParameters swaggerUiConfigParameters, ObjectProvider requestMappingInfoHandlerMappingObjectProvider) { super(swaggerUiConfig, springDocConfigProperties, swaggerUiConfigParameters); - this.requestMappingInfoHandlerMappingOptional = requestMappingInfoHandlerMappingOptional; + this.requestMappingInfoHandlerMappingObjectProvider = requestMappingInfoHandlerMappingObjectProvider; } /** @@ -87,7 +88,7 @@ public SwaggerWelcomeWebFlux(SwaggerUiConfigProperties swaggerUiConfig, SpringDo */ @PostConstruct private void init() { - requestMappingInfoHandlerMappingOptional.ifPresent(requestMappingHandlerMapping -> { + requestMappingInfoHandlerMappingObjectProvider.orderedStream().forEach(requestMappingHandlerMapping -> { Map map = requestMappingHandlerMapping.getHandlerMethods(); List> entries = new ArrayList<>(map.entrySet()); for (Map.Entry entry : entries) {