/** * Tells whether a data type is a primitive an "ext" primitive (see * isExtPrimitive) or a String. * * @param clazz * The class of the type to query. * @return True if it's a primitive an "ext" primitive or a String, false * otherwise. */ public static boolean isBasicDataType(Class<?> clazz) { return (clazz.isPrimitive() || isExtPrimitive(clazz) || clazz == String.class); }
protected boolean serializedTypeIsExpectedType( Class<?> expectedType, Class<?> childType) { if (childType == expectedType) return true; // Maybe we have a (Integer != int) problem? if (expectedType.isPrimitive()) return ReflectionUtils.mapPrimitiveToUcType(expectedType) == childType; return false; }
@Override public String nameForType(Class<?> n) { String typeAlias = (String) typeToName.get(n); if (typeAlias != null) return typeAlias; if (n.isArray()) { ArrayInfo dim = ReflectionUtils.arrayDimension(n); String elementTypeName = nameForType(dim.elementClass); return elementTypeName + StringTools.strrep("[]", dim.dim); } if (ReflectionUtils.isBasicDataType(n)) return ReflectionUtils.abbreviateBasicDataTypeName(n); return nameForUnmappedType(n); }
@Override public Class<?> typeForName(String name) { if (name.isEmpty()) return typeForInvalidName(name); Class<?> type = (Class<?>) typeToName.getKey(name); if (type != null) return type; int nameEnd = name.indexOf("[]"); if (nameEnd > 0) { int i; for (i = nameEnd + 2; i < name.length(); i += 2) { if (name.indexOf("[]", i) != i) return typeForInvalidName(name); } return ReflectionUtils.arrayClassFor( typeForName(name.substring(0, nameEnd)), (i - nameEnd) / 2); } if (ReflectionUtils.isBasicDataType(name)) return ReflectionUtils.getTypeFromAbbreviation(name); return typeForUnmappedName(name); }