in src/main/java/org/apache/commons/configuration2/convert/PropertyConverter.java [604:634]
static Number toNumber(final Object value, final Class<?> targetClass) throws ConversionException {
if (value instanceof Number) {
return (Number) value;
}
final String str = Objects.toString(value, null);
if (StringUtils.startsWithAny(str, HEX_PREFIX)) {
try {
return new BigInteger(str.substring(HEX_PREFIX.length()), HEX_RADIX);
} catch (final NumberFormatException nex) {
throw new ConversionException("Could not convert " + str + " to " + targetClass.getName() + "! Invalid hex number.", nex);
}
}
if (StringUtils.startsWithAny(str, BIN_PREFIX)) {
try {
return new BigInteger(str.substring(BIN_PREFIX.length()), BIN_RADIX);
} catch (final NumberFormatException nex) {
throw new ConversionException("Could not convert " + str + " to " + targetClass.getName() + "! Invalid binary number.", nex);
}
}
try {
final Constructor<?> constr = targetClass.getConstructor(CONSTR_ARGS);
return (Number) constr.newInstance(str);
} catch (final InvocationTargetException itex) {
throw new ConversionException("Could not convert " + str + " to " + targetClass.getName(), itex.getTargetException());
} catch (final Exception ex) {
// Treat all possible exceptions the same way
throw new ConversionException("Conversion error when trying to convert " + str + " to " + targetClass.getName(), ex);
}
}