Guys? Any opinions on this idea?
On 18 Dec 2015 14:01, "Niels Basjes" <[email protected]> wrote:
> Hi,
>
> I'm working on a project where I'm putting Avro records into Kafka and at
> the other end pull them out again.
> For that purpose I wrote two methods 'toBytes' and 'fromBytes' in a
> separate class (see below).
>
> I see this as the type of problem many developers run into.
> Would it be a good idea to generate methods like these into the generated
> Java code?
>
> This would make it possible to serialize and deserialize singles records
> like this:
>
> byte [] someBytes = measurement.toBytes();
> Measurement m = Measurement.fromBytes(someBytes);
>
> Niels Basjes
>
> P.S. possibly not name it toBytes but getBytes (similar to what the String
> class has)
>
> public final class MeasurementSerializer {
> private MeasurementSerializer() {
> }
>
> public static Measurement fromBytes(byte[] bytes) throws IOException {
> try {
> DatumReader<Measurement> reader = new
> SpecificDatumReader<>(Measurement.getClassSchema());
> Decoder decoder = DecoderFactory.get().binaryDecoder(bytes, null);
> return reader.read(null, decoder);
> } catch (RuntimeException rex) {
> throw new IOException(rex.getMessage());
> }
> }
>
> public static byte[] toBytes(Measurement measurement) throws IOException {
> try {
> ByteArrayOutputStream out = new ByteArrayOutputStream();
> Encoder encoder = EncoderFactory.get().binaryEncoder(out, null);
> SpecificDatumWriter<Measurement> writer = new
> SpecificDatumWriter<>(Measurement.class);
> writer.write(measurement, encoder);
> encoder.flush();
> out.close();
> return out.toByteArray();
> } catch (RuntimeException rex) {
> throw new IOException(rex.getMessage());
> }
> }
> }
>
>
>
> --
> Best regards / Met vriendelijke groeten,
>
> Niels Basjes
>