Skip to content

Commit 8f8381c

Browse files
author
Thomas Deville-Duc
committed
add property resolver on @operation.summary, @parameter.description and @parameter.name
1 parent 452aa82 commit 8f8381c

File tree

7 files changed

+115
-6
lines changed

7 files changed

+115
-6
lines changed

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,19 @@ public class GenericParameterBuilder {
6161

6262
private final LocalVariableTableParameterNameDiscoverer localSpringDocParameterNameDiscoverer;
6363
private final IgnoredParameterAnnotations ignoredParameterAnnotations;
64+
private final PropertyResolverUtils propertyResolverUtils;
6465
private static final List<Class<?>> FILE_TYPES = new ArrayList<>();
6566

6667
static {
6768
FILE_TYPES.add(MultipartFile.class);
6869
}
6970

70-
public GenericParameterBuilder(LocalVariableTableParameterNameDiscoverer localSpringDocParameterNameDiscoverer, IgnoredParameterAnnotations ignoredParameterAnnotations) {
71+
public GenericParameterBuilder(LocalVariableTableParameterNameDiscoverer localSpringDocParameterNameDiscoverer,
72+
IgnoredParameterAnnotations ignoredParameterAnnotations,
73+
PropertyResolverUtils propertyResolverUtils) {
7174
this.localSpringDocParameterNameDiscoverer = localSpringDocParameterNameDiscoverer;
7275
this.ignoredParameterAnnotations = ignoredParameterAnnotations;
76+
this.propertyResolverUtils = propertyResolverUtils;
7377
}
7478

7579
Parameter mergeParameter(List<Parameter> existingParamDoc, Parameter paramCalcul) {
@@ -132,10 +136,10 @@ Parameter buildParameterFromDoc(io.swagger.v3.oas.annotations.Parameter paramete
132136
Components components, JsonView jsonView) {
133137
Parameter parameter = new Parameter();
134138
if (StringUtils.isNotBlank(parameterDoc.description())) {
135-
parameter.setDescription(parameterDoc.description());
139+
parameter.setDescription(propertyResolverUtils.resolve(parameterDoc.description()));
136140
}
137141
if (StringUtils.isNotBlank(parameterDoc.name())) {
138-
parameter.setName(parameterDoc.name());
142+
parameter.setName(propertyResolverUtils.resolve(parameterDoc.name()));
139143
}
140144
if (StringUtils.isNotBlank(parameterDoc.in().toString())) {
141145
parameter.setIn(parameterDoc.in().toString());

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public OperationBuilder(GenericParameterBuilder parameterBuilder, RequestBodyBui
7979
public OpenAPI parse(Components components, io.swagger.v3.oas.annotations.Operation apiOperation,
8080
Operation operation, OpenAPI openAPI, MethodAttributes methodAttributes) {
8181
if (StringUtils.isNotBlank(apiOperation.summary())) {
82-
operation.setSummary(apiOperation.summary());
82+
operation.setSummary(propertyResolverUtils.resolve(apiOperation.summary()));
8383
}
8484
if (StringUtils.isNotBlank(apiOperation.description())) {
8585
operation.setDescription(propertyResolverUtils.resolve(apiOperation.description()));

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,10 @@ public GenericReturnTypeParser genericReturnTypeParser() {
124124
}
125125

126126
@Bean
127-
public GenericParameterBuilder parameterBuilder(LocalVariableTableParameterNameDiscoverer localSpringDocParameterNameDiscoverer, IgnoredParameterAnnotations ignoredParameterAnnotations) {
128-
return new GenericParameterBuilder(localSpringDocParameterNameDiscoverer, ignoredParameterAnnotations);
127+
public GenericParameterBuilder parameterBuilder(LocalVariableTableParameterNameDiscoverer localSpringDocParameterNameDiscoverer,
128+
IgnoredParameterAnnotations ignoredParameterAnnotations,
129+
PropertyResolverUtils propertyResolverUtils) {
130+
return new GenericParameterBuilder(localSpringDocParameterNameDiscoverer, ignoredParameterAnnotations, propertyResolverUtils);
129131
}
130132

131133
static class ConditionOnCacheOrGroupedOpenApi extends AnyNestedCondition {
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package test.org.springdoc.api.app95;
2+
3+
import io.swagger.v3.oas.annotations.Operation;
4+
import io.swagger.v3.oas.annotations.Parameter;
5+
import org.springframework.web.bind.annotation.GetMapping;
6+
import org.springframework.web.bind.annotation.RequestMapping;
7+
import org.springframework.web.bind.annotation.RestController;
8+
9+
@RestController
10+
@RequestMapping("/persons")
11+
public class HelloController {
12+
13+
@GetMapping
14+
@Operation(summary = "${test.app95.operation.persons.summary}",
15+
description = "${test.app95.operation.persons.description}")
16+
public void persons(@Parameter(description = "${test.app95.param.name.description}") String name) {
17+
18+
}
19+
20+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
*
3+
* * Copyright 2019-2020 the original author or authors.
4+
* *
5+
* * Licensed under the Apache License, Version 2.0 (the "License");
6+
* * you may not use this file except in compliance with the License.
7+
* * You may obtain a copy of the License at
8+
* *
9+
* * https://www.apache.org/licenses/LICENSE-2.0
10+
* *
11+
* * Unless required by applicable law or agreed to in writing, software
12+
* * distributed under the License is distributed on an "AS IS" BASIS,
13+
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* * See the License for the specific language governing permissions and
15+
* * limitations under the License.
16+
*
17+
*/
18+
19+
package test.org.springdoc.api.app95;
20+
21+
22+
import org.springframework.boot.autoconfigure.SpringBootApplication;
23+
import org.springframework.test.context.ActiveProfiles;
24+
import test.org.springdoc.api.AbstractSpringDocTest;
25+
26+
@ActiveProfiles("95")
27+
public class SpringDocApp95Test extends AbstractSpringDocTest {
28+
29+
@SpringBootApplication
30+
static class SpringDocTestApp {}
31+
32+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
test:
2+
app95:
3+
operation:
4+
persons:
5+
summary: Summary of operation persons
6+
description: Description of operation persons
7+
param:
8+
name:
9+
description: Description of parameter name
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
{
2+
"openapi": "3.0.1",
3+
"info": {
4+
"title": "OpenAPI definition",
5+
"version": "v0"
6+
},
7+
"servers": [
8+
{
9+
"url": "http://localhost",
10+
"description": "Generated server url"
11+
}
12+
],
13+
"paths": {
14+
"/persons": {
15+
"get": {
16+
"tags": [
17+
"hello-controller"
18+
],
19+
"summary": "Summary of operation persons",
20+
"description": "Description of operation persons",
21+
"operationId": "persons",
22+
"parameters": [
23+
{
24+
"name": "name",
25+
"in": "query",
26+
"description": "Description of parameter name",
27+
"required": true,
28+
"schema": {
29+
"type": "string"
30+
}
31+
}
32+
],
33+
"responses": {
34+
"200": {
35+
"description": "default response"
36+
}
37+
}
38+
}
39+
}
40+
},
41+
"components": {}
42+
}

0 commit comments

Comments
 (0)