Skip to content

Commit 41e80b4

Browse files
committed
springdoc 3.0 + boot 4.0 breaks native image support #3155
1 parent e1f0e8c commit 41e80b4

4 files changed

Lines changed: 14 additions & 10 deletions

File tree

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.springdoc.core.providers.SpringWebProvider;
3838
import org.springdoc.webflux.core.providers.SpringWebFluxProvider;
3939

40+
import org.springframework.beans.factory.ObjectProvider;
4041
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
4142
import org.springframework.boot.actuate.autoconfigure.web.server.ConditionalOnManagementPort;
4243
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
@@ -85,7 +86,7 @@ public class SwaggerConfig implements WebFluxConfigurer {
8586
@ConditionalOnMissingBean
8687
@ConditionalOnProperty(name = SPRINGDOC_USE_MANAGEMENT_PORT, havingValue = "false", matchIfMissing = true)
8788
@Lazy(false)
88-
SwaggerWelcomeWebFlux swaggerWelcome(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties, @Lazy SpringWebProvider springWebProvider) {
89+
SwaggerWelcomeWebFlux swaggerWelcome(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties, ObjectProvider <SpringWebProvider> springWebProvider) {
8990
return new SwaggerWelcomeWebFlux(swaggerUiConfig, springDocConfigProperties, springWebProvider);
9091
}
9192

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.springdoc.core.providers.SpringWebProvider;
3434
import reactor.core.publisher.Mono;
3535

36+
import org.springframework.beans.factory.ObjectProvider;
3637
import org.springframework.stereotype.Controller;
3738
import org.springframework.web.bind.annotation.GetMapping;
3839
import org.springframework.web.server.ServerWebExchange;
@@ -52,7 +53,7 @@ public class SwaggerWelcomeWebFlux extends SwaggerWelcomeCommon {
5253
/**
5354
* The Spring web provider.
5455
*/
55-
private final SpringWebProvider springWebProvider;
56+
private final ObjectProvider<SpringWebProvider> springWebProvider;
5657

5758
/**
5859
* Instantiates a new Swagger welcome web flux.
@@ -61,7 +62,7 @@ public class SwaggerWelcomeWebFlux extends SwaggerWelcomeCommon {
6162
* @param springDocConfigProperties the spring doc config properties
6263
* @param springWebProvider the spring web provider
6364
*/
64-
public SwaggerWelcomeWebFlux(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties, SpringWebProvider springWebProvider) {
65+
public SwaggerWelcomeWebFlux(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties, ObjectProvider<SpringWebProvider> springWebProvider) {
6566
super(swaggerUiConfig, springDocConfigProperties);
6667
this.springWebProvider = springWebProvider;
6768
}
@@ -94,7 +95,7 @@ protected void buildApiDocUrl(SwaggerUiConfigParameters swaggerUiConfigParameter
9495
@Override
9596
protected String buildUrlWithContextPath(SwaggerUiConfigParameters swaggerUiConfigParameters, String swaggerUiUrl) {
9697
if (swaggerUiConfigParameters.getPathPrefix() == null)
97-
swaggerUiConfigParameters.setPathPrefix(springWebProvider.findPathPrefix(springDocConfigProperties));
98+
swaggerUiConfigParameters.setPathPrefix(springWebProvider.getIfAvailable().findPathPrefix(springDocConfigProperties));
9899
if (swaggerUiUrl.startsWith(swaggerUiConfigParameters.getPathPrefix())) {
99100
return buildUrl(swaggerUiConfigParameters.getContextPath(), swaggerUiUrl);
100101
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.springdoc.core.providers.SpringWebProvider;
3838
import org.springdoc.webmvc.core.providers.SpringWebMvcProvider;
3939

40+
import org.springframework.beans.factory.ObjectProvider;
4041
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
4142
import org.springframework.boot.actuate.autoconfigure.web.server.ConditionalOnManagementPort;
4243
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
@@ -77,15 +78,15 @@ public class SwaggerConfig {
7778
*
7879
* @param swaggerUiConfig the swagger ui config
7980
* @param springDocConfigProperties the spring doc config properties
80-
* @param springWebProvider the spring web provider
81+
* @param springWebProviderObjectProvider the spring web provider
8182
* @return the swagger welcome web mvc
8283
*/
8384
@Bean
8485
@ConditionalOnMissingBean
8586
@ConditionalOnProperty(name = SPRINGDOC_USE_MANAGEMENT_PORT, havingValue = "false", matchIfMissing = true)
8687
@Lazy(false)
87-
SwaggerWelcomeWebMvc swaggerWelcome(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties, @Lazy SpringWebProvider springWebProvider) {
88-
return new SwaggerWelcomeWebMvc(swaggerUiConfig, springDocConfigProperties, springWebProvider);
88+
SwaggerWelcomeWebMvc swaggerWelcome(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties, ObjectProvider<SpringWebProvider> springWebProviderObjectProvider) {
89+
return new SwaggerWelcomeWebMvc(swaggerUiConfig, springDocConfigProperties, springWebProviderObjectProvider);
8990
}
9091

9192
/**

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.springdoc.core.properties.SwaggerUiConfigProperties;
3434
import org.springdoc.core.providers.SpringWebProvider;
3535

36+
import org.springframework.beans.factory.ObjectProvider;
3637
import org.springframework.beans.factory.annotation.Value;
3738
import org.springframework.http.ResponseEntity;
3839
import org.springframework.stereotype.Controller;
@@ -54,7 +55,7 @@ public class SwaggerWelcomeWebMvc extends SwaggerWelcomeCommon {
5455
/**
5556
* The Spring web provider.
5657
*/
57-
private final SpringWebProvider springWebProvider;
58+
private final ObjectProvider<SpringWebProvider> springWebProvider;
5859

5960
/**
6061
* The Mvc servlet path.
@@ -70,7 +71,7 @@ public class SwaggerWelcomeWebMvc extends SwaggerWelcomeCommon {
7071
* @param springDocConfigProperties the spring doc config properties
7172
* @param springWebProvider the spring web provider
7273
*/
73-
public SwaggerWelcomeWebMvc(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties, SpringWebProvider springWebProvider) {
74+
public SwaggerWelcomeWebMvc(SwaggerUiConfigProperties swaggerUiConfig, SpringDocConfigProperties springDocConfigProperties, ObjectProvider<SpringWebProvider> springWebProvider) {
7475
super(swaggerUiConfig, springDocConfigProperties);
7576
this.springWebProvider = springWebProvider;
7677
}
@@ -96,7 +97,7 @@ protected void buildApiDocUrl(SwaggerUiConfigParameters swaggerUiConfigParameter
9697
@Override
9798
protected String buildUrlWithContextPath(SwaggerUiConfigParameters swaggerUiConfigParameters, String swaggerUiUrl) {
9899
if (swaggerUiConfigParameters.getPathPrefix() == null)
99-
swaggerUiConfigParameters.setPathPrefix(springWebProvider.findPathPrefix(springDocConfigProperties));
100+
swaggerUiConfigParameters.setPathPrefix(springWebProvider.getIfAvailable().findPathPrefix(springDocConfigProperties));
100101
if (swaggerUiUrl.startsWith(swaggerUiConfigParameters.getPathPrefix())) {
101102
return buildUrl(swaggerUiConfigParameters.getContextPath(), swaggerUiUrl);
102103
}

0 commit comments

Comments
 (0)