scala schema case-class avro

¿Puedo obtener una definición de clase de caso Scala a partir de una definición de esquema Avro?



schema case-class (2)

He estado pirateando un pequeño proyecto llamado Scalavro para ir a la inversa (tipos Scala a esquemas Avro). También te da I / O binario directo.

Ejemplo simple:

package com.gensler.scalavro.tests import com.gensler.scalavro.types.AvroType case class Person(name: String, age: Int) val personAvroType = AvroType[Person] personAvroType.schema

cuyos rendimientos:

{ "name": "Person", "type": "record", "fields": [ {"name": "name", "type": "string"}, {"name": "age", "type": "int"} ], "namespace": "com.gensler.scalavro.tests" }

Hay muchos más ejemplos en el sitio del proyecto (vinculado arriba) y en las especificaciones más importantes.

Tengo planes para alojar los binarios en Sonatype OSS en un futuro próximo, pero por ahora puede extraer la fuente de github y sbt publish-local si desea probarlo.

Actualizar:
Scalavro ya está disponible en Maven Central.

Para facilitar el trabajo con Avro en Scala, me gustaría definir una clase de caso basada en el esquema almacenado con un archivo .avro. Podria intentar:

  1. Escribiendo una definición de clase de caso .scala a mano.
  2. Escribir cadenas en un archivo .scala mediante programación.
  3. Simule la definición de la clase de caso con una biblioteca de código de bytes como el ASM de ObjectWeb
  4. Trucos específicos del compilador?
  5. ¿Modificar una definición clasificada de caso existente en tiempo de ejecución?

Gracias, cualquier consejo es apreciado. -Julian