package org.reunionemu.xml;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import org.junit.Test;
import org.reunionemu.jreunion.dao.QuestList;
import org.reunionemu.jreunion.dao.QuestListImpl;
import org.reunionemu.jreunion.model.Quest;
import org.reunionemu.jreunion.model.QuestImpl;
import org.reunionemu.jreunion.model.quests.rewards.ExperienceReward;
import org.reunionemu.jreunion.model.quests.rewards.ExperienceRewardImpl;
import org.reunionemu.jreunion.model.quests.rewards.ItemReward;
import org.reunionemu.jreunion.model.quests.rewards.ItemRewardImpl;
import org.reunionemu.jreunion.model.quests.rewards.LimeReward;
import org.reunionemu.jreunion.model.quests.rewards.LimeRewardImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
public class JaxbMarshalTest {
@Autowired
ApplicationContext context;
public QuestListImpl createQuestList(){
QuestListImpl list = new QuestListImpl();
Quest quest = new QuestImpl(){
{
id = 1;
name = "test quest";
description = "this is a test quest";
}
};
{
ExperienceReward reward = new ExperienceRewardImpl(){
{
experience = 10;
}
};
quest.getRewards().add(reward);
}
{
LimeReward reward = new LimeRewardImpl(){
{
lime = 10;
}
};
quest.getRewards().add(reward);
}
{
ItemReward reward = new ItemRewardImpl(){
{
amount = 10;
type = 11;
}
};
quest.getRewards().add(reward);
}
{
ItemReward reward = new ItemRewardImpl(){
{
type = 12;
}
};
quest.getRewards().add(reward);
}
list.add(quest);
return list;
}
@Test
public void test() throws Exception {
QuestListImpl list = createQuestList();
JAXBContext context = JAXBContext.newInstance(QuestListImpl.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
//marshaller.setProperty(Marshaller, true);
Unmarshaller unmarshaller = context.createUnmarshaller();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
marshaller.marshal(list, baos);
byte [] xml = baos.toByteArray();
System.out.println(new String(xml));
QuestList quests = (QuestList)unmarshaller.unmarshal(new ByteArrayInputStream(xml));
for(Quest quest: quests){
System.out.println(quest.getName());
}
}
}