public void register(Converter<?> converter){ converters.put(converter.getJavaType(), converter); }
@Override @SuppressWarnings("unchecked") public <T> T fromString(String value, Class<T> requiredType) { if (requiredType.equals(String.class)) { return (T) value; } Converter<T> converter = (Converter<T>) classToConverter.get(requiredType); if (converter != null) { return converter.fromString(value); } else { throw new IllegalArgumentException("No conversion for " + requiredType.getName() + " available"); } }
@Override @SuppressWarnings("unchecked") public <T> String toString(T javaValue) { if (javaValue instanceof String) { return (String) javaValue; } Converter<T> converter = (Converter<T>) classToConverter.get(javaValue.getClass()); if (converter != null) { return converter.toString(javaValue); } else { throw new IllegalArgumentException("No conversion for " + javaValue.getClass().getName() + " available"); } }
private <T> void register(UID type, Converter<T> converter) { register(type, converter.getJavaType()); classToConverter.put(converter.getJavaType(), converter); Class<?> primitiveType = Primitives.unwrap(converter.getJavaType()); if (!primitiveType.equals(converter.getJavaType())) { register(type, primitiveType); classToConverter.put(primitiveType, converter); } }