1 5 package com.thoughtworks.xstream.converters.enums; 6 7 import com.thoughtworks.xstream.converters.Converter; 8 import com.thoughtworks.xstream.converters.MarshallingContext; 9 import com.thoughtworks.xstream.converters.UnmarshallingContext; 10 import com.thoughtworks.xstream.io.HierarchicalStreamWriter; 11 import com.thoughtworks.xstream.io.HierarchicalStreamReader; 12 13 19 public class EnumConverter implements Converter { 20 21 public boolean canConvert(Class type) { 22 return type.isEnum() || Enum .class.isAssignableFrom(type); 23 } 24 25 public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) { 26 writer.setValue(((Enum ) source).name()); 27 } 28 29 public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { 30 Class type = context.getRequiredType(); 31 if (type.getSuperclass() != Enum .class) { 32 type = type.getSuperclass(); } 34 return Enum.valueOf(type, reader.getValue()); 35 } 36 37 } 38 | Popular Tags |