SimpleMarshallerMappingsFromAnnotationsLoader.java 文件源码

java
阅读 33 收藏 0 点赞 0 评论 0

项目:r01fb 作者:
/**
 * Obtiene la descripci�n del tipo de un field en un formato normalizado a partir de ciertos datos de la clase, el field, etc
 * @param type el tipo que contiene el field
 * @param field el field
 * @param actualFieldType el tipo de dato actual del field (resolviendo gen�ricos, etc)
 * @return
 */
private static String _fieldTypeStandardDesc(final Class<?> type,
                                             final Field field,final Class<?> actualFieldType) {
    String dataTypeDesc = null;
    if (actualFieldType != Object.class && ReflectionUtils.isTypeDef(actualFieldType)) {
        // Definici�n de clase java
        dataTypeDesc = Class.class.getCanonicalName();  // "java.lang.Class";

    } else if (ReflectionUtils.isImplementing(actualFieldType,LanguageTexts.class) && !actualFieldType.equals(LanguageTextsI18NBundleBacked.class)) {
        //"Map:(r01f.locale.Language,java.lang.String)";
        dataTypeDesc = "Map:" + actualFieldType.getName() + "(" + Language.class.getCanonicalName() + "," + String.class.getCanonicalName() + ")";  

    } else if (CollectionUtils.isMap(actualFieldType)) {
        // Mapa
        Class<?> keyAndValueComponentTypes[] = _mapFieldKeyValueComponentTypes(type,field);
        if (keyAndValueComponentTypes != null && keyAndValueComponentTypes.length == 2) {
            String keyType = keyAndValueComponentTypes[0] != null ? keyAndValueComponentTypes[0].getName() 
                                                                  : Object.class.getCanonicalName(); //"java.lang.Object";
            String valueType = keyAndValueComponentTypes[1] != null ? keyAndValueComponentTypes[1].getName() 
                                                                    : Object.class.getCanonicalName(); //"java.lang.Object";
            dataTypeDesc = "Map:" + actualFieldType.getName() + "(" + keyType + "," + valueType + ")";
        } else {
            dataTypeDesc = "Map:" + actualFieldType.getName();
        }

    } else if (CollectionUtils.isCollection(actualFieldType)) {
        // Colecci�n
        Class<?> componentType = _collectionFieldComponentType(type,field);
        if (componentType != null) {
            dataTypeDesc = "Collection:" + actualFieldType.getName() + "(" + componentType.getName() + ")";
        } else {
            dataTypeDesc = "Collection:" + actualFieldType.getName();
        }

    } else if (CollectionUtils.isArray(actualFieldType)) {
        // Array
        dataTypeDesc = _collectionFieldComponentType(type,field).getName() + "[]";

    } else if (actualFieldType.isEnum() || actualFieldType.getAnnotation(XmlEnum.class) != null) {
        // Enumeraci�n
        dataTypeDesc = "Enum(" + actualFieldType.getName() + ")";

    } else if (!actualFieldType.isPrimitive() && !ReflectionUtils.isInstanciable(actualFieldType)) {
        // [C] Es un interfaz
        dataTypeDesc = field.getType().getName();

    } else {
        // [D] Tipo NO generico (el caso m�s normal)
        dataTypeDesc = actualFieldType.getName();
    }
    return dataTypeDesc;
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号