package joist.converter; import java.util.List; import joist.util.Copy; public class DefaultConverters { public static Converter<Object, String> objectToString = new AbstractOneWayConverter<Object, String>() { public String convertOneToTwo(Object value, Class<? extends String> toType) { return value == null ? null : value.toString(); } }; public static Converter<String, Integer> stringToInteger = new AbstractOneWayConverter<String, Integer>() { public Integer convertOneToTwo(String value, Class<? extends Integer> toType) { try { return new Integer(value); } catch (NumberFormatException nfe) { return null; } } }; // This is kind of different--instead of being a simple converter, this tries to just handle all of the // default Boolean cases. Makes for less converters that are more complex. We'll see how this goes. public static Converter<Boolean, Object> booleanToObject = new AbstractConverter<Boolean, Object>() { public Object convertOneToTwo(Boolean value, Class<? extends Object> toType) { if (String.class == toType) { return value.toString(); } else { throw new UnsupportedConversionException(value, toType); } } public Boolean convertTwoToOne(Object value, Class<? extends Boolean> toType) { if (value instanceof String) { return Boolean.valueOf((String) value); } else { return Boolean.FALSE; } } }; public static List<Converter<?, ?>> all = Copy.list(new Converter<?, ?>[] { // DefaultConverters.objectToString, DefaultConverters.stringToInteger, DefaultConverters.booleanToObject }); }