Skip to content

Commit ea6fb8d

Browse files
author
bnasslahsen
committed
[Feature] Pretty print OpenApi spec. Fixes #703
1 parent 174e09c commit ea6fb8d

File tree

3 files changed

+30
-8
lines changed

3 files changed

+30
-8
lines changed

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ public class SpringDocConfigProperties {
6262

6363
private boolean removeBrokenReferenceDefinitions = true;
6464

65+
private boolean writerWithDefaultPrettyPrinter;
66+
6567
private String defaultConsumesMediaType = MediaType.APPLICATION_JSON_VALUE;
6668

6769
private String defaultProducesMediaType = MediaType.ALL_VALUE;
@@ -194,6 +196,14 @@ public void setRemoveBrokenReferenceDefinitions(boolean removeBrokenReferenceDef
194196
this.removeBrokenReferenceDefinitions = removeBrokenReferenceDefinitions;
195197
}
196198

199+
public boolean isWriterWithDefaultPrettyPrinter() {
200+
return writerWithDefaultPrettyPrinter;
201+
}
202+
203+
public void setWriterWithDefaultPrettyPrinter(boolean writerWithDefaultPrettyPrinter) {
204+
this.writerWithDefaultPrettyPrinter = writerWithDefaultPrettyPrinter;
205+
}
206+
197207
public static class Webjars {
198208
private String prefix = DEFAULT_WEB_JARS_PREFIX_URL;
199209

springdoc-openapi-webflux-core/src/main/java/org/springdoc/webflux/api/OpenApiResource.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,10 @@ public Mono<String> openapiJson(ServerHttpRequest serverHttpRequest, @Value(API_
9494
throws JsonProcessingException {
9595
calculateServerUrl(serverHttpRequest, apiDocsUrl);
9696
OpenAPI openAPI = this.getOpenApi();
97-
return Mono.just(Json.mapper().writeValueAsString(openAPI));
97+
if (!springDocConfigProperties.isWriterWithDefaultPrettyPrinter())
98+
return Mono.just(Json.mapper().writeValueAsString(openAPI));
99+
else
100+
return Mono.just(Json.mapper().writerWithDefaultPrettyPrinter().writeValueAsString(openAPI));
98101
}
99102

100103
@Operation(hidden = true)
@@ -103,7 +106,10 @@ public Mono<String> openapiYaml(ServerHttpRequest serverHttpRequest,
103106
@Value(DEFAULT_API_DOCS_URL_YAML) String apiDocsUrl) throws JsonProcessingException {
104107
calculateServerUrl(serverHttpRequest, apiDocsUrl);
105108
OpenAPI openAPI = this.getOpenApi();
106-
return Mono.just(Yaml.mapper().writeValueAsString(openAPI));
109+
if (!springDocConfigProperties.isWriterWithDefaultPrettyPrinter())
110+
return Mono.just(Yaml.mapper().writeValueAsString(openAPI));
111+
else
112+
return Mono.just(Yaml.mapper().writerWithDefaultPrettyPrinter().writeValueAsString(openAPI));
107113
}
108114

109115
@Override

springdoc-openapi-webmvc-core/src/main/java/org/springdoc/webmvc/api/OpenApiResource.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public OpenApiResource(String groupName, OpenAPIBuilder openAPIBuilder, Abstract
9595
this.servletContextProvider = servletContextProvider;
9696
this.springSecurityOAuth2Provider = springSecurityOAuth2Provider;
9797
this.routerFunctionProvider = routerFunctionProvider;
98-
this.repositoryRestResourceProvider=repositoryRestResourceProvider;
98+
this.repositoryRestResourceProvider = repositoryRestResourceProvider;
9999
}
100100

101101
@Autowired
@@ -114,7 +114,7 @@ public OpenApiResource(OpenAPIBuilder openAPIBuilder, AbstractRequestBuilder req
114114
this.servletContextProvider = servletContextProvider;
115115
this.springSecurityOAuth2Provider = springSecurityOAuth2Provider;
116116
this.routerFunctionProvider = routerFunctionProvider;
117-
this.repositoryRestResourceProvider=repositoryRestResourceProvider;
117+
this.repositoryRestResourceProvider = repositoryRestResourceProvider;
118118
}
119119

120120
@Operation(hidden = true)
@@ -123,7 +123,10 @@ public String openapiJson(HttpServletRequest request, @Value(API_DOCS_URL) Strin
123123
throws JsonProcessingException {
124124
calculateServerUrl(request, apiDocsUrl);
125125
OpenAPI openAPI = this.getOpenApi();
126-
return Json.mapper().writeValueAsString(openAPI);
126+
if (!springDocConfigProperties.isWriterWithDefaultPrettyPrinter())
127+
return Json.mapper().writeValueAsString(openAPI);
128+
else
129+
return Json.mapper().writerWithDefaultPrettyPrinter().writeValueAsString(openAPI);
127130
}
128131

129132
@Operation(hidden = true)
@@ -132,7 +135,10 @@ public String openapiYaml(HttpServletRequest request, @Value(DEFAULT_API_DOCS_UR
132135
throws JsonProcessingException {
133136
calculateServerUrl(request, apiDocsUrl);
134137
OpenAPI openAPI = this.getOpenApi();
135-
return Yaml.mapper().writeValueAsString(openAPI);
138+
if (!springDocConfigProperties.isWriterWithDefaultPrettyPrinter())
139+
return Yaml.mapper().writeValueAsString(openAPI);
140+
else
141+
return Yaml.mapper().writerWithDefaultPrettyPrinter().writeValueAsString(openAPI);
136142
}
137143

138144
@Override
@@ -157,9 +163,9 @@ protected void getPaths(Map<String, Object> restControllers) {
157163
routerFunctionProvider.ifPresent(routerFunctions -> routerFunctions.getWebMvcRouterFunctionPaths()
158164
.ifPresent(routerBeans -> routerBeans.forEach(this::getRouterFunctionPaths)));
159165

160-
if(repositoryRestResourceProvider.isPresent()){
166+
if (repositoryRestResourceProvider.isPresent()) {
161167
RepositoryRestResourceProvider restResourceProvider = this.repositoryRestResourceProvider.get();
162-
List<RouterOperation> operationList = restResourceProvider.getRouterOperations(openAPIBuilder.getCalculatedOpenAPI());
168+
List<RouterOperation> operationList = restResourceProvider.getRouterOperations(openAPIBuilder.getCalculatedOpenAPI());
163169
calculatePath(operationList);
164170
}
165171
}

0 commit comments

Comments
 (0)