in src/main/java/org/apache/commons/beanutils2/converters/AbstractConverter.java [143:188]
public <R> R convert(final Class<R> type, Object value) {
if (type == null) {
return convertToDefaultType(value);
}
Class<?> sourceType = value == null ? null : value.getClass();
final Class<R> targetType = ConvertUtils.primitiveToWrapper(type);
if (log().isDebugEnabled()) {
log().debug(
"Converting" + (value == null ? "" : " '" + toString(sourceType) + "'") + " value '" + value + "' to type '" + toString(targetType) + "'");
}
value = convertArray(value);
// Missing Value
if (value == null) {
return handleMissing(targetType);
}
sourceType = value.getClass();
try {
// Convert --> String
if (targetType.equals(String.class)) {
return targetType.cast(convertToString(value));
// No conversion necessary
}
if (targetType.equals(sourceType)) {
if (log().isDebugEnabled()) {
log().debug(" No conversion required, value is already a " + toString(targetType));
}
return targetType.cast(value);
// Convert --> Type
}
final Object result = convertToType(targetType, value);
if (log().isDebugEnabled()) {
log().debug(" Converted to " + toString(targetType) + " value '" + result + "'");
}
return targetType.cast(result);
} catch (final Throwable t) {
return handleError(targetType, value, t);
}
}