//**************************************************
//
// Copyright 2013 SOASTA, Inc.
// All rights reserved.
// Proprietary and confidential.
//
// File: MessageConverter.java
// Contains the MessageConverter class.
//
// This file contains the MessageConverter class.
//
//**************************************************
package com.soasta.jenkins;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
public class MessageConverter implements Converter
{
// Can only convert Message objects
public boolean canConvert(Class clazz)
{
return clazz.equals(Message.class);
}
// Take the Message object and change it to a Message-XML
public void marshal(Object value, HierarchicalStreamWriter writer,
MarshallingContext context)
{
Message message = (Message) value;
writer.startNode("message");
writer.startNode("messageType");
writer.setValue(message.getType());
writer.endNode();
writer.startNode("messageClipName");
writer.setValue(message.getClipName());
writer.endNode();
writer.startNode("messageContent");
writer.setValue(message.getContent());
writer.endNode();
writer.endNode();
}
// Convert the XML to a Message object.
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context)
{
Message message = new Message();
while (reader.hasMoreChildren())
{
reader.moveDown();
String nodeName = reader.getNodeName();
if ("messageType".equals(nodeName))
{
message.setType(reader.getValue());
}
else if ("messageClipName".equals(nodeName))
{
message.setClipName(reader.getValue());
}
else if ("messageContent".equals(nodeName))
{
message.setContent(reader.getValue());
}
reader.moveUp();
}
return message;
}
}