TypeConverter.java

package sprout.mvc.argument;

public final class TypeConverter {
    private TypeConverter() {}

    public static Object convert(String value, Class<?> targetType) {
        if (value == null) {
            if (targetType.isPrimitive()) {
                throw new IllegalArgumentException("Null value cannot be assigned to primitive type: " + targetType.getName());
            }
            return null;
        }

        if (targetType.equals(String.class)) {
            return value;
        } else if (targetType.equals(Long.class) || targetType.equals(long.class)) {
            return Long.parseLong(value);
        } else if (targetType.equals(Integer.class) || targetType.equals(int.class)) {
            return Integer.parseInt(value);
        } else if (targetType.equals(Boolean.class) || targetType.equals(boolean.class)) {
            return Boolean.parseBoolean(value);
        }
        throw new IllegalArgumentException("Cannot convert String value [" + value + "] to target class [" + targetType.getName() + "]");
    }
}