in hollow/src/main/java/com/netflix/hollow/core/write/objectmapper/HollowObjectTypeMapper.java [713:779]
private Object parseBoxedWrapper(GenericHollowObject record) {
switch (fieldType) {
case BOOLEAN:
return Boolean.valueOf(record.getBoolean(fieldName));
case INT:
int intValue = record.getInt(fieldName);
if (intValue == Integer.MIN_VALUE) {
return null;
}
return Integer.valueOf(intValue);
case SHORT:
int shortValue = record.getInt(fieldName);
if (shortValue == Integer.MIN_VALUE) {
return null;
}
return Short.valueOf((short) shortValue);
case BYTE:
int byteValue = record.getInt(fieldName);
if (byteValue == Integer.MIN_VALUE) {
return null;
}
return Byte.valueOf((byte) byteValue);
case CHAR:
int charValue = record.getInt(fieldName);
if (charValue == Integer.MIN_VALUE) {
return null;
}
return Character.valueOf((char) charValue);
case LONG:
long longValue = record.getLong(fieldName);
if (longValue == Long.MIN_VALUE) {
return null;
}
return Long.valueOf(longValue);
case FLOAT:
float floatValue = record.getFloat(fieldName);
if (Float.isNaN(floatValue)) {
return null;
}
return Float.valueOf(floatValue);
case DOUBLE:
double doubleValue = record.getDouble(fieldName);
if (Double.isNaN(doubleValue)) {
return null;
}
return Double.valueOf(doubleValue);
case STRING:
return record.getString(fieldName);
case BYTES:
return record.getBytes(fieldName);
case ENUM_NAME:
String enumName = record.getString(fieldName);
if (enumName == null) {
return null;
}
return Enum.valueOf((Class<Enum>) clazz, enumName);
case DATE_TIME: {
long dateValue = record.getLong(fieldName);
if (dateValue == Long.MIN_VALUE) {
return null;
}
return new Date(dateValue);
}
default:
throw new IllegalArgumentException("Unexpected field type " + fieldType + " for field " + fieldName);
}
}