62
62
import org .slf4j .Logger ;
63
63
import org .slf4j .LoggerFactory ;
64
64
import org .springdoc .core .customizers .OpenApiBuilderCustomizer ;
65
-
65
+ import org . springdoc . core . customizers . ServerBaseUrlCustomizer ;
66
66
import org .springframework .beans .BeansException ;
67
67
import org .springframework .beans .factory .config .BeanDefinition ;
68
68
import org .springframework .boot .autoconfigure .AutoConfigurationPackages ;
@@ -120,6 +120,11 @@ public class OpenAPIService implements ApplicationContextAware {
120
120
*/
121
121
private final Optional <List <OpenApiBuilderCustomizer >> openApiBuilderCustomisers ;
122
122
123
+ /**
124
+ * The server base URL customisers.
125
+ */
126
+ private final Optional <List <ServerBaseUrlCustomizer >> serverBaseUrlCustomisers ;
127
+
123
128
/**
124
129
* The Spring doc config properties.
125
130
*/
@@ -188,7 +193,8 @@ public class OpenAPIService implements ApplicationContextAware {
188
193
*/
189
194
OpenAPIService (Optional <OpenAPI > openAPI , SecurityService securityParser ,
190
195
SpringDocConfigProperties springDocConfigProperties , PropertyResolverUtils propertyResolverUtils ,
191
- Optional <List <OpenApiBuilderCustomizer >> openApiBuilderCustomisers ) {
196
+ Optional <List <OpenApiBuilderCustomizer >> openApiBuilderCustomisers ,
197
+ Optional <List <ServerBaseUrlCustomizer >> serverBaseUrlCustomisers ) {
192
198
if (openAPI .isPresent ()) {
193
199
this .openAPI = openAPI .get ();
194
200
if (this .openAPI .getComponents () == null )
@@ -202,6 +208,7 @@ public class OpenAPIService implements ApplicationContextAware {
202
208
this .securityParser = securityParser ;
203
209
this .springDocConfigProperties = springDocConfigProperties ;
204
210
this .openApiBuilderCustomisers = openApiBuilderCustomisers ;
211
+ this .serverBaseUrlCustomisers = serverBaseUrlCustomisers ;
205
212
if (springDocConfigProperties .isUseFqn ())
206
213
TypeNameResolver .std .setUseFqn (true );
207
214
}
@@ -466,7 +473,15 @@ public Schema resolveProperties(Schema schema, Locale locale) {
466
473
* @param serverBaseUrl the server base url
467
474
*/
468
475
public void setServerBaseUrl (String serverBaseUrl ) {
469
- this .serverBaseUrl = serverBaseUrl ;
476
+ String customServerBaseUrl = serverBaseUrl ;
477
+
478
+ serverBaseUrlCustomisers .ifPresent (customisers -> {
479
+ for (ServerBaseUrlCustomizer customiser : customisers ) {
480
+ customServerBaseUrl = customiser .customise (customServerBaseUrl );
481
+ }
482
+ });
483
+
484
+ this .serverBaseUrl = customServerBaseUrl ;
470
485
}
471
486
472
487
/**
@@ -810,8 +825,9 @@ public SecurityService getSecurityParser() {
810
825
811
826
/**
812
827
* Gets server base URL
813
- *
828
+ *
814
829
* @return the server base URL
830
+ */
815
831
public String getServerBaseUrl () {
816
832
return serverBaseUrl ;
817
833
}
@@ -820,4 +836,4 @@ public String getServerBaseUrl() {
820
836
public void setApplicationContext (ApplicationContext applicationContext ) throws BeansException {
821
837
this .context = applicationContext ;
822
838
}
823
- }
839
+ }
0 commit comments