package com.fasterxml.jackson.dataformat.xml.failing;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.dataformat.xml.XmlTestBase;
public class TestStringValues162 extends XmlTestBase
{
static class Name {
public String first;
public String last;
public Name() { }
public Name(String f, String l) {
first = f;
last = l;
}
}
static class Names {
public List<Name> names = new ArrayList<Name>();
}
/*
/**********************************************************
/* Unit tests
/**********************************************************
*/
private final XmlMapper MAPPER = new XmlMapper();
public void testEmptyString162() throws Exception
{
Name name = MAPPER.readValue("<name><first>Ryan</first><last></last></name>",
Name.class);
assertNotNull(name);
assertEquals("Ryan", name.first);
assertEquals("", name.last);
}
public void testEmptyStringElement() throws Exception
{
// then with empty element
StringBean bean = MAPPER.readValue("<StringBean><text></text></StringBean>", StringBean.class);
assertNotNull(bean);
// empty String or null?
// As per [dataformat-xml#162], really should be "", not null:
assertEquals("", bean.text);
// assertNull(bean.text);
}
public void testStringsInList() throws Exception
{
Names input = new Names();
input.names.add(new Name("Bob", "Lee"));
input.names.add(new Name("", ""));
input.names.add(new Name("Sponge", "Bob"));
String xml = MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(input);
//System.err.println("XML:\n"+xml);
Names result = MAPPER.readValue(xml, Names.class);
assertNotNull(result);
assertNotNull(result.names);
assertEquals(3, result.names.size());
assertEquals("Bob", result.names.get(2).last);
// [dataformat-xml#162]: should get empty String, not null
assertEquals("", result.names.get(1).first);
}
}