Skip to content

Commit 099f91a

Browse files
authored
Fix #578 (@JsonAppend properties serialized twice) (#590)
1 parent a18b8cd commit 099f91a

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

release-notes/VERSION-2.x

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ Project: jackson-dataformat-xml
44
=== Releases ===
55
------------------------------------------------------------------------
66

7+
Not yet released
8+
9+
#578: `XmlMapper` serializes `@JsonAppend` property twice
10+
(reported by @stepince)
11+
712
2.15.0-rc2 (28-Mar-2023)
813

914
#286: Conflict between `@JsonIdentityInfo` and Unwrapped Lists

src/main/java/com/fasterxml/jackson/dataformat/xml/JacksonXmlAnnotationIntrospector.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package com.fasterxml.jackson.dataformat.xml;
22

33
import java.lang.annotation.Annotation;
4+
import java.util.List;
45

56
import com.fasterxml.jackson.annotation.JsonProperty;
67
import com.fasterxml.jackson.databind.PropertyName;
78
import com.fasterxml.jackson.databind.cfg.MapperConfig;
89
import com.fasterxml.jackson.databind.introspect.*;
910
import com.fasterxml.jackson.databind.jsontype.impl.StdTypeResolverBuilder;
11+
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
1012
import com.fasterxml.jackson.dataformat.xml.annotation.*;
1113

1214
/**
@@ -124,6 +126,19 @@ public String findNamespace(MapperConfig<?> config, Annotated ann)
124126
return null;
125127
}
126128

129+
/**
130+
* Due to issue [dataformat-xml#578] need to suppress calls to this method
131+
* to avoid duplicate virtual properties from being added. Not elegant
132+
* but .. works.
133+
*
134+
* @since 2.15
135+
*/
136+
@Override
137+
public void findAndAddVirtualProperties(MapperConfig<?> config, AnnotatedClass ac,
138+
List<BeanPropertyWriter> properties) {
139+
return;
140+
}
141+
127142
/*
128143
/**********************************************************************
129144
/* XmlAnnotationIntrospector, isXxx methods

src/test/java/com/fasterxml/jackson/dataformat/xml/failing/JsonAppend578Test.java renamed to src/test/java/com/fasterxml/jackson/dataformat/xml/ser/JsonAppend578Test.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.fasterxml.jackson.dataformat.xml.failing;
1+
package com.fasterxml.jackson.dataformat.xml.ser;
22

33
import com.fasterxml.jackson.core.JsonGenerator;
44
import com.fasterxml.jackson.databind.*;
@@ -53,6 +53,6 @@ public VirtualBeanPropertyWriter withConfig(MapperConfig<?> config, AnnotatedCla
5353
// [dataformat-xml#578]: Duplication of virtual properties
5454
public void testJsonAppend() throws Exception {
5555
String xml = MAPPER.writeValueAsString(new Pojo578("foo"));
56-
assertEquals("<Pojo><name>foo</name><virtual>bar</virtual></Pojo>",xml);
56+
assertEquals("<Pojo578><name>foo</name><virtual>bar</virtual></Pojo578>",xml);
5757
}
5858
}

0 commit comments

Comments
 (0)