in parquet/src/main/scala/magnolify/parquet/ParquetField.scala [159:185]
override def newConverter(writerSchema: Type): TypeConverter[T] =
new GroupConverter with TypeConverter.Buffered[T] {
private val fieldConverters =
caseClass.parameters.map(_.typeclass.newConverter(writerSchema))
override def isPrimitive: Boolean = false
override def getConverter(fieldIndex: Int): Converter = fieldConverters(fieldIndex)
override def start(): Unit = ()
override def end(): Unit = {
val value = caseClass.construct { p =>
try {
fieldConverters(p.index).get
} catch {
case e: IllegalArgumentException =>
val field = s"${caseClass.typeName.full}#${p.label}"
throw new ParquetDecodingException(
s"Failed to decode $field: ${e.getMessage}",
e
)
}
}
addValue(value)
}
}