Skip to content

Commit d15bb20

Browse files
committed
improve native support
1 parent 0080f57 commit d15bb20

File tree

7 files changed

+51
-15
lines changed

7 files changed

+51
-15
lines changed

springdoc-openapi-common/src/main/java/org/springdoc/core/Constants.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ public final class Constants {
101101
public static final String SPRINGDOC_SWAGGER_UI_ENABLED = "springdoc.swagger-ui.enabled";
102102

103103
/**
104-
* The constant SPRINGDOC_ENABLE_NATIVE_IMAGE_SUPPORT.
104+
* The constant SPRING_NATIVE_LISTENER.
105105
*/
106-
public static final String SPRINGDOC_ENABLE_NATIVE_IMAGE_SUPPORT = "springdoc.enable-native-image-support";
106+
public static final String SPRING_NATIVE_LISTENER = "org.springframework.nativex.NativeListener";
107107

108108
/**
109109
* The constant NULL.

springdoc-openapi-common/src/main/java/org/springdoc/core/SpringDocConfigProperties.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -165,14 +165,14 @@ public class SpringDocConfigProperties {
165165
/**
166166
* The Enable native support.
167167
*/
168-
protected boolean enableNativeImageSupport;
168+
protected Boolean enableNativeImageSupport;
169169

170170
/**
171-
* Is enable native image support boolean.
171+
* Gets enable native image support.
172172
*
173-
* @return the boolean
173+
* @return the enable native image support
174174
*/
175-
public boolean isEnableNativeImageSupport() {
175+
public Boolean getEnableNativeImageSupport() {
176176
return enableNativeImageSupport;
177177
}
178178

@@ -181,7 +181,7 @@ public boolean isEnableNativeImageSupport() {
181181
*
182182
* @param enableNativeImageSupport the enable native image support
183183
*/
184-
public void setEnableNativeImageSupport(boolean enableNativeImageSupport) {
184+
public void setEnableNativeImageSupport(Boolean enableNativeImageSupport) {
185185
this.enableNativeImageSupport = enableNativeImageSupport;
186186
}
187187

springdoc-openapi-common/src/main/java/org/springdoc/core/SpringDocHints.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
import io.swagger.v3.oas.models.security.Scopes;
6161
import io.swagger.v3.oas.models.servers.ServerVariables;
6262

63+
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
6364
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
6465
import org.springframework.context.annotation.Configuration;
6566
import org.springframework.context.annotation.PropertySource;
@@ -68,7 +69,8 @@
6869
import org.springframework.nativex.hint.ResourceHint;
6970
import org.springframework.nativex.hint.TypeHint;
7071

71-
import static org.springdoc.core.Constants.SPRINGDOC_ENABLE_NATIVE_IMAGE_SUPPORT;
72+
import static org.springdoc.core.Constants.SPRINGDOC_ENABLED;
73+
import static org.springdoc.core.Constants.SPRING_NATIVE_LISTENER;
7274

7375
@ProxyHint(typeNames = "javax.servlet.http.HttpServletRequest")
7476

@@ -154,5 +156,6 @@
154156

155157
@ResourceHint(patterns = "springdoc.swagger-ui.config")
156158
@Configuration(proxyBeanMethods = false)
157-
@ConditionalOnProperty(name = SPRINGDOC_ENABLE_NATIVE_IMAGE_SUPPORT, havingValue = "true")
159+
@ConditionalOnProperty(name = SPRINGDOC_ENABLED, matchIfMissing = true)
160+
@ConditionalOnBean(type = SPRING_NATIVE_LISTENER)
158161
public class SpringDocHints {}

springdoc-openapi-common/src/main/java/org/springdoc/core/SwaggerUiConfigParameters.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.HashSet;
2626
import java.util.LinkedHashSet;
2727
import java.util.Map;
28+
import java.util.Optional;
2829
import java.util.Set;
2930
import java.util.TreeMap;
3031
import java.util.stream.Collectors;
@@ -97,13 +98,20 @@ public class SwaggerUiConfigParameters extends AbstractSwaggerUiConfigProperties
9798
@Value(SWAGGER_UI_VERSION)
9899
private String swaggerUiVersion;
99100

101+
/**
102+
* The Spring doc hints optional.
103+
*/
104+
private final Optional<SpringDocHints> springDocHintsOptional;
105+
100106
/**
101107
* Instantiates a new Swagger ui config parameters.
102108
*
103109
* @param swaggerUiConfig the swagger ui config
110+
* @param springDocHintsOptional the spring doc hints optional
104111
*/
105-
public SwaggerUiConfigParameters(SwaggerUiConfigProperties swaggerUiConfig) {
112+
public SwaggerUiConfigParameters(SwaggerUiConfigProperties swaggerUiConfig, Optional<SpringDocHints> springDocHintsOptional) {
106113
this.swaggerUiConfig = swaggerUiConfig;
114+
this.springDocHintsOptional = springDocHintsOptional;
107115
this.path = StringUtils.defaultIfBlank(swaggerUiConfig.getPath(), Constants.DEFAULT_SWAGGER_UI_PATH);
108116
this.oauth2RedirectUrl = StringUtils.defaultIfBlank(swaggerUiConfig.getOauth2RedirectUrl(), SWAGGER_UI_OAUTH_REDIRECT_URL);
109117
this.layout = swaggerUiConfig.getLayout();
@@ -132,6 +140,15 @@ public SwaggerUiConfigParameters(SwaggerUiConfigProperties swaggerUiConfig) {
132140
this.persistAuthorization = swaggerUiConfig.getPersistAuthorization();
133141
}
134142

143+
/**
144+
* Gets spring doc hints optional.
145+
*
146+
* @return the spring doc hints optional
147+
*/
148+
public Optional<SpringDocHints> getSpringDocHintsOptional() {
149+
return springDocHintsOptional;
150+
}
151+
135152
/**
136153
* Gets swagger ui version.
137154
*

springdoc-openapi-common/src/main/java/org/springdoc/ui/AbstractSwaggerWelcome.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,9 +226,21 @@ protected String getOauth2RedirectUrl() {
226226
* @return the swagger ui url
227227
*/
228228
protected String getSwaggerUiUrl() {
229-
if (springDocConfigProperties.isEnableNativeImageSupport())
229+
if (enableNativeImageSupport())
230230
return SWAGGER_UI_PREFIX + DEFAULT_PATH_SEPARATOR + swaggerUiConfigParameters.getSwaggerUiVersion() + INDEX_PAGE;
231231
else
232232
return SWAGGER_UI_URL;
233233
}
234+
235+
/**
236+
* Enable native image support boolean.
237+
*
238+
* @return the boolean
239+
*/
240+
private boolean enableNativeImageSupport(){
241+
if (springDocConfigProperties.getEnableNativeImageSupport() != null)
242+
return springDocConfigProperties.getEnableNativeImageSupport();
243+
else
244+
return swaggerUiConfigParameters.getSpringDocHintsOptional().isPresent();
245+
}
234246
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.springdoc.core.ActuatorProvider;
2727
import org.springdoc.core.SpringDocConfigProperties;
2828
import org.springdoc.core.SpringDocConfiguration;
29+
import org.springdoc.core.SpringDocHints;
2930
import org.springdoc.core.SwaggerUiConfigParameters;
3031
import org.springdoc.core.SwaggerUiConfigProperties;
3132
import org.springdoc.core.SwaggerUiOAuthProperties;
@@ -115,12 +116,13 @@ SwaggerWebMvcConfigurer swaggerWebMvcConfigurer(SwaggerUiConfigParameters swagge
115116
* Swagger ui config parameters swagger ui config parameters.
116117
*
117118
* @param swaggerUiConfig the swagger ui config
119+
* @param springDocHintsOptional the spring doc hints optional
118120
* @return the swagger ui config parameters
119121
*/
120122
@Bean
121123
@ConditionalOnMissingBean
122-
SwaggerUiConfigParameters swaggerUiConfigParameters(SwaggerUiConfigProperties swaggerUiConfig) {
123-
return new SwaggerUiConfigParameters(swaggerUiConfig);
124+
SwaggerUiConfigParameters swaggerUiConfigParameters(SwaggerUiConfigProperties swaggerUiConfig, Optional<SpringDocHints> springDocHintsOptional) {
125+
return new SwaggerUiConfigParameters(swaggerUiConfig, springDocHintsOptional);
124126
}
125127

126128
@ConditionalOnProperty(SPRINGDOC_USE_MANAGEMENT_PORT)

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.springdoc.core.ActuatorProvider;
2727
import org.springdoc.core.SpringDocConfigProperties;
2828
import org.springdoc.core.SpringDocConfiguration;
29+
import org.springdoc.core.SpringDocHints;
2930
import org.springdoc.core.SwaggerUiConfigParameters;
3031
import org.springdoc.core.SwaggerUiConfigProperties;
3132
import org.springdoc.core.SwaggerUiOAuthProperties;
@@ -121,12 +122,13 @@ SwaggerIndexTransformer indexPageTransformer(SwaggerUiConfigProperties swaggerUi
121122
* Swagger ui config parameters swagger ui config parameters.
122123
*
123124
* @param swaggerUiConfig the swagger ui config
125+
* @param springDocHintsOptional the spring doc hints optional
124126
* @return the swagger ui config parameters
125127
*/
126128
@Bean
127129
@ConditionalOnMissingBean
128-
SwaggerUiConfigParameters swaggerUiConfigParameters (SwaggerUiConfigProperties swaggerUiConfig){
129-
return new SwaggerUiConfigParameters(swaggerUiConfig);
130+
SwaggerUiConfigParameters swaggerUiConfigParameters (SwaggerUiConfigProperties swaggerUiConfig, Optional<SpringDocHints> springDocHintsOptional){
131+
return new SwaggerUiConfigParameters(swaggerUiConfig, springDocHintsOptional);
130132
}
131133

132134
/**

0 commit comments

Comments
 (0)