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