public static MessageLite preSerialize(VehicleMessage message)
throws SerializationException {
if(message.hasExtras()) {
throw new SerializationException("Messages with extras cannot be " +
"serialized to the binary format - use JSON instead");
}
BinaryMessages.VehicleMessage.Builder builder =
BinaryMessages.VehicleMessage.newBuilder();
if(message instanceof CanMessage) {
serializeCanMessage(builder, (CanMessage) message);
} else if(message instanceof DiagnosticResponse) {
serializeDiagnosticResponse(builder, (DiagnosticResponse) message);
} else if(message instanceof Command) {
serializeCommand(builder, (Command) message);
} else if(message instanceof CommandResponse) {
serializeCommandResponse(builder, (CommandResponse) message);
} else if(message instanceof EventedSimpleVehicleMessage) {
serializeEventedSimpleVehicleMessage(builder,
(EventedSimpleVehicleMessage) message);
} else if(message instanceof SimpleVehicleMessage) {
serializeSimpleVehicleMessage(builder, (SimpleVehicleMessage) message);
} else if(message instanceof NamedVehicleMessage) {
serializeNamedVehicleMessage(builder, (NamedVehicleMessage) message);
} else {
serializeGenericVehicleMessage(builder, message);
}
return builder.build();
}