validacion - Genere el esquema de Avro de cierto objeto de Java
validar solo numeros en java consola (2)
Apache Avro proporciona un formato de datos binarios compacto y rápido, y una estructura de datos rica para la serialización. Sin embargo, requiere que el usuario defina un esquema (en JSON) para el objeto que necesita ser serializado.
En algunos casos, esto no puede ser posible (por ejemplo: la clase de ese objeto Java tiene algunos miembros cuyos tipos son clases Java externas en bibliotecas externas). Por lo tanto, me pregunto si hay una herramienta que puede obtener la información del archivo .class del objeto y generar el esquema Avro para ese objeto (como Gson usa la información .class del objeto para convertir cierto objeto en una cadena JSON).
Aquí es cómo generar un esquema de Avro a partir de la definición de POJO
ObjectMapper mapper = new ObjectMapper(new AvroFactory());
AvroSchemaGenerator gen = new AvroSchemaGenerator();
mapper.acceptJsonFormatVisitor(RootType.class, gen);
AvroSchema schemaWrapper = gen.getGeneratedSchema();
org.apache.avro.Schema avroSchema = schemaWrapper.getAvroSchema();
String asJson = avroSchema.toString(true);
Echa un vistazo a la API de reflexión de Java .
Obtener un esquema se ve como:
Schema schema = ReflectData.get().getSchema(T);
Vea el ejemplo de Doug en otra pregunta para un ejemplo práctico .
Los créditos de esta respuesta pertenecen a Sean Busby.