I made changes that got rid of all the deprecated calls. I think I am using
the 1.5 interface correctly. However, I get a runtime error when I try to
deserialize into a class using a SpecificDataumReader. The problem starts
at line 62 of
AvroExample.java<https://github.com/wpm/AvroExample/blob/master/src/main/java/wpmcn/AvroExample.java#L62>.
The code looks like this:
DatumReader<Pair> reader = new SpecificDatumReader<Pair>(Pair.class);
BinaryDecoder decoder =
DecoderFactory.get().binaryDecoder(out.toByteArray(), null);
Pair result = reader.read(null, decoder);
System.out.printf("Left: %s, Right: %s\n", result.left, result.right);
Where Pair is an object I have SpecificRecord that I have in this project.
When I deserialize with reader.read() I get the following runtime error:
Exception in thread "main" java.lang.ClassCastException:
org.apache.avro.generic.GenericData$Record cannot be cast to wpmcn.Pair
at wpmcn.AvroExample.serializeSpecific(AvroExample.java:64)
at wpmcn.AvroExample.main(AvroExample.java:73)
When I step into the debugger I see that the GenericDatumReader.read()
function has type D as GenericData.
Presumably I'm calling something wrong but I can't figure out what.
On Fri, Sep 2, 2011 at 3:02 PM, Philip Zeyliger <[email protected]> wrote:
> EncoderFactory.get().binaryEncoder(...).
>
> I encourage you to file a JIRA and submit a patch to AVRO. Having example
> code in the code base seems like a win to me.
>
> -- Philip
>
>
> On Fri, Sep 2, 2011 at 2:41 PM, W.P. McNeill <[email protected]> wrote:
>
>> I'm new to Avro. Since I'm having trouble finding simple examples online
>> I'm writing one of my own that I'm putting on github.
>>
>> https://github.com/wpm/AvroExample
>>
>> Hopefully, this will be of help to people like me who are also having
>> trouble finding simple code examples.
>>
>> I want to get this compiling without of hitch in Maven. I had it running
>> with a 1.4 version of Avro, but when I changed that to 1.5, some of the code
>> no longer works. Specifically, BinaryEncoder can no longer be instantiated
>> directly because it is now an abstract class (AvroExample.java: line 33) and
>> DecoderFactory.defaultFactory is deprecated (AvroExample.java: line 41).
>>
>> How should I modify this code so that it works with the latest and
>> greatest version of Avro? I looked through the Release Notes, but the
>> answers weren't obvious.
>>
>> Thanks.
>>
>>
>