Skip to content

Commit 9dd3dae

Browse files
author
bnasslahsen
committed
Changes report #1749
1 parent 76d3dd6 commit 9dd3dae

File tree

4 files changed

+10
-29
lines changed

4 files changed

+10
-29
lines changed

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

+5-22
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@
4949

5050
import com.fasterxml.jackson.annotation.JsonView;
5151
import com.fasterxml.jackson.core.JsonProcessingException;
52-
import com.fasterxml.jackson.core.type.TypeReference;
5352
import com.fasterxml.jackson.databind.ObjectMapper;
5453
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
5554
import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator.Feature;
@@ -67,7 +66,6 @@
6766
import io.swagger.v3.oas.models.media.StringSchema;
6867
import io.swagger.v3.oas.models.parameters.Parameter;
6968
import io.swagger.v3.oas.models.responses.ApiResponses;
70-
import io.swagger.v3.oas.models.servers.Server;
7169
import org.apache.commons.lang3.ArrayUtils;
7270
import org.apache.commons.lang3.StringUtils;
7371
import org.slf4j.Logger;
@@ -300,7 +298,7 @@ public static void addHiddenRestControllers(String... classes) {
300298
* @return the open api
301299
*/
302300
protected synchronized OpenAPI getOpenApi(Locale locale) {
303-
OpenAPI openAPI;
301+
final OpenAPI openAPI;
304302
final Locale finalLocale = locale == null ? Locale.getDefault() : locale;
305303
if (openAPIService.getCachedOpenAPI(finalLocale) == null || springDocConfigProperties.isCacheDisabled()) {
306304
Instant start = Instant.now();
@@ -312,7 +310,6 @@ protected synchronized OpenAPI getOpenApi(Locale locale) {
312310
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a1, a2) -> a1));
313311

314312
Map<String, Object> findControllerAdvice = openAPIService.getControllerAdviceMap();
315-
// calculate generic responses
316313
if (OpenApiVersion.OPENAPI_3_1 == springDocConfigProperties.getApiDocs().getVersion())
317314
openAPI.openapi(OpenApiVersion.OPENAPI_3_1.getVersion());
318315
if (springDocConfigProperties.isDefaultOverrideWithGenericResponse()) {
@@ -329,29 +326,12 @@ protected synchronized OpenAPI getOpenApi(Locale locale) {
329326
this.calculatePath(routerOperationList, locale, openAPI);
330327
}
331328
);
332-
333329
if (!CollectionUtils.isEmpty(openAPI.getServers()))
334330
openAPIService.setServersPresent(true);
335-
openAPIService.updateServers(openAPI);
336331

337332
if (springDocConfigProperties.isRemoveBrokenReferenceDefinitions())
338333
this.removeBrokenReferenceDefinitions(openAPI);
339334

340-
// run the optional customisers
341-
List<Server> servers = openAPI.getServers();
342-
List<Server> serversCopy = null;
343-
try {
344-
serversCopy = springDocProviders.jsonMapper()
345-
.readValue(springDocProviders.jsonMapper().writeValueAsString(servers), new TypeReference<List<Server>>() {});
346-
}
347-
catch (JsonProcessingException e) {
348-
LOGGER.warn("Json Processing Exception occurred: {}", e.getMessage());
349-
}
350-
351-
openApiLocaleCustomizers.values().forEach(openApiLocaleCustomizer -> openApiLocaleCustomizer.customise(openAPI, finalLocale));
352-
openApiCustomizers.ifPresent(apiCustomisers -> apiCustomisers.forEach(openApiCustomizer -> openApiCustomizer.customise(openAPI)));
353-
if (!CollectionUtils.isEmpty(openAPI.getServers()) && !openAPI.getServers().equals(serversCopy))
354-
openAPIService.setServersPresent(true);
355335

356336
openAPIService.setCachedOpenAPI(openAPI, finalLocale);
357337

@@ -360,8 +340,11 @@ protected synchronized OpenAPI getOpenApi(Locale locale) {
360340
}
361341
else {
362342
LOGGER.debug("Fetching openApi document from cache");
363-
openAPI = openAPIService.updateServers(openAPIService.getCachedOpenAPI(finalLocale));
343+
openAPI = openAPIService.getCachedOpenAPI(finalLocale);
364344
}
345+
openAPIService.updateServers(openAPI);
346+
openApiLocaleCustomizers.values().forEach(openApiLocaleCustomizer -> openApiLocaleCustomizer.customise(openAPI, finalLocale));
347+
openApiCustomizers.ifPresent(apiCustomizers -> apiCustomizers.forEach(openApiCustomizer -> openApiCustomizer.customise(openAPI)));
365348
return openAPI;
366349
}
367350

Diff for: springdoc-openapi-starter-common/src/main/java/org/springdoc/core/service/OpenAPIService.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -292,15 +292,14 @@ private void initializeHiddenRestController() {
292292
* @param openAPI the open api
293293
* @return the open api
294294
*/
295-
public OpenAPI updateServers(OpenAPI openAPI) {
295+
public void updateServers(OpenAPI openAPI) {
296296
if (!isServersPresent && serverBaseUrl != null) // default server value
297297
{
298298
Server server = new Server().url(serverBaseUrl).description(DEFAULT_SERVER_DESCRIPTION);
299299
List<Server> servers = new ArrayList<>();
300300
servers.add(server);
301301
openAPI.setServers(servers);
302302
}
303-
return openAPI;
304303
}
305304

306305
/**

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

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

34-
import io.swagger.v3.core.util.Json;
3534
import io.swagger.v3.oas.annotations.enums.ParameterIn;
3635
import io.swagger.v3.oas.models.OpenAPI;
3736
import io.swagger.v3.oas.models.Operation;
@@ -72,6 +71,7 @@
7271
import static org.hamcrest.Matchers.nullValue;
7372
import static org.mockito.ArgumentMatchers.any;
7473
import static org.mockito.Mockito.doAnswer;
74+
import static org.mockito.Mockito.doCallRealMethod;
7575
import static org.mockito.Mockito.when;
7676
import static org.springframework.web.bind.annotation.RequestMethod.GET;
7777

@@ -125,7 +125,6 @@ public void setUp() {
125125
when(openAPIService.getContext()).thenReturn(context);
126126

127127
when(openAPIBuilderObjectFactory.getObject()).thenReturn(openAPIService);
128-
when(springDocProviders.jsonMapper()).thenReturn(Json.mapper());
129128
}
130129

131130
@Test
@@ -189,7 +188,7 @@ void calculatePathFromRouterOperation() {
189188

190189
@Test
191190
void preLoadingModeShouldNotOverwriteServers() throws InterruptedException {
192-
when(openAPIService.updateServers(any())).thenCallRealMethod();
191+
doCallRealMethod().when(openAPIService).updateServers(any());
193192
when(openAPIService.getCachedOpenAPI(any())).thenCallRealMethod();
194193
doAnswer(new CallsRealMethods()).when(openAPIService).setServersPresent(true);
195194
doAnswer(new CallsRealMethods()).when(openAPIService).setServerBaseUrl(any());
@@ -227,7 +226,7 @@ void preLoadingModeShouldNotOverwriteServers() throws InterruptedException {
227226

228227
@Test
229228
void serverBaseUrlCustomisersTest() throws InterruptedException {
230-
when(openAPIService.updateServers(any())).thenCallRealMethod();
229+
doCallRealMethod().when(openAPIService).updateServers(any());
231230
when(openAPIService.getCachedOpenAPI(any())).thenCallRealMethod();
232231
doAnswer(new CallsRealMethods()).when(openAPIService).setServerBaseUrl(any());
233232
doAnswer(new CallsRealMethods()).when(openAPIService).setCachedOpenAPI(any(), any());
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
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}}
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}}

0 commit comments

Comments
 (0)