override def toAvroDefault()

in elitzur-avro/src/main/scala/com/spotify/elitzur/converters/avro/AvroConverter.scala [340:374]


  override def toAvroDefault(v: T, defaultGenericContainer: GenericContainer): Any = {
    val ps = caseClass.parameters
    var i = 0
    val builder = new GenericRecordBuilder(
      AvroElitzurConversionUtils
        .recordToGenericData(defaultGenericContainer.asInstanceOf[GenericRecord]))

    while (i < ps.length) {
      val p = ps(i)
      val deref = p.dereference(v)

      val fieldName = if (defaultGenericContainer.getSchema.getField(p.label) == null) {
        SharedUtils.camelToSnake(p.label)
      } else {
        p.label
      }

      val field = defaultGenericContainer.getSchema.getField(fieldName)
      val containerAsRecord = defaultGenericContainer.asInstanceOf[GenericRecord]

      val fieldValue = if (AvroElitzurConversionUtils.isAvroRecordType(field.schema())) {
        p.typeclass
          .toAvroDefault(deref, containerAsRecord.get(fieldName).asInstanceOf[GenericRecord])
      } else if (AvroElitzurConversionUtils.isAvroArrayType(field.schema())) {
        p.typeclass
          .toAvroDefault(deref, containerAsRecord.get(fieldName).asInstanceOf[GenericArray[_]])
      } else {
        p.typeclass.toAvroDefault(deref, defaultGenericContainer)
      }

      builder.set(fieldName, fieldValue)
      i += 1
    }
    builder.build()
  }