/* * Created on Aug 8, 2004 */ package cyrille.xstream; import java.sql.Time; import java.text.ParseException; import java.util.Date; import com.thoughtworks.xstream.converters.ConversionException; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.basic.AbstractBasicConverter; import com.thoughtworks.xstream.converters.basic.ThreadSafeSimpleDateFormat; /** * @author <a href="mailto:cleclerc@pobox.com">Cyrille Le Clerc </a> */ public class SqlTimeConverter extends AbstractBasicConverter implements Converter { private static final int DATE_FORMATS_POOL_MAX_SIZE = 20; private static final int DATE_FORMATS_POOL_MIN_SIZE = 2; ThreadSafeSimpleDateFormat m_dateFormat; /** * */ public SqlTimeConverter(String pattern) { super(); this.m_dateFormat = new ThreadSafeSimpleDateFormat(pattern, DATE_FORMATS_POOL_MIN_SIZE, DATE_FORMATS_POOL_MAX_SIZE); } /** * @see com.thoughtworks.xstream.converters.basic.AbstractBasicConverter#canConvert(java.lang.Class) */ @Override public boolean canConvert(Class type) { return Time.class.equals(type); } /** * @see com.thoughtworks.xstream.converters.basic.AbstractBasicConverter#fromString(java.lang.String) */ @Override protected Object fromString(String str) { try { return this.m_dateFormat.parse(str); } catch (ParseException e) { throw new ConversionException("Exception converting '" + str + "': " + e.getMessage(), e); } } /** * @see com.thoughtworks.xstream.converters.basic.AbstractBasicConverter#toString(java.lang.Object) */ @Override protected String toString(Object obj) { Date date = (Date) obj; return this.m_dateFormat.format(date); } }