Oh and I'm the one that did the pull request.  I changed the name of
the avro class to "MyPair" as I was confused when reading it with
avro's own "Pair" class.

What I usually do is put all of my avro schemas into a separate
project with nothing else in it.  Then I have all my other projects
depend on that one, in this case AvroExample.java would be a in a
separate project from MyPair.avsc.  This gets around weirdness with
mvn install vs Eclipse seeing the updated files, etc.

On Fri, Sep 2, 2011 at 5:20 PM, W.P. McNeill <[email protected]> wrote:
> Still having trouble with this.
> The name change was part of merging the pull request on github. My last
> email details where I'm at right now. The pull request code looks correct;
> I'm just trying to get it to build in my Maven environment.
>
> On Fri, Sep 2, 2011 at 5:19 PM, Scott Carey <[email protected]> wrote:
>>
>> 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.  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.
>>>
>>
>
>

Reply via email to