package com.fasterxml.jackson.dataformat.xml.failing; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import com.fasterxml.jackson.dataformat.xml.XmlTestBase; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; public class TestUnwrappedDeserIssue86 extends XmlTestBase { @JacksonXmlRootElement(localName = "test") public static class Issue86 { @JacksonXmlProperty(localName = "id", isAttribute = true) public String id; @JacksonXmlElementWrapper(useWrapping = false) @JacksonXmlProperty(localName = "test") public List<Issue86> children; public Issue86() {} public Issue86(final String id, final List<Issue86> children) { this.id = id; this.children = children; } @Override public boolean equals(final Object other) { if (other == this) return true; if (other == null) return false; if (!(other instanceof Issue86)) { return false; } final Issue86 otherIssue86 = (Issue86) other; return otherIssue86.id.equals(id) && otherIssue86.children.equals(children); } } /* /********************************************************************** /* Test methods /*********************************************************************** */ public void testDeserializeUnwrappedListWhenLocalNameForRootElementAndXmlPropertyMatch() throws Exception { final String source = "<test id=\"0\">" + "<test id=\"0.1\">" + "<test id=\"0.1.1\"/>" + "</test>" + "<test id=\"0.2\"/>" + "<test id=\"0.3\">" + "<test id=\"0.3.1\"/>" + "</test>" + "</test>"; final Issue86 before = new Issue86("0", Arrays.asList(new Issue86("0.1", Arrays.asList(new Issue86("0.1.1", null))), new Issue86("0.2", null), new Issue86("0.3", Arrays.asList( new Issue86("0.3.1", null))))); final XmlMapper mapper = new XmlMapper(); mapper.setSerializationInclusion(Include.NON_NULL); final String xml = mapper.writeValueAsString(before); assertEquals(source, xml); final Issue86 after = mapper.readValue(xml, Issue86.class); assertEquals(before, after); } }