public static boolean fieldValueEquals()

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));
    }