package de.persosim.simulator.perso.xstream;
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;
import de.persosim.simulator.utils.*;
/**
* This class is a converter which is responsible for converting all byte-arrays in hexstrings and back.
*
* @author jgoeke
*
*/
public class EncodedByteArrayConverter implements Converter {
public boolean canConvert(@SuppressWarnings("rawtypes") Class type) {
return type.isArray() && type.getComponentType().equals(byte.class);
}
public void marshal(Object value, HierarchicalStreamWriter writer,
MarshallingContext context) {
writer.setValue(HexString.encode((byte[])value));
}
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
String data = reader.getValue();
return HexString.toByteArray(data);
}
}