package com.levelup.java.xml;
import static org.junit.Assert.assertNotNull;
import java.time.Instant;
import java.util.Date;
import java.util.List;
import org.apache.log4j.Logger;
import org.junit.Before;
import org.junit.Test;
import com.google.common.collect.Lists;
import com.thoughtworks.xstream.XStream;
/**
* This java example will demonstrate converting xml to java and back.
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/convert-xml-to-from-arraylist-object-xstream/'>Convert xml to arraylist using xstream</a>
*/
public class XMLToArrayListXstream {
private static final Logger logger = Logger
.getLogger(XMLToArrayListXstream.class);
class Funeral {
Date date;
String funeralHome;
String person;
public Funeral(Date date, String funeralHome, String person) {
super();
this.date = date;
this.funeralHome = funeralHome;
this.person = person;
}
public Date getDate() {
return date;
}
public String getFuneralHome() {
return funeralHome;
}
public String getPerson() {
return person;
}
@Override
public String toString() {
return "Funeral [date=" + date + ", funeralHome=" + funeralHome
+ ", person=" + person + "]";
}
}
private List<Funeral> funerals;
@Before
public void setUp() {
Funeral funeral1 = new Funeral(Date.from(Instant.now()),
"Nitardy Funeral Home", "Jack");
Funeral funeral2 = new Funeral(Date.from(Instant.now()),
"Dunlap Memorial Home", "Cindie");
Funeral funeral3 = new Funeral(Date.from(Instant.now()),
"Olsen Funeral Home", "Perry");
funerals = Lists.newArrayList(funeral1, funeral2, funeral3);
}
@Test
public void serialize_object_to_xml() {
XStream xStream = new XStream();
String funeralsAsXML = xStream.toXML(funerals);
logger.info(funeralsAsXML);
assertNotNull(funeralsAsXML);
}
@Test
public void deserialize_xml_to_arraylist() {
String rawXML = "<list> <com.levelup.java.xml.XMLToArrayListXstream_-Funeral> <date>2014-08-21 22:03:30.367 UTC</date> <funeralHome>Nitardy Funeral Home</funeralHome> <person>Jack</person> <outer-class> <funerals reference=\"../../..\"/> </outer-class> </com.levelup.java.xml.XMLToArrayListXstream_-Funeral> <com.levelup.java.xml.XMLToArrayListXstream_-Funeral> <date>2014-08-21 22:03:30.367 UTC</date> <funeralHome>Dunlap Memorial Home</funeralHome> <person>Cindie</person> <outer-class reference=\"../../com.levelup.java.xml.XMLToArrayListXstream_-Funeral/outer-class\"/> </com.levelup.java.xml.XMLToArrayListXstream_-Funeral> <com.levelup.java.xml.XMLToArrayListXstream_-Funeral> <date>2014-08-21 22:03:30.367 UTC</date> <funeralHome>Olsen Funeral Home</funeralHome> <person>Perry</person> <outer-class reference=\"../../com.levelup.java.xml.XMLToArrayListXstream_-Funeral/outer-class\"/> </com.levelup.java.xml.XMLToArrayListXstream_-Funeral> </list>";
XStream xStream = new XStream();
@SuppressWarnings("unchecked")
List<Funeral> funeral2 = (List<Funeral>) xStream.fromXML(rawXML);
logger.info(funeral2);
assertNotNull(funeral2.size() == 2);
}
}