Hi,
If you don't mind the overhead you can make the conversion through the avro
binary data. So something like this should work (assuming both records are
using the same schema)
GenericRecord myRecord = ...
GenericDatumWriter<GenericRecord> writer = new
GenericDatumWriter<GenericRecord>(MyCustomRecord.getClassSchema());
ByteArrayOutputStream out = new ByteArrayOutputStream();
Encoder encoder = EncoderFactory.get().binaryEncoder(out, null);
writer.write(myRecord, encoder);
encoder.flush();
byte[] avroData = out.toByteArray();
out.close();
SpecificDatumReader<MyCustomRecord> reader = new
SpecificDatumReader<MyCustomRecord>(MyCustomRecord.class);
Decoder decoder = DecoderFactory.get().binaryDecoder(avroData, null);
MyCustomRecord myCustomRecord = reader.read(null, decoder);
-Mika
On Feb 6, 2014, at 12:59 AM, Roger Hoover <[email protected]> wrote:
> Hi Christophe,
>
> Thanks for your reply. When you say that we could write a generic conversion
> function, do you mean we can write one that works for all schemas? That
> would be great!
>
> I'd like an API something like this:
>
> MyCustomRecord record = MyCustomRecord.newBuilder(GenericRecord
> record).build()
>
> Thanks,
>
> Roger
>
>
> On Wed, Feb 5, 2014 at 10:59 AM, Christophe Taton
> <[email protected]> wrote:
> Hi Roger,
> With the change proposed in https://issues.apache.org/jira/browse/AVRO-1443,
> you would be able to create a specific record using a generic builder API.
> That means we could write a generic conversion function that creates specific
> records.
> Would that work for you?
> C.
>
>
> On Wed, Feb 5, 2014 at 10:23 AM, Roger Hoover <[email protected]> wrote:
> Hi,
>
> I'm working with an existing API that hands me a GenericRecord. Is there an
> easy way I can covert it into a SpecificRecord. Really I want to get it into
> the code-generated object.
>
> Thanks,
>
> Roger
>
>
>
>