in java/core/src/main/java/org/bondlib/SimpleBinaryWriter.java [46:108]
public void writeFieldOmitted(
final BondDataType type, final int id, final Metadata metadata) throws IOException {
// Simple doesn't support omitting fields, so we need to explicitly write the default values
// for optional fields.
//
// Fields that are = nothing have no default, so it is an unrecoverable error to attempt to
// serialize such a field if it is actually set to nothing (e.g., a SomethingObject which is
// null).
if (metadata.default_value.nothing) {
throw new IllegalArgumentException("can't omit fields with default = nothing in SimpleBinary");
}
switch (type.value) {
case BondDataType.Values.BT_BOOL:
this.writeBool(SchemaHelper.getDefaultBoolFieldValue(metadata));
break;
case BondDataType.Values.BT_INT8:
this.writeInt8(SchemaHelper.getDefaultInt8FieldValue(metadata));
break;
case BondDataType.Values.BT_INT16:
this.writeInt16(SchemaHelper.getDefaultInt16FieldValue(metadata));
break;
case BondDataType.Values.BT_INT32:
this.writeInt32(SchemaHelper.getDefaultInt32FieldValue(metadata));
break;
case BondDataType.Values.BT_INT64:
this.writeInt64(SchemaHelper.getDefaultInt64FieldValue(metadata));
break;
case BondDataType.Values.BT_UINT8:
this.writeUInt8(SchemaHelper.getDefaultUInt8FieldValue(metadata));
break;
case BondDataType.Values.BT_UINT16:
this.writeUInt16(SchemaHelper.getDefaultUInt16FieldValue(metadata));
break;
case BondDataType.Values.BT_UINT32:
this.writeUInt32(SchemaHelper.getDefaultUInt32FieldValue(metadata));
break;
case BondDataType.Values.BT_UINT64:
this.writeUInt64(SchemaHelper.getDefaultUInt64FieldValue(metadata));
break;
case BondDataType.Values.BT_FLOAT:
this.writeFloat(SchemaHelper.getDefaultFloatFieldValue(metadata));
break;
case BondDataType.Values.BT_DOUBLE:
this.writeDouble(SchemaHelper.getDefaultDoubleFieldValue(metadata));
break;
case BondDataType.Values.BT_STRING:
this.writeString(SchemaHelper.getDefaultStringFieldValue(metadata));
break;
case BondDataType.Values.BT_WSTRING:
this.writeWString(SchemaHelper.getDefaultWStringFieldValue(metadata));
break;
case BondDataType.Values.BT_LIST:
case BondDataType.Values.BT_SET:
case BondDataType.Values.BT_MAP:
this.writeContainerBegin(0, type);
this.writeContainerEnd();
break;
default:
throw new IllegalArgumentException("Invalid bondType: " + type.toString());
}
}