package com.fasterxml.jackson.dataformat.xml.misc;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.dataformat.xml.XmlTestBase;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText;
public class XmlTextTest extends XmlTestBase
{
@JsonPropertyOrder({"first","second"})
static class Data{
@JacksonXmlText
public String first;
public String second;
public Data(String first, String second) {
this.first = first;
this.second = second;
}
}
static class Phone
{
@JacksonXmlProperty(isAttribute = true)
public String phoneType = "mobile";
@JacksonXmlText
public String phoneNumber = "555-1234";
}
static class WindSpeed {
@JacksonXmlProperty(isAttribute = true)
public String units;
@JacksonXmlText
public int value;
public Radius radius;
}
static class Radius {
@JacksonXmlText
public int value;
}
/*
/**********************************************************
/* Test methods
/**********************************************************
*/
private final XmlMapper MAPPER = xmlMapper(true);
public void testXmlTextWithSuppressedValue() throws Exception
{
final XmlMapper mapper = new XmlMapper();
mapper.setSerializationInclusion(Include.NON_EMPTY);
String xml = mapper.writeValueAsString(new Data("","second"));
String expectedXml = "<Data><second>second</second></Data>";
assertEquals(expectedXml, xml);
}
// for [dataformat-xml#196]
public void testMixedContent() throws Exception
{
WindSpeed result = MAPPER.readValue("<windSpeed units='kt'> 27 <radius>20</radius></windSpeed>",
WindSpeed.class);
assertEquals(27, result.value);
assertNotNull(result.radius);
assertEquals(20, result.radius.value);
}
// for [dataformat-xml#198]
public void testSimple198() throws Exception
{
String xml = MAPPER.writeValueAsString(new Phone());
Phone result = MAPPER.readValue(xml, Phone.class);
assertNotNull(result);
}
}