Skip to content

Commit 8fa89e0

Browse files
committed
Refresh the browser each time, the global header is added in duplicate.
Fixes #1820
1 parent 8057baa commit 8fa89e0

File tree

3 files changed

+23
-4
lines changed

3 files changed

+23
-4
lines changed

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

+20-3
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848

4949
import com.fasterxml.jackson.annotation.JsonView;
5050
import com.fasterxml.jackson.core.JsonProcessingException;
51+
import com.fasterxml.jackson.core.type.TypeReference;
5152
import com.fasterxml.jackson.databind.ObjectMapper;
5253
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
5354
import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator.Feature;
@@ -65,6 +66,7 @@
6566
import io.swagger.v3.oas.models.media.StringSchema;
6667
import io.swagger.v3.oas.models.parameters.Parameter;
6768
import io.swagger.v3.oas.models.responses.ApiResponses;
69+
import io.swagger.v3.oas.models.servers.Server;
6870
import org.apache.commons.lang3.ArrayUtils;
6971
import org.apache.commons.lang3.StringUtils;
7072
import org.slf4j.Logger;
@@ -337,10 +339,26 @@ protected synchronized OpenAPI getOpenApi(Locale locale) {
337339
);
338340
if (!CollectionUtils.isEmpty(openAPI.getServers()))
339341
openAPIService.setServersPresent(true);
342+
openAPIService.updateServers(openAPI);
340343

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

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

345363
openAPIService.setCachedOpenAPI(openAPI, finalLocale);
346364

@@ -350,10 +368,9 @@ protected synchronized OpenAPI getOpenApi(Locale locale) {
350368
else {
351369
LOGGER.debug("Fetching openApi document from cache");
352370
openAPI = openAPIService.getCachedOpenAPI(finalLocale);
371+
openAPIService.updateServers(openAPI);
353372
}
354-
openAPIService.updateServers(openAPI);
355-
openApiLocaleCustomizers.values().forEach(openApiLocaleCustomizer -> openApiLocaleCustomizer.customise(openAPI, finalLocale));
356-
openApiCustomisers.ifPresent(apiCustomizers -> apiCustomizers.forEach(openApiCustomizer -> openApiCustomizer.customise(openAPI)));
373+
357374
return openAPI;
358375
}
359376

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

+2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.util.Map;
3030
import java.util.Optional;
3131

32+
import io.swagger.v3.core.util.Json;
3233
import io.swagger.v3.oas.annotations.enums.ParameterIn;
3334
import io.swagger.v3.oas.models.OpenAPI;
3435
import io.swagger.v3.oas.models.Operation;
@@ -123,6 +124,7 @@ public void setUp() {
123124
when(openAPIService.build(any())).thenReturn(openAPI);
124125

125126
when(openAPIBuilderObjectFactory.getObject()).thenReturn(openAPIService);
127+
when(springDocProviders.jsonMapper()).thenReturn(Json.mapper());
126128
}
127129

128130
@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)