Skip to content

Commit 42d29d7

Browse files
committed
Explicitly render useWrapping = true to @JacksonXmlElementWrapper
This was slightly inspired by @jzrebiec via PR OpenAPITools#5371. Wrapping is the default since Jackson 2.1 – so explicitly rendering this will: - make generated model work out-of-the-box in Jackson 2.0 for instance - ensure the models still work if the local `XmlWrapper` was configured with `useXmlWrapper(false)`
1 parent 8dc123d commit 42d29d7

File tree

4 files changed

+7
-7
lines changed
  • modules/openapi-generator/src
  • samples
    • openapi3/server/petstore/springboot-3/src/main/java/org/openapitools/model
    • server/petstore/java-camel/src/main/java/org/openapitools/model

4 files changed

+7
-7
lines changed

modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ public class {{classname}}{{#parent}} extends {{{parent}}}{{/parent}}{{^parent}}
236236
{{#withXml}}
237237
@JacksonXmlProperty(localName = "{{items.xmlName}}{{^items.xmlName}}{{xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}{{/items.xmlName}}"{{#isXmlAttribute}}, isAttribute = true{{/isXmlAttribute}}{{#xmlNamespace}}, namespace = "{{.}}"{{/xmlNamespace}})
238238
{{#isContainer}}
239-
@JacksonXmlElementWrapper({{#isXmlWrapped}}localName = "{{xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}"{{#xmlNamespace}}, namespace = "{{.}}"{{/xmlNamespace}}{{/isXmlWrapped}}{{^isXmlWrapped}}useWrapping = false{{/isXmlWrapped}})
239+
@JacksonXmlElementWrapper({{#isXmlWrapped}}localName = "{{xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}", {{#xmlNamespace}}namespace = "{{.}}", {{/xmlNamespace}}{{/isXmlWrapped}}useWrapping = {{isXmlWrapped}})
240240
{{/isContainer}}
241241
{{/withXml}}
242242
{{/jackson}}

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4876,7 +4876,7 @@ public void shouldGenerateOptionalParameterTypesWhenUsingOptionalAndDelegate_iss
48764876
.containsWithNameAndAttributes("XmlElement", Map.of("name", "\"Tag\""))
48774877
.containsWithNameAndAttributes("XmlElementWrapper", Map.of("name", "\"TagList\""))
48784878
.containsWithNameAndAttributes("JacksonXmlProperty", Map.of("localName", "\"Tag\""))
4879-
.containsWithNameAndAttributes("JacksonXmlElementWrapper", Map.of("localName", "\"TagList\""))
4879+
.containsWithNameAndAttributes("JacksonXmlElementWrapper", Map.of("localName", "\"TagList\"", "useWrapping", "true"))
48804880
.toMethod().toFileAssert()
48814881

48824882
// ↓ custom internal xml-array element name, non-wrapped (1st example in https://spec.openapis.org/oas/v3.0.0#xml-arrays)
@@ -4904,7 +4904,7 @@ public void shouldGenerateOptionalParameterTypesWhenUsingOptionalAndDelegate_iss
49044904
.containsWithNameAndAttributes("XmlElement", Map.of("name", "\"photoUrls\""))
49054905
.containsWithNameAndAttributes("XmlElementWrapper", Map.of("name", "\"photoUrls\""))
49064906
.containsWithNameAndAttributes("JacksonXmlProperty", Map.of("localName", "\"photoUrls\""))
4907-
.containsWithNameAndAttributes("JacksonXmlElementWrapper", Map.of("localName", "\"photoUrls\""))
4907+
.containsWithNameAndAttributes("JacksonXmlElementWrapper", Map.of("localName", "\"photoUrls\"", "useWrapping", "true"))
49084908
.toMethod().toFileAssert()
49094909

49104910
// ↓ test attribute generation (https://swagger.io/docs/specification/data-models/representing-xml/#:~:text=Convert%20Property%20to%20an%20Attribute)

samples/openapi3/server/petstore/springboot-3/src/main/java/org/openapitools/model/Pet.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ public Pet addPhotoUrlsItem(String photoUrlsItem) {
199199
@Schema(name = "photoUrls", requiredMode = Schema.RequiredMode.REQUIRED)
200200
@JsonProperty("photoUrls")
201201
@JacksonXmlProperty(localName = "photoUrl")
202-
@JacksonXmlElementWrapper(localName = "photoUrls")
202+
@JacksonXmlElementWrapper(localName = "photoUrls", useWrapping = true)
203203
@XmlElement(name = "photoUrl")
204204
@XmlElementWrapper(name = "photoUrls")
205205
public List<String> getPhotoUrls() {
@@ -231,7 +231,7 @@ public Pet addTagsItem(Tag tagsItem) {
231231
@Schema(name = "tags", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
232232
@JsonProperty("tags")
233233
@JacksonXmlProperty(localName = "Tag")
234-
@JacksonXmlElementWrapper(localName = "tag")
234+
@JacksonXmlElementWrapper(localName = "tag", useWrapping = true)
235235
@XmlElement(name = "Tag")
236236
@XmlElementWrapper(name = "tag")
237237
public List<@Valid Tag> getTags() {

samples/server/petstore/java-camel/src/main/java/org/openapitools/model/Pet.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ public Pet addPhotoUrlsItem(String photoUrlsItem) {
188188
@Schema(name = "photoUrls", requiredMode = Schema.RequiredMode.REQUIRED)
189189
@JsonProperty("photoUrls")
190190
@JacksonXmlProperty(localName = "photoUrl")
191-
@JacksonXmlElementWrapper(localName = "photoUrls")
191+
@JacksonXmlElementWrapper(localName = "photoUrls", useWrapping = true)
192192
@XmlElement(name = "photoUrl")
193193
@XmlElementWrapper(name = "photoUrls")
194194
public List<String> getPhotoUrls() {
@@ -220,7 +220,7 @@ public Pet addTagsItem(Tag tagsItem) {
220220
@Schema(name = "tags", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
221221
@JsonProperty("tags")
222222
@JacksonXmlProperty(localName = "Tag")
223-
@JacksonXmlElementWrapper(localName = "tag")
223+
@JacksonXmlElementWrapper(localName = "tag", useWrapping = true)
224224
@XmlElement(name = "Tag")
225225
@XmlElementWrapper(name = "tag")
226226
public List<@Valid Tag> getTags() {

0 commit comments

Comments
 (0)