Are you still having trouble with this? I noticed that the code has changed and you are using MyPair instead of Pair. Was there a naming conflict bug with Avro's Pair.java?
-Scott On 9/2/11 3:46 PM, "W.P. McNeill" <[email protected]> wrote: > 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/AvroExampl > e.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. >>> >> >
