Skip to content

Commit 15da5ad

Browse files
committed
Add a failing test for #508
1 parent c0617ee commit 15da5ad

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.fasterxml.jackson.dataformat.xml.failing;
2+
3+
import com.fasterxml.jackson.core.JsonGenerator;
4+
import com.fasterxml.jackson.databind.*;
5+
import com.fasterxml.jackson.databind.annotation.JsonAppend;
6+
import com.fasterxml.jackson.databind.cfg.MapperConfig;
7+
import com.fasterxml.jackson.databind.introspect.AnnotatedClass;
8+
import com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition;
9+
import com.fasterxml.jackson.databind.ser.VirtualBeanPropertyWriter;
10+
import com.fasterxml.jackson.databind.util.Annotations;
11+
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
12+
import com.fasterxml.jackson.dataformat.xml.XmlTestBase;
13+
14+
public class JsonAppend508Test extends XmlTestBase
15+
{
16+
// [dataformat-xml#508]: Duplication of virtual properties
17+
@JsonAppend(props = @JsonAppend.Prop(name = "virtual", value = MyVirtualPropertyWriter.class))
18+
public static class Pojo508 {
19+
private final String name;
20+
21+
public Pojo508(String name) {
22+
this.name = name;
23+
}
24+
public String getName() {
25+
return name;
26+
}
27+
}
28+
29+
static class MyVirtualPropertyWriter extends VirtualBeanPropertyWriter {
30+
private static final long serialVersionUID = 1L;
31+
32+
public MyVirtualPropertyWriter() {}
33+
34+
protected MyVirtualPropertyWriter(BeanPropertyDefinition propDef, Annotations contextAnnotations,
35+
JavaType declaredType) {
36+
super(propDef, contextAnnotations, declaredType);
37+
}
38+
39+
@Override
40+
protected Object value(Object bean, JsonGenerator g, SerializerProvider prov) {
41+
return "bar";
42+
}
43+
44+
@Override
45+
public VirtualBeanPropertyWriter withConfig(MapperConfig<?> config, AnnotatedClass declaringClass,
46+
BeanPropertyDefinition propDef, JavaType type) {
47+
return new MyVirtualPropertyWriter(propDef, declaringClass.getAnnotations(), type);
48+
}
49+
}
50+
51+
private final XmlMapper MAPPER = newMapper();
52+
53+
// [dataformat-xml#508]: Duplication of virtual properties
54+
public void testJsonAppend() throws Exception {
55+
String xml = MAPPER.writeValueAsString(new Pojo508("foo"));
56+
assertEquals("<Pojo><name>foo</name><virtual>bar</virtual></Pojo>",xml);
57+
}
58+
}

0 commit comments

Comments
 (0)