Skip to content

Commit 936b649

Browse files
committed
changes report #1820.
1 parent 6ff4c03 commit 936b649

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

Diff for: springdoc-openapi-starter-common/src/main/java/org/springdoc/api/AbstractOpenApiResource.java

+20-2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949

5050
import com.fasterxml.jackson.annotation.JsonView;
5151
import com.fasterxml.jackson.core.JsonProcessingException;
52+
import com.fasterxml.jackson.core.type.TypeReference;
5253
import com.fasterxml.jackson.databind.ObjectMapper;
5354
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
5455
import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator.Feature;
@@ -66,6 +67,7 @@
6667
import io.swagger.v3.oas.models.media.StringSchema;
6768
import io.swagger.v3.oas.models.parameters.Parameter;
6869
import io.swagger.v3.oas.models.responses.ApiResponses;
70+
import io.swagger.v3.oas.models.servers.Server;
6971
import org.apache.commons.lang3.ArrayUtils;
7072
import org.apache.commons.lang3.StringUtils;
7173
import org.slf4j.Logger;
@@ -336,10 +338,27 @@ protected synchronized OpenAPI getOpenApi(Locale locale) {
336338
);
337339
if (!CollectionUtils.isEmpty(openAPI.getServers()))
338340
openAPIService.setServersPresent(true);
341+
openAPIService.updateServers(openAPI);
339342

340343
if (springDocConfigProperties.isRemoveBrokenReferenceDefinitions())
341344
this.removeBrokenReferenceDefinitions(openAPI);
342345

346+
// run the optional customisers
347+
List<Server> servers = openAPI.getServers();
348+
List<Server> serversCopy = null;
349+
try {
350+
serversCopy = springDocProviders.jsonMapper()
351+
.readValue(springDocProviders.jsonMapper().writeValueAsString(servers), new TypeReference<List<Server>>() {});
352+
}
353+
catch (JsonProcessingException e) {
354+
LOGGER.warn("Json Processing Exception occurred: {}", e.getMessage());
355+
}
356+
357+
openApiLocaleCustomizers.values().forEach(openApiLocaleCustomizer -> openApiLocaleCustomizer.customise(openAPI, finalLocale));
358+
openApiCustomizers.ifPresent(apiCustomizers -> apiCustomizers.forEach(openApiCustomizer -> openApiCustomizer.customise(openAPI)));
359+
if (!CollectionUtils.isEmpty(openAPI.getServers()) && !openAPI.getServers().equals(serversCopy))
360+
openAPIService.setServersPresent(true);
361+
343362

344363
openAPIService.setCachedOpenAPI(openAPI, finalLocale);
345364

@@ -349,10 +368,9 @@ protected synchronized OpenAPI getOpenApi(Locale locale) {
349368
else {
350369
LOGGER.debug("Fetching openApi document from cache");
351370
openAPI = openAPIService.getCachedOpenAPI(finalLocale);
371+
openAPIService.updateServers(openAPI);
352372
}
353373
openAPIService.updateServers(openAPI);
354-
openApiLocaleCustomizers.values().forEach(openApiLocaleCustomizer -> openApiLocaleCustomizer.customise(openAPI, finalLocale));
355-
openApiCustomizers.ifPresent(apiCustomizers -> apiCustomizers.forEach(openApiCustomizer -> openApiCustomizer.customise(openAPI)));
356374
return openAPI;
357375
}
358376

Diff for: springdoc-openapi-starter-common/src/test/java/org/springdoc/api/AbstractOpenApiResourceTest.java

+2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import java.util.Map;
3232
import java.util.Optional;
3333

34+
import io.swagger.v3.core.util.Json;
3435
import io.swagger.v3.oas.annotations.enums.ParameterIn;
3536
import io.swagger.v3.oas.models.OpenAPI;
3637
import io.swagger.v3.oas.models.Operation;
@@ -126,6 +127,7 @@ public void setUp() {
126127
when(openAPIService.build(any())).thenReturn(openAPI);
127128

128129
when(openAPIBuilderObjectFactory.getObject()).thenReturn(openAPIService);
130+
when(springDocProviders.jsonMapper()).thenReturn(Json.mapper());
129131
}
130132

131133
@Test
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"openapi":"3.0.1","info":{"title":"OpenAPI definition","version":"v0"},"servers":[{"description":"Generated server url","url":"http://localhost"}],"paths":{"/testA":{"get":{"operationId":"testA","parameters":[{"in":"query","name":"hello","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"tags":["hello-controller"]}},"/testB":{"get":{"operationId":"testB","parameters":[{"in":"query","name":"hello","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"tags":["hello-controller"]}}},"components":{},"x-my-vendor-extensions":{"property1":"value1","property2":null}}
1+
{"openapi":"3.0.1","info":{"title":"OpenAPI definition","version":"v0"},"servers":[{"url":"http://localhost","description":"Generated server url"}],"paths":{"/testA":{"get":{"operationId":"testA","parameters":[{"in":"query","name":"hello","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"tags":["hello-controller"]}},"/testB":{"get":{"operationId":"testB","parameters":[{"in":"query","name":"hello","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"tags":["hello-controller"]}}},"components":{},"x-my-vendor-extensions":{"property1":"value1","property2":null}}

0 commit comments

Comments
 (0)