package de.codecentric.jenkins.dashboard.persistence.converter; import java.util.logging.Level; import java.util.logging.Logger; import org.joda.time.DateTime; 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; /** * @author Andreas Houben */ public class DateTimeConverter implements Converter { private final static Logger LOGGER = Logger.getLogger(DateTimeConverter.class.getName()); @Override public void marshal(Object o, HierarchicalStreamWriter writer, MarshallingContext mc) { DateTime dateTime = (DateTime) o; writer.setValue(dateTime.toString()); } @Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext uc) { DateTime dateTime = DateTime.now(); try { dateTime = DateTime.parse(reader.getValue()); } catch (IllegalArgumentException e) { LOGGER.log(Level.SEVERE, "Could not parse DateTime value {0}. Returning DateTime.now().", reader.getValue()); } return dateTime; } @Override public boolean canConvert(@SuppressWarnings("rawtypes") Class clazz) { return DateTime.class.isAssignableFrom(clazz); } }