private void writeNull()

in timebase-kafka-connector/src/main/java/deltix/kafka/connect/RawMessageSerializer.java [118:168]


    private void writeNull(UnboundEncoder encoder, DataType dataType) {
        if (dataType.isNullable()) {
            encoder.writeNull();
        }
        else if (dataType instanceof VarcharDataType) {
            encoder.writeString("");
        }
        else if (dataType instanceof BooleanDataType) {
            encoder.writeBoolean(false);
        }
        else if (dataType instanceof IntegerDataType) {
            if (((IntegerDataType) dataType).getNativeTypeSize() > 4)
                encoder.writeLong(0);
            else
                encoder.writeInt(0);
        }
        else if (dataType instanceof FloatDataType) {
            if (((FloatDataType) dataType).isFloat())
                encoder.writeFloat(0);
            else
                encoder.writeDouble(0);
        }
        else if (dataType instanceof BinaryDataType) {
            encoder.writeBinary(new byte[] { 0 }, 0, 1);
        }
        else if (dataType instanceof ArrayDataType) {
            encoder.setArrayLength(0);
        }
        else if (dataType instanceof TimeOfDayDataType) {
            encoder.writeInt(0);
        }
        else if (dataType instanceof DateTimeDataType) {
            encoder.writeLong(0);
        }
        else if (dataType instanceof ClassDataType) {
            RecordClassDescriptor fieldDescriptor = ((ClassDataType) dataType).getFixedDescriptor();
            UnboundEncoder fieldEncoder = encoder.getFieldEncoder(fieldDescriptor);
            for (DataField dataField : fieldDescriptor.getFields()) {
                if (!fieldEncoder.nextField()) {
                    throw new RuntimeException("Encoder does not match descriptor at field " + dataField.getName());
                }
                writeNull(fieldEncoder, dataField.getType());
            }
        }
        else if (dataType instanceof CharDataType) {
            encoder.writeChar(' ');
        }
        else { //we do not create EnumDataType, QueryDataType
            throw new IllegalArgumentException("Unsupported data type: " + dataType);
        }
    }