Skip to content

Commit 16bfb89

Browse files
authored
Merge pull request #3235 from Mattias-Sehlstedt/resolve-extension-as-object-node
fix: PropertyResolverUtils retains a JsonNode when reading an ExtensionProperty annotation
2 parents 3e7b337 + 07770a6 commit 16bfb89

5 files changed

Lines changed: 30 additions & 9 deletions

File tree

springdoc-openapi-starter-common/src/main/java/org/springdoc/core/utils/PropertyResolverUtils.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,12 @@ public Map<String, Object> resolveExtensions(Locale locale, Map<String, Object>
234234
Map<String, Object> valueResolved = new HashMap<>();
235235
valueAsMap.forEach((key1, value1) -> {
236236
String key1Resolved = resolve(key1.toString(), locale);
237-
String value1Resolved = resolve(value1.toString(), locale);
237+
Object value1Resolved;
238+
if (value1 instanceof String valueAsString) {
239+
value1Resolved = resolve(valueAsString, locale);
240+
} else {
241+
value1Resolved = value1;
242+
}
238243
valueResolved.put(key1Resolved, value1Resolved);
239244
});
240245
extensionsResolved.put(keyResolved, valueResolved);

springdoc-openapi-starter-webmvc-api/src/test/java/test/org/springdoc/api/v30/app213/HelloController.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@
3131
name = "uri",
3232
value = "${api.extensions.properties.uri}/testcontroller/getTest"),
3333
@ExtensionProperty(name = "passthroughBehavior", value = "${api.extensions.properties.passthroughBehavior}"),
34-
@ExtensionProperty(name = "connectionType", value = "${api.extensions.properties.connectionType}") }) },
35-
34+
@ExtensionProperty(name = "connectionType", value = "${api.extensions.properties.connectionType}")
35+
})
36+
},
3637
title = "${api.info.title}",
3738
version = "${api.info.version}",
3839
description = "${api.info.description}",
@@ -57,7 +58,10 @@ public class HelloController {
5758
name = "uri",
5859
value = "${api.extensions.properties.uri}/testcontroller/getTest"),
5960
@ExtensionProperty(name = "passthroughBehavior", value = "${api.extensions.properties.passthroughBehavior}"),
60-
@ExtensionProperty(name = "connectionType", value = "${api.extensions.properties.connectionType}") }) })
61+
@ExtensionProperty(name = "connectionType", value = "${api.extensions.properties.connectionType}") ,
62+
@ExtensionProperty(name = "jsonProperty", parseValue = true, value = "{ \"key\": \"value\", \"key2\": \"value2\" }")
63+
})
64+
})
6165

6266
public PersonDTO queryMyDto() {
6367
// This return a PageImpl with the data, the method parameter 'query' is a pojo containg filter properties

springdoc-openapi-starter-webmvc-api/src/test/java/test/org/springdoc/api/v31/app213/HelloController.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@
3131
name = "uri",
3232
value = "${api.extensions.properties.uri}/testcontroller/getTest"),
3333
@ExtensionProperty(name = "passthroughBehavior", value = "${api.extensions.properties.passthroughBehavior}"),
34-
@ExtensionProperty(name = "connectionType", value = "${api.extensions.properties.connectionType}") }) },
35-
34+
@ExtensionProperty(name = "connectionType", value = "${api.extensions.properties.connectionType}")
35+
})
36+
},
3637
title = "${api.info.title}",
3738
version = "${api.info.version}",
3839
description = "${api.info.description}",
@@ -57,7 +58,10 @@ public class HelloController {
5758
name = "uri",
5859
value = "${api.extensions.properties.uri}/testcontroller/getTest"),
5960
@ExtensionProperty(name = "passthroughBehavior", value = "${api.extensions.properties.passthroughBehavior}"),
60-
@ExtensionProperty(name = "connectionType", value = "${api.extensions.properties.connectionType}") }) })
61+
@ExtensionProperty(name = "connectionType", value = "${api.extensions.properties.connectionType}"),
62+
@ExtensionProperty(name = "jsonProperty", parseValue = true, value = "{ \"key\": \"value\", \"key2\": \"value2\" }")
63+
})
64+
})
6165

6266
public PersonDTO queryMyDto() {
6367
// This return a PageImpl with the data, the method parameter 'query' is a pojo containg filter properties

springdoc-openapi-starter-webmvc-api/src/test/resources/results/3.0.1/app213.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,11 @@
5353
"type": "http_proxy",
5454
"httpMethod": "GET",
5555
"uri": "http://my-vpc/nlb-link/testcontroller/getTest",
56-
"connectionType": "VPC_LINK"
56+
"connectionType": "VPC_LINK",
57+
"jsonProperty" : {
58+
"key" : "value",
59+
"key2" : "value2"
60+
}
5761
}
5862
}
5963
}

springdoc-openapi-starter-webmvc-api/src/test/resources/results/3.1.0/app213.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,11 @@
5353
"type": "http_proxy",
5454
"httpMethod": "GET",
5555
"uri": "http://my-vpc/nlb-link/testcontroller/getTest",
56-
"connectionType": "VPC_LINK"
56+
"connectionType": "VPC_LINK",
57+
"jsonProperty" : {
58+
"key" : "value",
59+
"key2" : "value2"
60+
}
5761
}
5862
}
5963
}

0 commit comments

Comments
 (0)