/*
* Copyright (C) 2005 Joe Walnes.
* Copyright (C) 2006, 2007 XStream Committers.
* All rights reserved.
*
* The software in this package is published under the terms of the BSD
* style license a copy of which has been included with this distribution in
* the LICENSE.txt file.
*
* Created on 10. April 2005 by Mauro Talevi
*/
package com.thoughtworks.xstream.core;
import com.thoughtworks.acceptance.AbstractAcceptanceTest;
import java.util.ArrayList;
import java.util.List;
public class TreeUnmarshallerTest extends AbstractAcceptanceTest {
protected void setUp() throws Exception {
super.setUp();
}
public void testUnmarshallingOfAliasedInterfaces() {
xstream.alias("addressBookInfo", AddressBookInfo.class, AddressBook.class);
xstream.alias("addressInfo", AddressInfo.class, Address.class);
AddressBookInfo initialObject = new AddressBook();
String marshalledXML = xstream.toXML(initialObject);
AddressBookInfo unmarshalledObject = (AddressBookInfo) xstream.fromXML(marshalledXML);
assertEquals(marshalledXML, xstream.toXML(unmarshalledObject));
}
public interface AddressBookInfo {
public List getAddresses();
public void setAddresses(List address);
}
public static class AddressBook implements AddressBookInfo {
private List addresses;
public AddressBook() {
addresses = new ArrayList();
AddressInfo addr = new Address("Home", "Home");
AddressInfo addr1 = new Address("Office", "Office");
addresses.add(addr);
addresses.add(addr1);
}
public List getAddresses() {
return addresses;
}
public void setAddresses(List addresses) {
this.addresses = addresses;
}
}
public interface AddressInfo {
public String getAddr1();
public String getAddr2();
public void setAddr1(String addr1);
public void setAddr2(String addr2);
}
public static class Address implements AddressInfo {
private String addr1 = "addr1";
private String addr2 = "addr2";
private Address() {
}
public Address(String addr1, String addr2) {
this.addr1 = addr1;
this.addr2 = addr2;
}
public String getAddr1() {
return addr1;
}
public String getAddr2() {
return addr2;
}
public void setAddr1(String addr1) {
this.addr1 = addr1;
}
public void setAddr2(String addr2) {
this.addr2 = addr2;
}
}
}