/**
* 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;
}
SimpleMarshallerMappingsFromAnnotationsLoader.java 文件源码
java
阅读 33
收藏 0
点赞 0
评论 0
项目:r01fb
作者:
评论列表
文章目录