in hollow/src/main/java/com/netflix/hollow/core/write/objectmapper/HollowObjectTypeMapper.java [781:831]
private Object parseBoxedWrapper(FlatRecordTraversalObjectNode record) {
switch (fieldType) {
case BOOLEAN:
return record.getFieldValueBooleanBoxed(fieldName);
case INT:
return record.getFieldValueIntBoxed(fieldName);
case SHORT:
int shortValue = record.getFieldValueInt(fieldName);
if (shortValue == Integer.MIN_VALUE) {
return null;
}
return Short.valueOf((short) shortValue);
case BYTE:
int byteValue = record.getFieldValueInt(fieldName);
if (byteValue == Integer.MIN_VALUE) {
return null;
}
return Byte.valueOf((byte) byteValue);
case CHAR:
int charValue = record.getFieldValueInt(fieldName);
if (charValue == Integer.MIN_VALUE) {
return null;
}
return Character.valueOf((char) charValue);
case LONG:
return record.getFieldValueLongBoxed(fieldName);
case FLOAT:
return record.getFieldValueFloatBoxed(fieldName);
case DOUBLE:
return record.getFieldValueDoubleBoxed(fieldName);
case STRING:
return record.getFieldValueString(fieldName);
case BYTES:
return record.getFieldValueBytes(fieldName);
case ENUM_NAME:
String enumName = record.getFieldValueString(fieldName);
if (enumName == null) {
return null;
}
return Enum.valueOf((Class<Enum>) clazz, enumName);
case DATE_TIME: {
long dateValue = record.getFieldValueLong(fieldName);
if (dateValue == Long.MIN_VALUE) {
return null;
}
return new Date(dateValue);
}
default:
throw new IllegalArgumentException("Unexpected field type " + fieldType + " for field " + fieldName);
}
}