in hollow/src/main/java/com/netflix/hollow/core/read/HollowReadFieldUtils.java [224:264]
public static boolean fieldValueEquals(HollowObjectTypeDataAccess typeAccess, int ordinal, int fieldPosition, Object testObject) {
HollowObjectSchema schema = typeAccess.getSchema();
switch(schema.getFieldType(fieldPosition)) {
case BOOLEAN:
if(testObject instanceof Boolean)
return testObject.equals(typeAccess.readBoolean(ordinal, fieldPosition));
return testObject == null && typeAccess.readBoolean(ordinal, fieldPosition) == null;
case BYTES:
if(testObject instanceof byte[])
return Arrays.equals(typeAccess.readBytes(ordinal, fieldPosition), (byte[])testObject);
return testObject == null && typeAccess.readBytes(ordinal, fieldPosition) == null;
case STRING:
if(testObject instanceof String)
return testObject.equals(typeAccess.readString(ordinal, fieldPosition));
return testObject == null && typeAccess.readString(ordinal, fieldPosition) == null;
case DOUBLE:
if(testObject instanceof Double)
return testObject.equals(typeAccess.readDouble(ordinal, fieldPosition));
return testObject == null && !Double.isNaN(typeAccess.readDouble(ordinal, fieldPosition));
case FLOAT:
if(testObject instanceof Float)
return testObject.equals(typeAccess.readFloat(ordinal, fieldPosition));
return testObject == null && !Float.isNaN(typeAccess.readFloat(ordinal, fieldPosition));
case INT:
if(testObject instanceof Integer)
return testObject.equals(typeAccess.readInt(ordinal, fieldPosition));
return testObject == null && typeAccess.readInt(ordinal, fieldPosition) == Integer.MIN_VALUE;
case LONG:
if(testObject instanceof Long)
return testObject.equals(typeAccess.readLong(ordinal, fieldPosition));
return testObject == null && typeAccess.readLong(ordinal, fieldPosition) == Long.MIN_VALUE;
case REFERENCE:
if(testObject instanceof Integer)
return testObject.equals(typeAccess.readOrdinal(ordinal, fieldPosition));
return testObject == null && typeAccess.readOrdinal(ordinal, fieldPosition) < 0;
default:
}
throw new IllegalStateException("I don't know how to test equality for a " + schema.getFieldType(fieldPosition));
}