public static void serializeBlobProperties(ByteBuffer outputBuffer, BlobProperties properties) {
    if (outputBuffer.remaining() < getBlobPropertiesSerDeSize(properties)) {
      throw new IllegalArgumentException("Output buffer does not have sufficient space to serialize blob properties");
    }
    outputBuffer.putShort(CURRENT_VERSION);
    outputBuffer.putLong(properties.getTimeToLiveInSeconds());
    outputBuffer.put(properties.isPrivate() ? (byte) 1 : (byte) 0);
    outputBuffer.putLong(properties.getCreationTimeInMs());
    outputBuffer.putLong(properties.getBlobSize());
    Utils.serializeNullableString(outputBuffer, properties.getContentType());
    Utils.serializeNullableString(outputBuffer, properties.getOwnerId());
    Utils.serializeNullableString(outputBuffer, properties.getServiceId());
    outputBuffer.putShort(properties.getAccountId());
    outputBuffer.putShort(properties.getContainerId());
    outputBuffer.put(properties.isEncrypted() ? (byte) 1 : (byte) 0);
    Utils.serializeNullableString(outputBuffer, properties.getContentEncoding());
    Utils.serializeNullableString(outputBuffer, properties.getFilename());
    if (CURRENT_VERSION == VERSION_5) {
      Utils.serializeNullableString(outputBuffer, properties.getReservedMetadataBlobId());
    }
  }
Serialize {@link BlobProperties} to buffer in the {@link #CURRENT_VERSION}
@param outputBuffer the {@link ByteBuffer} to which {@link BlobProperties} needs to be serialized
@param properties the {@link BlobProperties} that needs to be serialized
ambry-messageformat/src/main/java/com/github/ambry/messageformat/BlobPropertiesSerDe.java