public R convert()

in src/main/java/org/apache/commons/beanutils2/converters/AbstractConverter.java [159:207]


    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);
        }
    }